Google +1按钮不符合W3C标准

41

我一直在尝试将 Google 的 +1 按钮放在我的网站上,但它不符合 W3C 标准。

以下是代码:

<!-- Place this tag in your head or just before your close body tag -->
<script type="text/javascript" src="http://apis.google.com/js/plusone.js">
  {lang: 'en-GB'}
</script>

<!-- Place this tag where you want the +1 button to render -->
<g:plusone size="medium" href="http://www.example.org"></g:plusone>

有人知道为什么会发生这种情况,以及如何使其符合要求吗?谢谢

修改:为了通过验证,我在我的网站上写了一篇文章。


2
{lang: 'en-GB'} 这部分对我来说看起来很奇怪。首先,因为相同的脚本标签正在从 src 加载,所以我认为它不应该再有任何代码了。其次,这个对象字面量没有被分配给任何东西,那么它的意义是什么呢? - mkilmanas
7
如果提供了SRC属性,浏览器将忽略SCRIPT元素的内容,但脚本作者仍然可以编写代码以获取SCRIPT元素的内容(即上面的“{lang:'en-GB'}”部分)并对其进行操作。这是一种方便的模式,用于捆绑JS对象文字,使脚本可以将其用作参数或配置等。只是供参考... - dossy
谢谢,这是一个有趣的想法,我之前没有意识到。 - mkilmanas
12个回答

0

这是我想出来的解决方案...

<span id="plusone"></span>
<script type="text/javascript">
    //< ![CDATA[    
       $("#plusone").html('<g:plusone></g:plusone>');
      (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = 'https://apis.google.com/js/plusone.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
      })();
    //]]>    
</script>

请确保您的头文件中包含<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 或其他链接到jQuery脚本的代码!


0
另一种方法是像我做的那样自定义DTD文件。我下载了xhtml1-strict.dtd。
在DTD文件中找到以下实体定义。
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc; )*">

并将其编辑为以下内容(这将有助于解决上下文验证,即此标记应出现在何处)

<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc; | g:plusone)*">

现在正在定义新元素

<!ELEMENT g:plusone EMPTY>

然后列出属性

<!ATTLIST g:plusone
  href %URI; #IMPLIED
  size CDATA #IMPLIED
>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接