显然,JSON对象可以在链接脚本中传递。我正在试图弄清楚它是如何工作的(如果它确实如此):
<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js">
{
overrideConsole: false,
startInNewWindow: true,
startOpened: true,
enableTrace: true
}
</script>
我在firebug lite文档中注意到了这一点: http://getfirebug.com/firebuglite#ScriptJSONOptions
答案 0 :(得分:9)
由于元素具有src
属性,因此不会执行内容。它不是严格合法的。 HTML5 spec说:
如果存在
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);
答案 1 :(得分:5)
浏览器会忽略<script src />
代码中的所有内容。
但是,Firebug Lite Javascript将专门找到其<script>
标记并手动解析内容。
答案 2 :(得分:1)
以下是解析JSON对象的代码,以防有人感兴趣。
// process the Script JSON Options
var innerOptions = FBL.trim(script.innerHTML);
if (innerOptions) {
var innerOptionsObject = eval("(" + innerOptions + ")");
for (var name in innerOptionsObject) {
var value = innerOptionsObject[name];
if (name == "debug") {
Env.isDebugMode = !!value;
}
else if (name in Env.Options) {
Env.Options[name] = value;
}
else {
Env[name] = value;
}
}
}
http://code.google.com/p/fbug/source/browse/lite/branches/firebug1.5/build/firebug-lite-debug.js#478