HTMLScriptElement vs&#39; <script>'标记

时间:2016-02-27 18:27:40

标签: javascript

使用 HTMLScriptElement 加载脚本是否有任何优势?只是将它包含在DOM中而不是加载它?

&#xA;&#xA;

也许举例来说,在DOM中保持干净并隐藏脚本会更容易(减少它们很明显?

&#xA;&#xA;

没有找到任何相关资料,这就是我要问的原因。

&#xA;

2 个答案:

答案 0 :(得分:1)

通常,您只需在HTML文档中直接包含脚本标记即可。除非您使用async属性,否则后续脚本将不会加载到之前的脚本,因此您可以安全地依赖任何依赖项。

如果您希望保持HTML清洁,可以以编程方式使用HTMLScriptElement接口加载脚本。但是,您必须手动创建onloadonerror处理程序以异步等待加载脚本。除非你围绕它构建抽象,否则这将变得混乱和复杂。然后你做了很多次做过的事情,参见RequireJS,SystemJS等。

因此,想要保持HTML清晰的脚本标记是一个合理的抱负,但你可能最好不要寻找现成的脚本加载器来做到这一点,而不是自己动手。

答案 1 :(得分:0)

这里没有真正的选择。 HTMLScriptElement是所有HTML <script>节点公开的“接口”。

通过调用document.createElement('script')或通过HTML解析器传递<script>...</script>标记字符串来创建脚本节点(这可以通过多种方式发生:从解析完整的HTML文档到设置{{ 1)现有元素。)当在HTML文档中创建innerHTML元素时,<script>位于其原型链中。因此,HTMLScriptElement元素可以访问HTMLScriptElement上的所有属性和方法。

但是,

<script>不是构造函数。这可以通过尝试调用HTMLScriptElement来查看,这会引发new HTMLScriptElement() Illegal constructor

所有这一切都是说你的问题没有意义,因为人们无法使用HTMLScriptElement加载“脚本而不是通过将其包含在DOM中来加载它”。