Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   амперсанды в javascript (https://javascript.ru/forum/xhtml-html-css/4178-ampersandy-v-javascript.html)

uncher4 30.06.2009 14:46

амперсанды в javascript
 
Валидатор ругается на & в документе и требует их заменить на &
Беда в том, что ссылки, которые формируются с помощью javascript не работают.
Т.е. например:
var url = "?v1=1&v2=2&v3=3"         // работает, но не проходит валидацию
var url = "?v1=1&v2=2&v3=3" // проходит валидацию, но не работает

Какой может быть выход?

Kolyaj 30.06.2009 15:01

С какого перепуга валидатор валидирует строки в JavaScript?

uncher4 30.06.2009 15:11

Незнаю, у меня javascript находится в одном файле с xhtml документом.

Kolyaj 30.06.2009 15:23

И что? В строках может быть что угодно, в том числе и амперсанды. Скорее всего, вы просто неправильно включили JavaScript в текст страницы.

uncher4 30.06.2009 15:24

Вот простой пример:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251"/>
<title>Тест</title>
</head>
<body>
<script type="text/javascript"> 
var link = '<a href="?v1=1&v2=2&v3=3">link</a>'
document.write(link)
</script>
</body>
</html>

Как это код привести в соответствиие с XHTML 1.0 ?

Riim 30.06.2009 15:27

Комментарии добавить надо:
<script type="text/javascript">
// <!--
window.onload = function() {};
// -->
	</script>

uncher4 30.06.2009 15:35

Цитата:

Комментарии добавить надо
Спасибо. Теперь всё в порядке.

Леонид Евстигнеев 07.07.2009 13:59

Цитата:

Сообщение от Иван Сагалаев
Содержимое элементов <script> и <style> нельзя оставлять в том же виде, что и в HTML. Потому что любой значок ">" тут же все сломает. Если его экранировать через "&gt;" или заключать в блоки CDATA, то тогда сломаются HTML'ные браузеры, которые таких страстей не ведают и парсят текст, предполагая, что он не экранирован. Кроме того, в XHTML браузер не обязан вообще парсить содержимое комментариев, а скрипты, как известно, часто так экранируются по историческим соображениям.

В итоге, чтобы удовлетворить и XHTML, и HTML, вам придется либо использовать такую вот конструкцию, учитывающую все синтаксисы:

<script>
<!--//--><![CDATA[//><!--
   ...
//--><!]]>
</script>

Либо выносить скрипты и стили во внешние файлы.

Более простой вариант
//<![CDATA[
  Тут можно использовать знаки больше > и меньше <.
//]]>


Часовой пояс GMT +3, время: 17:42.