Двойной дефис в скрипте делает Firefox странным образом - PullRequest
1 голос
/ 05 декабря 2009
<!-- <script type="text/javascript">/*<![CDATA[*/  c-- ;//]]></script> -->

Когда у меня есть строка выше в разделе простой HTML-страницы, Firefox 3.5.5 отображает конечный символ -> как текст. Если я поменяю c-- на c- это не так. Есть идеи, что здесь происходит? Я получаю артефакт на своих страницах с этим из-за очень большого скрипта, который хрустел. Я могу изменить выражение на c- = 1 и избежать проблемы на данный момент, но .... Я хотел бы знать, какой бит / байт кусает мой $$.

Ответы [ 3 ]

8 голосов
/ 05 декабря 2009

Это связано с тем, что Firefox строго использует комментарии SGML (на которых основан HTML). Это произойдет только тогда, когда документ загружен в стандартном режиме (т. Е. Существует DOCTYPE).

Первый <! начинает комментарий. Первый -- входит в раздел, в котором допускаются символы >. Второй -- (в вашем скрипте) покидает раздел, в котором разрешено > символов. > в конце </script> затем завершает комментарий. Поэтому следующий --> больше не является частью комментария и отображается как текст.

См. http://www.howtocreate.co.uk/SGMLComments.html для всестороннего руководства по проблеме.

Стоит также отметить, что в спецификации HTML 4 говорится, что «авторам следует избегать помещения двух или более соседних дефисов внутри комментариев», а в спецификации HTML 5 говорится, что комментарии не должны «содержать» два последовательных символа U + 002D HYPHEN-MINUS (-) '.

Решение, как вы обнаружили, состоит в том, чтобы не включать -- в середину комментария.

1 голос
/ 05 декабря 2009

Технически, вы не можете иметь двойной дефис в комментарии в HTML (или XML). Таким образом, даже если браузеры «разрешают», если они недействительны и должны завершить работу HTML-валидатора.

См. Раздел комментариев спецификации HTML 4

0 голосов
/ 05 декабря 2009

Я не могу повторить это. Не отображается в 3.0.1.

...