我需要与自己的事件类似的功能,例如Hangout API(可能还有许多其他API)。
例如,是否有一个事件:onApiReady,在API初始化时调用。
我找到了一个很棒的教程 - > http://www.nczonline.net/blog/2010/03/09/custom-events-in-javascript/但不知道如何让你创建和回忆旋转每个对象的事件。
问候。
答案 0 :(得分:1)
您必须在脚本文件之前粘贴以下代码:
function EventTarget(){
this._listeners = {};
}
EventTarget.prototype = {
constructor: EventTarget,
addListener: function(type, listener){
if (typeof this._listeners[type] == "undefined"){
this._listeners[type] = [];
}
this._listeners[type].push(listener);
},
fire: function(event){
if (typeof event == "string"){
event = { type: event };
}
if (!event.target){
event.target = this;
}
if (!event.type){ //falsy
throw new Error("Event object missing 'type' property.");
}
if (this._listeners[event.type] instanceof Array){
var listeners = this._listeners[event.type];
for (var i=0, len=listeners.length; i < len; i++){
listeners[i].call(this, event);
}
}
},
removeListener: function(type, listener){
if (this._listeners[type] instanceof Array){
var listeners = this._listeners[type];
for (var i=0, len=listeners.length; i < len; i++){
if (listeners[i] === listener){
listeners.splice(i, 1);
break;
}
}
}
}
};
然后,包括这个
var target = new EventTarget();
function handleEvent(event){
alert("API is ready ;)");
};
target.addListener("onApiReady", handleEvent);
位于脚本的顶部。
然后,将以下代码放在API的末尾或初始化时。
target.fire("onApiReady");
的jsfiddle: http://jsfiddle.net/8nYfK/5/ 。 (在我的演示中,我使用setTimeout
来模拟脚本加载)