2011-01-26 13 views
3

Я создаю сайт, используя строгую разметку XHTML. Внутри HTML мне нужно поставить JS скрипт:XHTML Строка недействительна из-за тегов html внутри Javascript

<script type="text/javascript"> 

$(document).ready(function() { $('#nav li#nav-strona-glowna').append('<a href="/platinium/" class="hover active"><span>Strona glowna</span></a>'); 

</script> 

К сожалению, XHTML уже не действует, из-за «» метки внутри этого сценария. Как я могу проверить xhtml без его удаления?

ответ

6

You want a CDATA tag. Пример украден из этой MDC страницы:

<script type="text/javascript"> 
//<![CDATA[ 
    var i = 0; 

    while (++i < 10) 
    { 
    // ... 
    } 
//]]> 
</script> 

В общем, лучше, чтобы избежать проблем, имея ваши JS (и CSS) во внешних файлах.

+0

+1 Для внешнего файла. – Hemlock

3

Try:

<script type="text/javascript"> 
    <![CDATA[ 
     $(document).ready(function() { $('#nav li#nav-strona-glowna').append('<a href="/platinium/" class="hover active"><span>Strona glowna</span></a>'); 
    ]]> 
</script> 
1

CDATA Wrapper

<script> 
//<![CDATA[ 

// js goes here - bypasses browser HTML parser 

//]]> 
</script> 

Я предлагаю вам найти способы инъекционные HTML в страницы, которые непосредственно не вовлекает написание HTML-разметку в вашем JavaScript. Ваши отношения с вашим веб-дизайнером будут намного более сильными, более эффективными и плодотворными, если вы оставите свой контент, презентацию и поведение разделенными.

Но для тех случаев, когда это невозможно, обертка CDATA не позволит браузеру разбора вашего JavaScript как HTML.

Имейте в виду, что есть причина, по которой они называются HTML Strict.

1

Update

Там проблема в вашем коде, который является то, что он отсутствует закрывающая фигурная скобка и скобку. Возможно, опечатка?

Что касается проверки XHTML, лучшим вариантом является предоставление вам JavaScript в отдельном файле. В противном случае, добавьте раздел CDATA вокруг сценария:

<script type="text/javascript"> 
//<![CDATA[ 
    $(document).ready(function() { $('#nav li#nav-strona-glowna').append('<a href="/platinium/" class="hover active"><span>Strona glowna</span></a>'); }); 
//]]> 
</script> 

Обратите внимание, что комментарии JavaScript есть для браузеров, таких как IE, которые не разбором XHTML в качестве XML. См https://developer.mozilla.org/en/properly_using_css_and_javascript_in_xhtml_documents

+0

Это правильно, и именно поэтому я всегда предпочитаю простой HTML. – CodeVirtuoso

+0

проблема в том, что я пробовал все эти решения, но ни одна из этих работ не устраняет проблему, Я не могу поместить js в отдельный файл, потому что его содержимое генерируется php – David

+0

@David: Что именно представляет собой проблема? Что вы использовали для проверки своего XHTML? –

1
<script type="text/javascript"><![CDATA[ 
// your code 
]]></script> 

Если устранить проблему

1

Что ошибка делает валидатор дает вам точно? Код, который вы опубликовали, выглядит довольно корректно.

КПП. Если вам не нужен XHTML для некоторых очень конкретной причине,

(http://xhtml.com/en/xhtml/serving-xhtml-as-xml/)

вы, вероятно, лучше только с HTML4 или HTML5, которые вы можете сделать правильный код с.

+0

хорошо, у меня есть этот сайт на локальном сервере, поэтому я не могу поместить ссылку, так или иначе я использую ff-аддон, который проверяет код wchih, должен иметь ошибку, потому что я поместил весь источник в http://validator.w3.org/# validate_by_input, и он проверяет как шарм: D thanx для ответов – David

Смежные вопросы