错误验证 W3C HTML5 img noscript facebook.com.

Errors validation W3C HTML5 img noscript facebook.com

本文关键字:noscript facebook com img HTML5 验证 W3C 错误      更新时间:2023-09-26

我正在尝试验证我的页面是否为HTML 5(W3c)。我有以下错误:"img"元素在这里是不允许的(作为"noscript"元素的子元素)。当"head"的子元素时,"noscript"元素必须仅包含以下子元素:"链接","样式"和"元"。

现场 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>

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

W3C的HTML5规范在head元素中定义了noscript元素的内容模型,如下所示:

[...]按任何顺序排列,零个或多个link元素,零个或多个style元素,零个或多个meta元素。

如您所见,它不能包含除link/style/meta元素之外的任何其他内容。 所以不,不可能修改任何内容以允许img元素内部的noscript元素内部head

但是,如果您将noscript元素放在body中,则可以在noscript内部进行img,因为在这种情况下,内容模型是:

透明,但不得有noscript元素后代。

透明意味着它具有与其父元素相同的内容模型。因此,例如,如果noscript位于div内,则可能包含div可能包含的任何内容(除了另一个noscript)。

正如@Aplet123和@unor所说,您可以将<noscript>元素移动到正文中。我已经在我的页面上完成了此操作,它似乎可以正常工作,没有不良影响。

为了检查,我使用了Chrome的Facebook Pixel助手,它的行为与我页面的先前版本完全相同,根据Facebook示例代码,头部带有<noscript>元素。

最后,为了让 HTML 验证器满意,您还需要添加一个 alt="Facebook pixel" 或类似的 <img> 元素。