是否可以知道脚本是如何加载的

时间:2017-05-13 20:53:12

标签: javascript

假设我有脚本source.js。 有两种方法可以加载它:

  1. <script src="source.js"></script>
  2. 通过document.createElementappendChild
  3. 是否可以从source.js内部了解加载方式?

1 个答案:

答案 0 :(得分:0)

简单回答:不。

可以script标记更改为具有额外属性

<script src="source.js" data-scripttag="true"></script>

然后在source.js文件中,您可以看到标记上是否存在该属性。如果是,则通过脚本标记调用它。但是,我从问题中假设您无法修改调用脚本的HTML(第三方集成?)。

此示例代码段在SO中不起作用,但如果您可以编辑HTML,则应该了解实现此目的的方法。

// foo.js

var scriptTags = document.querySelectorAll('[data-scripttag]');
if (scriptTags.length === 1) {
  // Called via script tag
} else {
  // injected
}
<script src="foo.js" data-scripttag="true"></script>

<script>
  var fs = document.getElementsByTagName('script')[0];
  var s = document.createElement('script');
  s.src = 'foo.js';
  fs.parentNode.insertBefore(s, fs)
</script>