Javascript 错误验证W3C HTML5 img noscript facebook.com
我正在尝试将我的页面验证为HTML5(W3c)。我有以下错误:这里不允许使用“img”元素(作为“noscript”元素的子元素)。当“head”的子元素为“noscript”时,“noscript”元素必须仅包含以下子元素:“link”、“style”和“meta” 我的代码的现场推荐: 将升级后的代码段复制并粘贴到您要跟踪转换的网站HTML代码中的Javascript 错误验证W3C HTML5 img noscript facebook.com,javascript,html,w3c-validation,noscript,Javascript,Html,W3c Validation,Noscript,我正在尝试将我的页面验证为HTML5(W3c)。我有以下错误:这里不允许使用“img”元素(作为“noscript”元素的子元素)。当“head”的子元素为“noscript”时,“noscript”元素必须仅包含以下子元素:“link”、“style”和“meta” 我的代码的现场推荐: 将升级后的代码段复制并粘贴到您要跟踪转换的网站HTML代码中的;和;之间。例如,要跟踪注册,请将代码放在“注册完成”网页上 请参阅源代码: <head> <script type="text
;和
;之间。例如,要跟踪注册,请将代码放在“注册完成”网页上
请参阅源代码:
<head>
<script type="text/javascript">
var fb_param = {};
fb_param.pixel_id = '1234567890';
fb_param.value = '10.00';
fb_param.currency = 'USD';
(function(){
var fpw = document.createElement('script');
fpw.async = true;
fpw.src = '//connect.facebook.net/en_US/fp.js';
var ref = document.getElementsByTagName('script')[0];
ref.parentNode.insertBefore(fpw, ref);
})();
</script>
<noscript><img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/offsite_event.php?id=1234567890&value=10.00¤cy=USD" /></noscript>
</head>
var fb_param={};
fb_param.pixel_id='1234567890';
fb_参数值='10.00';
fb_参数货币=‘美元’;
(功能(){
var fpw=document.createElement('script');
fpw.async=true;
fpw.src='//connect.facebook.net/en_US/fp.js';
var ref=document.getElementsByTagName('script')[0];
ref.parentNode.insertBefore(fpw,ref);
})();
是否可以修改此代码并通过验证(在head部分)?W3C的HTML5规范在
head
元素中定义了一个的内容模型,如下所示:
[…]按任何顺序,零个或多个链接
元素,零个或多个样式
元素,零个或多个元
元素
如您所见,它只能包含链接
/样式
/元
元素。因此,不可能修改任何内容以允许img
位于noscript
元素的head
元素的内部
但是,如果将noscript
元素放置在正文中,则可以在noscript
中包含img
,因为在这种情况下,内容模型是:
透明,但不能有noscript
元素子体
透明意味着它与其父元素具有相同的内容模型。例如,如果noscript
在div
中,它可能包含div
可能包含的任何内容(除了另一个noscript
)。如@Aplet123和@unor所说,您可以将
元素移动到主体中。我已经在我的网页上这样做了,它似乎没有不良影响的工作
为了检查,我使用了Chrome的Facebook Pixel helper,它的行为与我的页面的上一个版本完全相同,根据Facebook示例代码,头部有
元素
最后,为了让HTML验证程序满意,您还需要添加一个alt=“Facebook pixel”
或类似于您的
元素。您不能将内容放在头部。但是,可以将noscript移动到主体中。