Googles +1按钮示例:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>
脚本标记具有src-Attribute 和内容。这是什么意思,它是如何运作的?
答案 0 :(得分:64)
不同的浏览器对此有不同的看法。有些只在包含src
且没有错误的情况下运行内容。有些人在尝试包含src
脚本后运行它,无论成功与否。由于此行为不可靠(以及prohibited in HTML5),因此应避免使用。
Google并未依赖任何特定行为。由于内容只是一个对象文字(一个值),执行它实际上不会做任何事情,除了导致无声错误。 Google的代码会查看script
代码本身的内容,并根据该代码调整其行为。
答案 1 :(得分:21)
如果script element具有 src 属性,则必须忽略内容 ,否则任何其他行为都不符合。
有人建议在博客(作为黑客)中将内容放入元素中,因为知道它不会被评估,然后使用DOM方法将内容作为字符串获取 eval 它或将其插入新的脚本元素。这些都不是一个好主意。
答案 2 :(得分:13)
根据HTML5 draft specification,具有<script>
属性的src
元素应该只有注释掉的代码,用于提供脚本的文档。看起来Google似乎并不符合此规范。
答案 3 :(得分:13)
加载脚本后,它会查看自己的脚本标记以访问其内容。
它会使用类似的代码:
var scripts = document.getElementsByTagName("script");
var data = eval(scripts[scripts.length - 1].innerHTML);
由John Resig提供。