Вопрос

У меня есть этот кусок кода:

<script language="javascript" type="text/jscript">
  document.write("<img src='http://dm.leadgenesys.com/jpgp.lgt?en=P.........TP_Q=&amp;ur=' + escape(document.referrer) + ''  border='0' alt='no alt' />");
</script>

И ... когда я пытаюсь подтвердить это, мне дали эту ошибку:

Тип документа не разрешает элемент "IMG" здесь

… Rer) + '"border =" 0 "alt =" no alt " />');

Элемент, указанный выше, был найден в контексте, где он не допускается. Это может означать, что у вас есть неправильно вложенные элементы, такие как элемент «стиля» в разделе «Тело» вместо «головы», или два элемента, которые перекрываются (что не допускается).

Есть идеи, что я могу сделать, чтобы сделать этот JavaScript W3C -совместимый?

Это было полезно?

Решение

Просто: не пытайтесь проверить свой JavaScript как HTML.

Вы можете сделать это несколькими способами ... но лучше всего перенести его в отдельный файл JS, а затем либо вызовите его из короткого скрипта

<body>
...
<script type="text/javascript" language="javascript">WriteImage();</script>
...
</body>

... или еще лучше, канава document.write() полностью и манипулируйте DOM после того, как он загрузился.

Смотрите также: Несоблавный JavaScript

Другие советы

Еще один способ заставить замолчать валидатор ...

Поместите это так:

<script type="text/javascript">
/* <![CDATA[ */
your_javascript_here("<" + ... ;
/* ]]> */
</script> 

Часть CDATA должно быть достаточно для валидатора, комментарии / * стиля * / предназначены для более старых браузеров, которые не распознают тег CDATA (в противном случае он сломал бы JavaScript).

Как это

<script>
<!--
var i = null;
if ((i/0) == 12)
  alert("whooo! pack your things, as it's starting to rain cats and dogs!");
--><script>

Видите, что содержание «скрипта» находится внутри «HTML Comments»?

У тебя, вероятно, есть твой <script> элемент в вашем <head>, так что по сути вы пытаетесь создать <img> В главе вашего документа, который не работает. Вам нужно поместить сценарий в <body>.

Однако я бы порекомендовал вас Добавить элемент через DOM Вместо этого, потому что у вас будет меньше шансов столкнуться с такими проблемами.

Это часть стандарта HTML4. Ты должен сбежать "

<SCRIPT type="text/javascript">
  document.write ("<EM>This will work<\/EM>")
</SCRIPT>

Другое решение, и, вероятно, лучше, - переместить код JS во внешних файлах.

Ссылка

document.write("<" + "img … /" + ">");

Или же:

document.write("\x3Cimg … /\x3E");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top