2012-02-29 13 views
4

JQueryを使わずにキーオブジェクトイベントリスナーを追加したいと思います。Javascript:ドキュメントオブジェクトにイベントリスナーを追加する最も早い瞬間

リスナーで私はDOMにアクセスしません。私がDOMから必要とするのは、ドキュメントオブジェクトだけです。私は特定のキーの押下を無効にしたいだけです。

スクリプトで直接呼び出すことは安全ですか(スクリプトが読み込まれるときを意味します)、またはonloadコールバック(または別のもの)を使用する必要がありますか?

ありがとうございます。

+0

興味深いことに、私はいつも 'document'がいつも利用可能であると推測していたので、直接スクリプトを呼び出すことができるはずですが、参照付きの回答を見るのは興味深いでしょう(確認または拒否のどちらかです) – julioolvr

+0

@ julio.olvrこれは常に「利用可能」でなければなりません。それ以外の場合、それに対するバインディング・イベントのバインディングは機能しません。しかし、私は同意する、非常に具体的な参考文献は、理解/完全さのためにうまくいくだろう。 – Snuffleupagus

答えて

4

documentオブジェクトは常に、スクリプトを配置する場所で使用できます。 DOMContentLoadedなどを待つ必要はありません。あなたの好きなときにリスナーを追加するだけです。

これは、ドキュメント内の要素には当てはまりません。

3

イベントDOMContentLoadedにのみバインドできます。それがjQueryのやり方です。

例:IEでは動作しません

document.addEventListener("DOMContentLoaded", function(){ 
    //Bind the key event here. 
}); 

document.attachEvent("DOMContentLoaded", function(){ 
    //Bind the key event here. 
}); 
+0

hmですが、ドキュメントオブジェクトが "DOMContentLoaded"イベントを追加するために利用可能な場合は、直接keydownイベントを追加できます。ドキュメントのほかにDOMには何も必要ありません。 – Ixx

+0

私が知る限り、DOMをロードすることはできません。 – cupcakes4life

+0

DOMは常にロードされます。質問は、私がそれを待つ必要があるかどうか(そしてコールバックで反応するか)、または読み込み/準備/呼び出される前にドキュメントオブジェクトを使用できるかどうかです。それは最新のようです。 – Ixx

0
document.onload = function() { 
     document.onkeydown = function() { 
     // disable key 

     }; 
    } 

が働く可能性がありますので、IEのために、あなたはこれを行うことができます。

+0

なぜオンロードが必要ですか?リスナーのDOMにアクセスしたくありません。 – Ixx

+0

まあ、そうではないかもしれません。私はそれを試してみてください。 – Tom

関連する問題