JavaScript代码内部<script>标记

use*_*015 5 javascript jquery firebug firebug-lite

显然,JSON对象可以在链接脚本中传递.我正在试图弄清楚它是如何工作的(如果它有效):

<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js">
{
    overrideConsole: false,
    startInNewWindow: true,
    startOpened: true,
    enableTrace: true
}
</script>
Run Code Online (Sandbox Code Playgroud)

我在firebug lite文档中注意到了它:http: //getfirebug.com/firebuglite#ScriptJSONOptions

Mik*_*uel 9

由于元素具有src属性,因此不会执行内容.它不是严格合法的.在HTML5规范说:

如果存在src属性,则该元素必须为空或仅包含也与脚本内容限制匹配的脚本文档.

<script>元素的内容既不是有效的JSON,也不是有效的JavaScript.它不是有效的JSON,因为未引用属性名称.它不是有效的JavaScript,因为虽然它看起来像带有标签语句的块表达式,但后面的冒号startInNewWindow不能合法地出现在那里.

也就是说,加载的脚本总是可以查找最后一个脚本元素并解析其内容:

 var scripts = document.getElementsByTagName('SCRIPT');
 var lastScript = scripts[script.length - 1];
 var content = eval(lastScript.innerText || lastScript.textContent);
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 5

浏览器将忽略<script src />标记中的任何内容.

但是,Firebug Lite Javascript将专门找到其<script>标记并手动解析内容.