Итак, вот что я пытаюсь достичь:
1) Есть внешний файл JS, скажем: event.js
2) Этот файл определяет глобальную переменную, которая имеет некоторые функции, например: :
window.obj = {
f1: function1() {},
f2: function2() {},
// ...
};
3) А затем есть некоторый код, который использует этот объект и вызывает его функции:
if(obj) {
obj.f1(data);
}
Веб-сайт, о котором идет речь, всегда управлялся через Google Tag Manager, и так устанавливается следующее:
1) Тег сценария, включающий базовый файл JS, создается как tag_base
. 2) Тег, который содержит код в # 3 выше, создается как tag_code
. 3) Приоритет tag_base
установлен как 7. 4) Приоритет tag_code
установлен как 6.
А теперь вот проблема: если я использую код tag_code
, как показано в # 3 выше, функция f1
срабатывает примерно через 8-10 секунд. Причина, конечно, в том, что это тяжелый веб-сайт со множеством старых сценариев, поэтому они могут каким-то образом вступить во владение, и этот код выполняется в самом конце. Я не знаю почему. Но именно поэтому я поставил приоритет этим двум высоким, но это, похоже, не работает. Во-вторых, если я обертываю код в jQuery $(document).ready()
, я получаю ошибку, что obj
не определен, возможно потому, что внешний JS все еще не загружен.
Есть ли способ выйти из этого? В более общем смысле, как сценарии, собирающие данные (например, пиксель Facebook и т. Д. c.), Работают и достигают этих результатов?