我的对比度切换器未通过验证。我看过When is a CDATA section necessary within a script tag? 并试图逃避角色并使用CDATA,但我仍然得到两者的验证错误。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<script type="text/javascript">
$(document).ready(function(){
// DRY wrapper function
function appendStyleSheet() {
$('head').append('<link rel="stylesheet" href="{site_url}css/high-contrast.css" type="text/css" id="hc_stylesheet"/>');
}
// append the style sheet on load if the cookie is set to true
if ($.cookie('high_contrast_momentum') == 'true') {
appendStyleSheet();
}
$("#contrast-btn a").click(function () {
if ($.cookie('high_contrast_momentum') != 'true') {
appendStyleSheet();
$.cookie('high_contrast_momentum', 'true', {expires:365}); // set the cookie to true
}
else {
// remove the high-contrast style
$("#hc_stylesheet").remove();
$.cookie('high_contrast_momentum', 'false');
}
});
});
</script>
我得到的验证错误是:文档类型不允许元素“链接”在这里
答案 0 :(得分:0)
您可以使用&lt; link /&gt; &lt; head&gt;内的标签标签,您不能使用&lt; link /&gt; &lt; script&gt;中的标签标签
另一方面,&lt; link /&gt;的存在您的&lt; script&gt;中的标记标签是一个简单的误解。 xHTML文档(因为您使用的是xHTML DTD)确实包含CDATA部分,以确保脚本区域的内容不会被解析为xHTML。
您的错误是由使用xHTML保留字符&amp; /&lt; /&gt;引起的。
验证引擎可能错误地读取了脚本标记内的链接,即使这些脚本标记的内容不应该被解析为HTML。
尝试将下面的那个符号与字符串的其余部分分开:
$('head').append('<'+'link rel="stylesheet" href="{site_url}css/high-contrast.css" type="text/css" id="hc_stylesheet"/'+'>');