执行模块时发送事件
Send event when module was executed
我真的很纠结。。当Load模块和Hide模块 //加载模块 //隐藏模块 //当两者都发生时=向Google Analytics发送事件(
function() {
var s=document.createElement('script');
s.type='text/javascript';
s.async=true;
s.src='https://example.com/bundles.js';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
)();
var inverval = setInterval(hideClass, 100);
function hideClass () {
if ($(".class").hide().length > 0) clearInterval(inverval);
}
DigitalData.push({'event':Module, 'eventLabel':'Page'});
如果这是你唯一的选择,那么也许你做错了什么。不管怎样,让我们看看。。。只有当两个事件都发生时。
var HandleTwoEvents = function (key1, key2) {
this.count = 0;
this.pack = [];
$self = this;
this.startListening = function(fn) {
fn = fn || function () {}
window.addEventListener(key1, function (ev) {
if ($self.pack.indexOf(key1) < 0) {
$self.pack.push(key1);
$self.count++;
if ($self.count == 2) {
fn();
$self.count = 0;
}
}
console.log(key1, ev);
});
window.addEventListener(key2, function (ev) {
if ($self.pack.indexOf(key2) < 0) {
$self.pack.push(key2);
$self.count++;
if ($self.count == 2) {
fn();
$self.count = 0;
}
}
console.log(key2, ev);
});
}
}
原谅我,我总是用这个功能来创建事件
function createEvent(name, obj) {
var evt = document.createEvent("Event");
evt.initEvent(name, true, true);
evt.data = obj;
dispatchEvent(evt);
}
现在,要记录这两个事件。。。
var both = new HandleTwoEvents("EventKeyOne", "EventKeyTwo");
both.startListening(function () {console.log("This means that both Events have taken place")});
现在,让我们测试一下。。。
createEvent("EventKeyOne", {});
//key, data are the arguments ... function defined in startListening above does not execute, and upon inspection, both.count is seen to be 1
createEvent("EventKeyTwo", {});
//Now, function executes.
//It also works if "EventKeyTwo" is raised before "EventKeyOne"
快乐编码!
附言:我相信有一种更好的方法来处理$self变量的使用,我想还有一些函数绑定。我从来没学过。
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 执行模块时发送事件
- 将事件发送到javascript文档的react本机模块是否正确
- 在我的JavaScript模块中绑定一个点击事件
- NaCl中的模块加载进度事件,manifest_version=2,没有内联javascript
- 试图通过模块模式在DOM元素上实现change()事件
- 如何用模块模式扩展javascript中的事件委派
- 如何使用RequireJS进行跨模块回调/事件处理
- 其他模块中的节点事件发射器
- 在模块之间共享的事件发射器
- 跨多个角度模块共享数据、事件
- 使用 on nodejs 从另一个模块捕获事件
- 角度模块中的全局通信:事件总线或调解器模式/服务
- 在模块化 JavaScript 中调用事件
- 如何在创建后的dojoAMD模块中调用按钮点击事件
- 在nodejs express模块中处理所有事件之前发送响应
- Node.JS+Socket.io,将套接字事件处理程序移动到外部模块
- Dojo'中的按键事件;s在模块上
- sitefinity 6-事件模块错误javascript
- 使用模块模式的变体附加javascript事件时出现问题