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> 

그리고 다른 하나는 자바 스크립트 : 파이어 폭스, 사파리, IE, 크롬에

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') ; } 

내 스크립트 작업 좋아요. 하지만 Opera에서 작동하지 않았습니다. & 일부 Android 브라우저. 내 스크립트의 문제점은 무엇입니까?

누구든지이 문제를 해결할 수 있습니까?

+0

Opera에서 콘솔을 확인 했습니까? –

+2

'window.onload = function() {...};' –

+0

@ShadowWizard : 질문자는 '지연'으로 인해 필요하지 않게 될 것이라고 기대할 것입니다. 왜 필요한지에 대한 설명이 좋습니다. –

답변

2

스크립트 태그에 defer='defer'을 추가하면 실제로 페이지가 완전히로드 될 때까지 기다려야하지만 현재는 모든 브라우저가 지원하지는 않습니다. 즉, 코드를 무시할 때 요소가 존재하지 않을 수 있습니다. 실행됩니다.

전체 브라우저 목록은 here으로 볼 수 있습니다. 스냅 샷 :

당신은 아마 오페라 오페라 미니의 이전 버전을 가지고, 따라서 그것은 작동하지 않았다.

이 그냥 모든 브라우저에서 작동하는 아주 기본적인 window.onload를 사용하여 안전하게 플레이 해결하려면

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

다른 방법 맨 끝에서 JS 파일에 참조 스크립트 태그를 배치하는 것 </body> 태그 바로 앞에 - defer이 있거나없는 문서의

관련 문제