谷歌的+1按钮:他们是如何做到的?

Sha*_*haz 16 html javascript google-plus-one

探索谷歌的+1按钮,我发现他们提供的代码有两个奇怪之处:

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
  {lang: 'en-GB'}
</script>

<g:plusone size="tall" href="http://www.google.com"></g:plusone>
Run Code Online (Sandbox Code Playgroud)

所以我有两个问题:
第一:       Google如何在script标签之间使用文字?
第二:  语法<g:plusone ...HTML是否有效?这叫什么?

bob*_*nce 12

Google如何在脚本标记之间使用文本?

<script> 元素在DOM中完全可见:

<script type="text/javascript">//FIRST SCRIPT BLOCK</script>

<script type="text/javascript">
    var s= document.getElementsByTagName('script')[0];
    alert(s.textContent); // "//FIRST SCRIPT BLOCK"
</script>
Run Code Online (Sandbox Code Playgroud)

Google狡猾的伎俩是将内容放入<script>具有外部内容的内容中src.在这种情况下,src覆盖块内的内容并改为执行外部脚本,但<script>即使它们什么也不做,元素的内容仍然可以通过DOM读取.

语法是<g:plusone...... HTML有效吗?这叫什么?

否.如果他们做出了自己的DOCTYPE HTML为+ Plusone精选也可能是有效的是,但它并不满足有效性HTML,它甚至没有命名空间,形成良好的XHTML文档中,除非你添加一个额外xmlns:g的它也.

  • 是的,这只是一个例子.实际上他们将要做的是读取ByTagName列表中的*last*脚本,而不是第一个.因为页面仅在运行时部分加载,所以最后一个`<script>`将是您当前正在执行的页面.(除非你使用`defer`或`async`.) (4认同)