我感觉这是不可能的,但是es6导入脚本是否可以通过任何方式获取自身的路径,或者是否没有其他方法可以知道从其下载的域?
我要完成的工作是在用户包含我图书馆站点中的脚本时打印警告
// usercode.js
import foolib from 'https://foolib.org/dist/foolib.js';
// foolib.js
if (location.hostname !== 'foolib.org' && selfurl.hostname === 'foolib.org') {
console.warn(`referencing this code directly from foo.com is garanteed to break.
Use your own copy or a versioned CDN`);
}
请注意,使用脚本标签并没有正式的方法,但是脚本可以扫描所有现有的脚本标签,并查看在其关心的域中是否有对该脚本的引用
if (location.hostname !== 'foolib.org' &&
[...document.querySelectorAll('script')].findIndex(
s => s.src === 'https://foolib.org/dist/foolib.js'
) >= 0) {
console.warn('...');
}
我正在尝试找到一种方法来对es6模块执行相同的操作。
最佳答案
您可以从import.meta
对象访问此信息:
<script type="module">
console.log( import.meta );
</script>