импортировать скрипты, получая URL / путь к себе? - PullRequest
0 голосов
/ 10 января 2020

У меня такое ощущение, что это невозможно, но есть ли способ, чтобы импортированный сценарий es6 мог получить какой-либо путь к себе или, если не что иное, узнать домен, из которого он был загружен?

Что я sh пытается напечатать предупреждение, если пользователь включает скрипт с сайта моей библиотеки

// 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, если это возможно.

1 Ответ

1 голос
/ 13 января 2020

Вы можете получить доступ к этой информации из объекта import.meta:

<script type="module">
  console.log( import.meta );
</script>
...