ホームページ > ウェブフロントエンド > jsチュートリアル > window.addeventjs イベント駆動型関数コレクション addEvent など _javascript スキル

window.addeventjs イベント駆動型関数コレクション addEvent など _javascript スキル

WBOY
リリース: 2016-05-16 19:06:07
オリジナル
1415 人が閲覧しました

// ディーン・エドワーズ著、2005 年
// ティノ・ザイデル、マティアス・ミラー、ディエゴ・ペリーニからの情報提供

// http://dean.edwards.name/weblog/2005/10/add- event/

function addEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else {
// 各イベント ハンドラーに一意の ID を割り当てます
if (!handler.$$guid) handler.$$guid = addEvent.guid ;
// 要素
if (!element.events) element.events = {}; のイベントタイプのハッシュテーブルを作成します。
// 要素/イベントのペアごとにイベント ハンドラーのハッシュ テーブルを作成します
var handlers = element.events[type];
if (!handlers) {
handlers = element.events[type] = {};
// 既存のイベント ハンドラーを保存します(存在する場合)
if (element["on" type]) {
handlers[0] = element["on" type];
}
}
// イベント ハンドラーをハッシュ テーブルに保存します
handlers[handler.$$guid] = handler;
// すべての作業を行うためにグローバル イベント ハンドラーを割り当てます
element["on" type] = handleEvent;
}
};
// 一意の ID の作成に使用されるカウンター
addEvent.guid = 1;

function removeEvent(element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else {
// ハッシュテーブルからイベントハンドラーを削除
if (element.events && element.events[type]) {
delete element.events[type][handler.$ $guid];
}
}
};

function handleEvent(event) {
var returnValue = true;
// イベント オブジェクトを取得します(IE はグローバル イベント オブジェクトを使用します)
event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
// イベント ハンドラーのハッシュ テーブルへの参照を取得します
var handlers = this.events[event.type];
// 各イベント ハンドラを実行します
for (var i in handlers) {
this.$$handleEvent = handlers[i];
if (this.$$handleEvent(event) === false) {
returnValue = false;
}
}
return returnValue;
};

function fixEvent(event) {
// W3C 標準 イベント メソッドを追加
event.preventDefault = fixEvent.preventDefault;
event.stopPropagation = fixEvent.stopPropagation;
イベントを返す;
};
fixEvent.preventDefault = function() {
this.returnValue = false;
};
fixEvent.stopPropagation = function() {
this.cancelBubble = true;
};

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート