2012-05-04 4 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, но он не пошел почему? Я попробовал attachEvent метод вместо addEventListener в IE8, но он все еще этого не делает. что случилось с моим кодом?

ответ

7

Может быть оболочкой названия события. Вместо этого попробуйте следующее:

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

Удостоверьтесь, что это так. Я тестировал следующее:

document.addEventListener("DomContentLoaded", function(){ alert('Dom') }, false); 
document.addEventListener("DOMContentLoaded", function(){ alert('DOM') }, false); 

На jsbin, и последнее событие было поднято в одиночку. Обратите внимание, что IE8 не будет поднимать это предупреждение, так как это событие там не происходит. Вместо этого вы найдете успех от IE9 and IE10.

Пример: http://jsbin.com/ocidok/edit#javascript,html

Поддержка браузера для DOMContentLoaded каталогизирована на Mozilla Developer Network. На сегодняшний день, это событие доступно только в следующих браузерах:

enter image description here

+1

Следует отметить, что 'DOMContentLoaded' выиграл «Не работай для него в IE-версии, он попробовал« IE 8 », потому что попал в IE только в версии 9. [источник] (https://developer.mozilla.org/en/DOM/DOM_event_reference/DOMContentLoaded) – gdoron

+0

@gdoron Он отметил вопрос «google-chrome», поэтому я предположил, что это браузер, который он использовал. Виноват. – Sampson

+0

Вы правы, и я поддержал вас, но когда он проверит ваш код в IE, как будто он все сделал, он не сработает для него и не пожалуется ... :) 'Я попробовал метод attachEvent вместо addEventListener в ** IE8 ** , но он крадет не работает. что случилось с моим кодом? – gdoron

0

имена событий JavaScript являются с учетом регистра строки. Поэтому буквы капитала и строчные буквы: NOT взаимозаменяемы в названиях событий. Таким образом, изменение имени от 'DomContentLoaded' до 'DOMContentLoaded' устранит проблему - по крайней мере, в Chrome.

Что касается IE 8: Нет способа. Первой версией IE для реализации DOMContentLoaded среди других событий HTML5 была версия 9, поэтому все, что я могу сказать, это: Обновить браузер! Я также заметил, что вы используете 16-версию-out-of-date Chrome 12, я прав? Серьезно, оба браузера необходимо обновить. Устаревшие браузеры представляют серьезные угрозы безопасности. Хорошо, что я, как пользователь Chromebook, могу сохранить самый важный компонент для обеспечения безопасности компьютера - современный браузер ОЧЕНЬ легко благодаря его бесшовному характеру ...