错误验证W3C HTML5 img noscript facebook.com

时间:2016-02-20 14:50:26

标签: javascript html html5 w3c-validation noscript

我正在尝试将我的页面验证为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&currency=USD" /></noscript>
</head>

是否可以修改此代码并通过验证(在head部分中)?

2 个答案:

答案 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>或类似内容。