2013-10-13 4 views
0

Я должен подать. Один HTML:Как определить событие JavaScript?

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv='Content-type' content='text/html; charset=utf-8'> 
    <title>JavaScriptSolution</title> 
    <script src='./script.js' charset='utf-8' defer='defer'></script> 
</head> 
<body> 
<input id='A1' value='On Keydown' style='width:100px; height:50px; margin:30px;'/> 

<input id='A2' value='On Keyress' style='width:100px; height:50px; margin:30px;'/> 

<input id='A3' value='On Keyup' style='width:100px; height:50px; margin:30px;'/> 

<input id='A4' value='On Focus' style='width:100px; height:50px; margin:30px;'/> 

<input id='A5' value='On Blur' style='width:100px; height:50px; margin:30px;'/> 

<div id='A6' style='width:100px; height:50px; margin:30px;'> 
    On Click 
</div> 
<div id='A7' style='width:100px; height:50px; margin:30px;'> 
    On Mouse Move 
</div> 
<div id='A8' style='width:100px; height:50px; margin:30px;'> 
    On Mouse Over 
</div> 
<div id='A9' style='width:100px; height:50px; margin:30px;'> 
    On Mouse Out 
</div> 


</body> 
</html> 

И другой JavaScript:

function byid(id_name) 
{ 
    return document.getElementById(id_name); 
} 

byid('A1').onkeydown=function a1(){ alert('On Keydown'); } 
byid('A2').onkeypress=function a2(){ alert('On Keypress') ; } 
byid('A3').onkeyup=function a3(){ alert('On Keyup') ; } 
byid('A4').onfocus=function a4(){ alert('On Focus'); } 
byid('A5').onblur=function a5(){ alert('On Blur') ; } 
byid('A6').onclick=function a6(){ alert('On Click') ; } 
byid('A7').onmousemove=function a7(){ alert('On Mouse Move') ; } 
byid('A8').onmouseover=function a8(){ alert('On Mouse Over') ; } 
byid('A9').onmouseout=function a9(){ alert('On Mouse Out') ; } 

Мой сценарий работы большой на Firefox, Safari, IE, Chrome. Но не работает на Opera & Некоторые Android-браузеры. Что случилось в моем скрипте?

Может ли кто-нибудь решить эту проблему?

+0

Вы проверили консоль в Opera? –

+2

Оберните его внутри 'window.onload = function() {...};' –

+0

@ShadowWizard: задающий вопрос будет ожидать, что 'defer' предотвратит это от необходимости - объяснение, почему это необходимо, было бы хорошо. –

ответ

2

Добавляя defer='defer' к тегу сценария, нужно действительно дождаться, пока страница будет полностью загружена, но поскольку она стоит сейчас, даже в эти дни не все браузеры поддерживают ее, то есть они будут игнорировать ее, в результате чего элементы не будут существовать, когда код выполняется.

Полный список поддерживаемых браузеров here. Снимок:

Вы, вероятно, старая версия Opera или Opera Mini, поэтому он не работает.

Чтобы решить эту проблему просто играть безопасно, используя очень простой window.onload, который работает на всех браузерах:

window.onload = function() { 
    byid('A1').onkeydown=function a1(){ alert('On Keydown'); } 
    byid('A2').onkeypress=function a2(){ alert('On Keypress') ; } 
    //... 
}; 

Альтернативный способ будет поместить тег сценария со ссылкой на файл JS в самом конце документа непосредственно перед тегом </body> - с или без defer.

Смежные вопросы