Javascriptを初めて使用しています。私は実際にイベント処理に関するコードに遭遇しています。コードはこちらですJavascriptでのイベント処理に関する混乱
//This generic event handler creates an object called eventHandler
var etHandler = {};
if (document.addEventListener) {
//eventHandler object has two methods added to it, add()and remove(),
etHandler.add = function(element, eventType, eventFunction) {
/**
* The add method in each model determines whether the event type is a load event, meaning that
* the function needs to be executed on page load.
*/
if (eventType == "load") {
.......
}
};// end of eventHandler.add = function()
etHandler.remove = function(element, eventType, eventFunction) {
element.detachEvent("on" + eventType, eventFunction);
}; //end of etHandler.remove = function()
}
function sendAlert() {
alert("Hello");
} //end of sendAlert()
function startTimer() {
var timerID = window.setTimeout(sendAlert,3000);
}//end of startTimer()
var mainBody = document.getElementById("mainBody");
etHandler.add(mainBody, "load", function() {
startTimer();
}
);
質問があります。空のオブジェクトを作成します。 var etHandler = {};
。大丈夫だよ。その後、条件if (document.addEventListener) {}
を確認しています。ドキュメントにイベントリスナーを追加しませんでしたが、この条件は真です。なぜこの条件が真実に戻っているのですか? 次に、etHandler.add = function(element, eventType, eventFunction) {}
と書きます。なぜ我々はetHandler.add
を書いているのですか? etHandlerオブジェクトには、作成時にプロパティがありません。それはヌルオブジェクトです。私たちはこの
var etHandler = {
add: function() {
},
remove: function(){
}
};
ようetHandler作成した場合はその後、我々はetHandler.add
を書くことができます。同様の問題は、etHandler.removeも同じです。
おかげ
HHmmフィーチャ検出については読んだが、本では、フィーチャ検出に 'typeof'を使用すると書かれていた。**ブラウザがサポートする を示すgetElementById()メソッドの存在をテストする。より高度なDOMインターフェイスを使用する場合は、次のコードを使用します。** 'if(typeof document.getElementById!=" undefined "){ alert(" getelembyidがサポートされています "); } else {アラート( "no getelembyid support"); } '。また書かれました**あなたはテスト中にtypeofの使用をスキップしたくなるかもしれませんが、 の例題のWebで機能テストが次のように見えるかもしれません:** continue .... – Basit
'if(document。 getElementById){...} '。 **残念ながら、この機能テストの方法は、テストのタイプほど信頼性がありません。問題 は短い構文でメソッドが実行されるということです。 typeofを省略すると、テストされているメソッドまたはプロパティ がデフォルトで0またはfalseを返し、テストが失敗します。言い換えれば、 は、ブラウザがそのメソッドまたはプロパティをサポートしていないように見えます。 したがって、typeofを使用したテストはより安全で信頼性が高くなります。だから私は反論したのです... – Basit
あなたはまた言った** 'etHandler.add = function(element、eventType、eventFunction)'はaddメソッドを定義し、それを同時に作成します。それは基本的にあなたの例と同じです。**あなたはシーンの裏側で言うことを意味し、JavaScriptはこのようなものを作成しますか? 'var etHandler = {add:function(){}、remove:function(){}};'それは? – Basit