2012-05-04 8 views
3

私はこのように私のhtmlページを書きました:"DomContentLoaded"がブラウザで動作していませんか?

<div> 
    <img src="Natural1.jpg" id="img1" > 
<audio src="sound.mp3" id="audio1" ></audio> 
</div> 

そして、私のjavascriptのファイルはこれです:

function init(){ 
    audio1 = document.getElementById("audio1"); 
    var img1 = document.getElementById("img1"); 
    img1.addEventListener("click", imgClick, false); 
} 
function imgClick(){ 
    if(audio1.paused){ 
     audio1.play(); 
    } 
    else{ 
     audio1.pause(); 
    } 
} 
document.addEventListener('DomContentLoaded', init, false); 

私はchrome12で、スクリプトは最初document.addEventListenerメソッドを実行することを実行しますが、それは行きませんでしたinitメソッドに、なぜか? 私はattachEventメソッドを試しましたが、IE8ではaddEventListenerでしたが、それでも解決しません。 私のコードに何が問題なのですか?

答えて

7

イベント名のケーシングになる可能性があります。代わりに次の方法をお試しください:

document.addEventListener('DOMContentLoaded', init, false); 

私は次のことをテストした:

オンjsbinで、後者のイベントは単独で発生しました。 IE8ではこのイベントが発生しないため、この警告は表示されません。代わりに、IE9 and IE10から成功を得るでしょう。

例:DOMContentLoadedためhttp://jsbin.com/ocidok/edit#javascript,html

ブラウザのサポートがMozilla Developer Networkにカタログされます。今日のように、このイベントには、次のブラウザでのみ利用可能です:

enter image description here

+1

「DOMContentLoaded」が獲得しました彼はIE版で彼のために働いていませんでした。IE 9版でIEに入ったので、IE 8版を試しました。 – gdoron

+0

@gdoron彼は質問に「google-chrome」とタグ付けしたので、彼は彼が使ったブラウザだと仮定しました。私の悪い。 – Sampson

+0

あなたは正しいのですが、私はあなたを賞賛しましたが、IEであなたのコードをテストすると、彼はすでにそれがうまくいかず、不平を言うでしょう::) **私はIE8のaddEventListenerの代わりにattachEventメソッドを試しました**しかし、それは動作しません盗む。私のコードの何が間違っていますか? – gdoron

0

JavaScriptのイベント名、大文字と小文字を区別し文字列です。したがって、大文字と小文字はで、はイベント名に入れ替えられません。したがって、名前を'DomContentLoaded'から'DOMContentLoaded'に変更すると、Chromeで問題が解決されます。

IE 8の場合:方法はありません。他のHTML5イベントの中でDOMContentLoadedを実装したIEの最初のバージョンはバージョン9なので、私が言うことができるのは次のとおりです:ブラウザをアップデートしてください!また、の16-version-of-date Chrome 12を使用していることに気付きました。真剣に、両方のブラウザを更新する必要があります。古くなったブラウザは深刻なセキュリティリスクを負う Chromebookのユーザーとしては、コンピュータセキュリティにとって最も重要なコンポーネント、ブラウザのシームレスな性質のため、最新のものを維持することができます。

関連する問題