导入脚本自身获得 URL/path?
import scripts getting a URL/path to itself?
我觉得这是不可能的,但是有没有办法让 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>
我觉得这是不可能的,但是有没有办法让 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>