我想检测是否有人制作了我的javascript库的本地副本,或者是从规范位置加载它。我想知道JS库是否有办法检查它的加载位置。
我不知道有任何方法可以做到这一点,所以我能想到的最好的方法是让JS检查DOM中的所有<script>
标签,看看是否有任何指向规范位置的点。如果没有,那么我知道JS必须从其他地方加载。
我想知道是否有更好的解决方案,最好是JS能够告诉它从哪个URL加载。这种机制是否存在?
答案 0 :(得分:2)
您可以通过访问document.currentScript
让代码检查自己的<script>
元素。它包含对当前处理的<script>
元素的引用。测试src
属性以查看是否未设置,或者是否与您的域不匹配。
var scriptLocation = document.currentScript.src;
if(!scriptLocation || scriptLocation.indexOf("http://example.com") != 0){
//inline script or loaded from some other site
}
请注意,如果您将代码放入某些异步使用(即promise回调等),它将不会保存代码的脚本元素。