我正在尝试将我的页面验证为HTML 5(W3c)。我有以下错误:此处不允许使用“img”元素(作为“noscript”元素的子元素)。当“head”的子元素时,“noscript”元素必须只包含以下子元素:“link”,“style”和“meta”。
网站https://developers.facebook.com/docs/ads-for-websites/conversion-pixel-code-migration推荐我的代码:
“将升级后的代码段复制并粘贴到<head>
;和</head>
;在您要跟踪转化的网站的HTML代码中。例如,要跟踪注册,请将代码放在”注册“上完成'网页。“
请参阅源代码:
<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>
是否可以修改此代码并通过验证(在head部分中)?
答案 0 :(得分:3)
W3C的HTML5规范定义了head
元素中noscript
element的内容模型,如下所示:
[...]以任何顺序,零个或多个
link
元素,零个或多个style
元素以及零个或多个meta
元素。
如您所见,除link
/ style
/ meta
个元素外,它不能包含任何其他内容。所以不,不可能修改任何内容以允许在img
元素内的noscript
元素内head
。
但如果您将img
元素放在noscript
中,则noscript
内可以body
,因为内容模型就是这样:
透明,但必须没有
noscript
元素后代。
透明表示它与其父元素具有相同的内容模型。例如,如果noscript
位于div
内,则可能包含div
可能包含的任何内容(另一个noscript
除外)。
答案 1 :(得分:-1)
正如@ Aplet123和@unor所说,你可以将<noscript>
元素移动到正文。我已经在我的页面上完成了这项工作,它似乎没有任何不良影响。
为了检查,我使用了Chrome中的Facebook Pixel帮助器,它的行为与我的页面的前一版本完全相同,并且根据Facebook示例代码,头部中有<noscript>
元素。
最后,为了让HTML验证工具满意,您还需要在alt="Facebook pixel"
元素中添加<img>
或类似内容。