JSON对象传递给外部JavaScript - 酷技术

Qua*_*Van 10 javascript json design-patterns external options

我看着FireBug Lite,看到他们使用非常酷的技术将选项传递到外部脚本文件中.

<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)

我想知道是否有人知道这种技术的名称,我可以在哪里找到有关它的更多信息或它是如何工作的.看起来很酷.谢谢!

Mat*_*att 4

它不像您想象的那样是一种自动变量传递技术。

他们的代码所做的就是循环遍历所有标签script,直到找到加载其代码的标签(通过将src属性与正则表达式(/(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;)进行比较)。

如果找到标签,它只需获取.innerHTML标签的script并对其进行评估。

我想这种(未命名)技术在现实世界中并不相关,因为我们没有一种有保证的方法来查找哪个script标签引用我们的库(特别是因为所有脚本都合并到一个脚本文件中是很常见的在实时服务器上)。

此外,我对它的跨浏览器性能表示怀疑;因为它肯定不符合规范其中规定:

话虽如此(并考虑了一下):规范规定浏览器不应同时解释两者。然而,这与该技术无关。浏览器不必解释两者,因为脚本的内容是通过读入的innerHTML(即使它确实读入了内容,也不会造成任何损害)。只要浏览器符合规范并加载 URI(所有浏览器都会这样做),就没有问题!(除了不知道/保证script您的库属于哪个标签之外)。

脚本可以在 SCRIPT 元素的内容内或外部文件中定义。如果未设置 src 属性,则用户代理必须将元素的内容解释为脚本。如果 src 具有 URI 值,则用户代理必须忽略该元素的内容并通过 URI 检索脚本。

(即,不要解释两者)。