我在看 FireBug Lite并看到他们使用了一种非常酷的技术将选项传递到外部脚本文件中:
这项技术的名称是什么,它是如何工作的?
这不是您想象的自动变量传递技术。
他们的代码所做的就是遍历所有的 script
标签,直到找到加载他们代码的标签(通过将 src
属性与正则表达式进行比较(/(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
).
如果找到标签,它会简单地获取 script
标签的 .innerHTML
,并对其进行评估。
我想这个(未命名的)技术在现实世界中是不相关的,因为我们没有一个有保证的方法来找到哪个 script
标签引用我们的库(尤其是当它是将所有脚本合并到实时服务器上的一个脚本文件中是很常见的)。
此外,我怀疑这是如何跨浏览器的;因为它肯定不会通过 spec ,其中指出:
话虽如此(并考虑了一下):spec指出浏览器不应同时解释两者。但是,这与此技术无关。浏览器不必对两者进行解释,因为脚本的内容是通过 innerHTML
读入的(即使它确实读入了内容,也无妨)。只要浏览器符合规范并加载 URI(所有浏览器都这样做),就没有问题! (除了不知道/保证你的库属于哪个 script
标签)。
The script may be defined within the contents of the SCRIPT element or in an external file. If the src attribute is not set, user agents must interpret the contents of the element as the script. If the src has a URI value, user agents must ignore the element's contents and retrieve the script via the URI.
(即不要同时解释两者)。
Tôi là một lập trình viên xuất sắc, rất giỏi!