我希望在触发事件之前,等待所有的requireJS模块都完成加载。是否有一个事件或者一种方法可以监听所有的requireJS模块是否已经加载完成?
细节如下:
我想要添加自定义维度到我的Google Analytics并发送页面浏览量。如果我在所有页面上设置相同的维度,则很容易实现。但是,在某些requireJS模块中,我希望在页面浏览量之前更改这些维度。
我有我的模板JavaScript代码,在每个页面上都会运行。我想要让它执行以下操作:
我希望流程如下:
我考虑过的事情:
这个方法不可行,因为DOM Ready 可能会在所有JavaScript模块加载之前或之后触发。
这种方法不可靠并且可能会多次触发。如果10分钟后页面添加了一张图片,它可能会再次触发。如果外部资源永远无法加载,此事件将永远不会触发。
我有遗漏的选项吗?或者requireJS 中有我错过的东西吗?
细节如下:
我想要添加自定义维度到我的Google Analytics并发送页面浏览量。如果我在所有页面上设置相同的维度,则很容易实现。但是,在某些requireJS模块中,我希望在页面浏览量之前更改这些维度。
我有我的模板JavaScript代码,在每个页面上都会运行。我想要让它执行以下操作:
LISTEN_FOR_MODULES_TO_LOAD(function() {
$(document).trigger('set-your-analytics-dimensions-yall');
ga('send', 'pageview');
});
然后,在我的一些子页面上,我有一些执行以下操作的模块:
$(document).on('set-your-analytics-dimensions-yall', function() {
ga('set', 'dimension');
});
我希望流程如下:
- 等待所有模块完成加载
- 请求其他模块设置它们的尺寸和其他值
- 设置页面视图
我考虑过的事情:
这个方法不可行,因为DOM Ready 可能会在所有JavaScript模块加载之前或之后触发。
这种方法不可靠并且可能会多次触发。如果10分钟后页面添加了一张图片,它可能会再次触发。如果外部资源永远无法加载,此事件将永远不会触发。
我有遗漏的选项吗?或者requireJS 中有我错过的东西吗?
async.js
的插件,我曾经用它来加载Google地图API。我不需要其他东西,只需将代码放在define
块内,当Google API加载完成时,它将被执行。希望这能解决你的问题,因为我对GA在你的代码中如何加载并不确定。 - Linh Pham