Javascript:字符“;”中不容许使用属性规格列表怎么办? javascript
character ";" not allowed in attribute specification list怎么解决? html
在使用w3c的检测工具检测以后,网页提示这样的错误“character ";" not allowed in attribute specification list”,翻译成中文是“Javascript:字符“;”中不容许使用属性规格列表”,这样的问题怎么解决?其实很简单。 java
这个问题通常是因为程序中使用了JavaScript脚本而形成的, app
W3c官方给出的解释是: curl
可能的缘由: 工具
转义的JavaScript生成多个验证错误,这是其中之一。 url
解决方案: spa
在CDATA包裹JavaScript代码;从JavaScript中隐藏的CDATA用/ /注释。 翻译
http://www.htmlpedia.org/wiki/Tidy_88 code
参考文献:
HTML规范:http://www.w3.org/TR/html4/
例如我有下面一段代码:这是织梦的幻灯片代码:
<script language='javascript' type="text/javascript">
linkarr = new Array();
picarr = new Array();
textarr = new Array();
var swf_width=655;
var swf_height=326;
var configtg='0xffffff|1|0x3FA61F|5|0xffffff|0xC5DDBC|0x000033|2|3|1|_blank';
var files = "";
var links = "";
var texts = "";
{dede:arclist flag='f' row='5' typeid='all' noflag='c'}
linkarr[[field:global.autoindex/]] = "[field:arcurl/]";
picarr[[field:global.autoindex/]] = "[field:litpic/]";
{/dede:arclist}
for(i=1;i<picarr.length;i++){
if(files=="") files = picarr[i];
else files += "|"+picarr[i];
}
for(i=1;i<linkarr.length;i++){
if(links=="") links = linkarr[i];
else links += "|"+linkarr[i];
}
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+ swf_width +'" height="'+ swf_height +'">');
document.write('<param name="movie" value="{dede:global.cfg_templeturl /}/default/images/bcastr3.swf" /><param name="quality" value="high" />');
document.write('<param name="menu" value="false" /><param name=wmode value="opaque" />');
document.write('<param name="FlashVars" value="bcastr_file='+files+'&bcastr_link='+links+'&bcastr_title='+texts+'&bcastr_config='+configtg+'" />');
document.write('<embed src="{dede:global.cfg_templeturl /}/default/images/bcastr3.swf" wmode="opaque" FlashVars="bcastr_file='+files+'&bcastr_link='+links+'&bcastr_config='+configtg+'&menu="false" quality="high" width="'+ swf_width +'" height="'+ swf_height +'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'); document.write('</object>');
</script>
解决方法就是在<script>和</script>之间的部分用CDATA给包起来。
具体代码参考以下:(依上面的为例)
<script language='javascript' type="text/javascript">
//<![ CDATA [
linkarr = new Array();
picarr = new Array();
textarr = new Array();
var swf_width=655;
var swf_height=326;
var configtg='0xffffff|1|0x3FA61F|5|0xffffff|0xC5DDBC|0x000033|2|3|1|_blank';
var files = "";
var links = "";
var texts = "";
{dede:arclist flag='f' row='5' typeid='all' noflag='c'}
linkarr[[field:global.autoindex/]] = "[field:arcurl/]";
picarr[[field:global.autoindex/]] = "[field:litpic/]";
{/dede:arclist}
for(i=1;i<picarr.length;i++){
if(files=="") files = picarr[i];
else files += "|"+picarr[i];
}
for(i=1;i<linkarr.length;i++){
if(links=="") links = linkarr[i];
else links += "|"+linkarr[i];
}
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+ swf_width +'" height="'+ swf_height +'">');
document.write('<param name="movie" value="{dede:global.cfg_templeturl /}/default/images/bcastr3.swf" /><param name="quality" value="high" />');
document.write('<param name="menu" value="false" /><param name=wmode value="opaque" />');
document.write('<param name="FlashVars" value="bcastr_file='+files+'&bcastr_link='+links+'&bcastr_title='+texts+'&bcastr_config='+configtg+'" />');
document.write('<embed src="{dede:global.cfg_templeturl /}/default/images/bcastr3.swf" wmode="opaque" FlashVars="bcastr_file='+files+'&bcastr_link='+links+'&bcastr_config='+configtg+'&menu="false" quality="high" width="'+ swf_width +'" height="'+ swf_height +'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'); document.write('</object>');
//]]>
</script>