假设我有脚本source.js
。
有两种方法可以加载它:
<script src="source.js"></script>
document.createElement
和appendChild
是否可以从source.js
内部了解加载方式?
答案 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>