带有src和内容的脚本标记是什么意思?

时间:2011-06-29 23:11:52

标签: javascript

Googles +1按钮示例:

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
      {"parsetags": "explicit"}
</script>

脚本标记具有src-Attribute 内容。这是什么意思,它是如何运作的?

4 个答案:

答案 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提供。