У меня сложная ситуация, когда скрипты загружаются из разных источников, но, чтобы понять мою проблему, я думаю, будет проще, если я задам простой вопрос о модулях AMD, с которым я не слишком знаком.
На сайте, использующем модули AMD, доступна функция определения.Что произойдет, если я попытаюсь определить и загрузить модуль следующим образом:
define([], () => { return { thisIsMyTest: true } })
Как я могу получить доступ к тому модулю, который я только что определил?
Я пытался искать в require._defined
Но я не смог его увидеть (я тоже мог его пропустить, так как не уверен, какое имя искать).
Сценарий, который хочет получить доступ к этомуОбъект не совместим с AMD, но у меня есть контроль над этим аспектом, поэтому я рад написать для него код.
Теперь, чтобы добавить больше ясности к проблеме, у меня есть скрипт, который загружается на сайт (который я не могу контролировать), мой скрипт загружает другой внешний скрипт удаленно (который я не могу контролировать)над).Этот внешний скрипт в обычных случаях представляет себя как переменная объекта Window, однако он поддерживает модули AMD, и этот сайт использует AMD, поэтому в этом случае этот внешний скрипт использует метод загрузки define, и я не могу понять, какполучить к нему доступ.
Обновление:
Вот мой фрагмент кода, который загружает мою внешнюю библиотеку:
const libScript = document.createElement('script');
libScript.type = 'text/javascript';
libScript.src = '//some/3rdparty/lib.js'; // source
libScript.onload = () => {
// Use the library that normally exists on window.Lib
// However libScript in this site loads using AMD
// and window.Lib doesn't exist for sites that use AMD
// Other non AMD sites work fine.
};
document.head.appendChild(libScript);