DOMレベル0イベントハンドラーとDOM2レベルイベントハンドラーIEイベントハンドラーをEventUtilオブジェクトにカプセル化して、クロスブラウザー効果を実現します。コードは次のとおりです。
var eventutil = {//イベントハンドルaddeventhandler:function(element、type、handler){if(element.addeventlistener){element.addeventlistener(type、handler、false);} else if(element.attachevent){element.attachvent( "on"+type、 "削除イベントハンドルremoverEventHandler:function(element、type、handler){if(element.removeeventlistener){element.removeeventlistener(type、handler、false);} else if(element.detachevent){element.detachevent( "on"+type、handler); getEvent:function(event){return event?event:window.event;}、//イベントのタイプgetType:function(event){return event.type;}、//イベントオブジェクトターゲットgetTarget:function(event){if(event.target){return event.target;} els {return event; (event){if(event.target){return event.target;} else {return event.srcelement;}}、//イベントオブジェクトターゲットgettarget:function(event.target){return event.target;} else {return event.srceement;}} (event.stoppropagation){event.stoppropagation();} else {event.cancelbubble = true;}}、//イベントデフォルトの動作防止default:function(event){if(event.preventdefault){event.preventdefault();} event. event.erturnvalue = false;}}}コードの練習中に、いくつかのエラーを犯したため、操作エラーが発生しました。それを記録し、私の記憶を深めます。
ハンドルを追加することは、パラメーターが難読化される場所です。まず、AddEventHandler(要素、タイプ、ハンドラー)のパラメーター、イベント、イベントの種類、およびイベントハンドリング関数ハンドラーに追加される要素を表します。後のAddEventLister(タイプ、ハンドラー、False)のハンドラーとFalse(泡立つ段階を表す)の位置を混乱させる傾向があります。
結果につながる:執筆プロセス中に、私はそれについて慎重に考え、AddEventHandlerが必要とするパラメーターを理解し、次にどの位置でどのパラメーターを使用するかを知りました。最後に、私はそれを正しく書きましたが、エラーを引き起こしませんでした。
解決策:理解し、覚えておいてください。
ieイベントハンドラー判断ブランチでは、actibleventとdetacheventが間違って綴られ、イベントが欠落しており、アタッチまたはデタッチのみが書かれています。
結果の原因:エラーはありませんが、AddEventHandlerとRemoveEventHandlerを使用してIEでイベントを追加または削除することは不可能です。
解決策:もっと練習して覚えておいてください。 AttachEventとDetachevent。
iEイベントハンドラーadcationEventおよびDetacheventのパラメーターに「オン」を追加するのを忘れました。 AttachEvent(タイプ、ハンドラー)として書かれています。実際、正しいものはAttachEvent( "on"+Type、Handler)である必要があります。また、Dom0レベルのイベント処理の判断ブランチがあることも忘れていました。
結果の原因:同様に、IEイベント処理は互換性がありません。 IEでカプセル化されたメソッドを使用してイベントを追加または削除することは成功できません。
解決策:覚えておいてください。別の注意事項:要素["on"+タイプ]は、Dom0レベルのイベントで使用されます。たとえば、要素["on"+"click"]は、ements.onclickと同等です。
deventイベントをブロックするときのPreventDefaultのデフォルトの動作など、最後の属性も最後にコンマを追加して追加されます。
PreventDefault:function(event){if(event.preventdefault){event.preventdefault();} else {event.returnvalue = false;}}、//最後のプロパティPreventDefaultは完了後にコンマとともに追加されます、エラーが発生します}}結果を引き起こします:IEで実行するときにエラーが報告されました(event.jsの行54は最後のコンマの次の行です。
解決策:間違いなく、最後のコンマを削除するだけです。
curtingそれはまだつづりのエラーです。 IEのプロパティCancelBubbleは、イベントがバブルアップを防ぐことを防ぎます。これは、CancelBubblesとして書かれているもう1つのSで書かれています。
結果:エラーは報告されていませんが、IEのイベントが泡立っていないことを防ぐことはできません。
解決策:それを元に戻します
上記は、JavaScriptがeditorによってdom Eventハンドラーをeaditorによって導入されたJSにカプセル化する低レベルのエラー問題です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!