2009-12-15 4 views
2

실제로 IE8 (IE6 이후, IE7 이제 IE8 이후) 용 응용 프로그램을 디버깅하고 있습니다. 나는 우리가 드롭 다운에 대한 조치를 취할 때 인터페이스 중 하나에서 버그를 받았으며 이전에 그런 일이 발생하지 않았는지 궁금해했습니다. 마지막으로 "role()"메서드를 직접 호출하는 드롭 다운 (또는 선택)이 지원되지 않음을 알게되었습니다.IE8 - JavaScript 드롭 다운 onchange "role()"오류 발생

이유를 아는 사람이 있습니까? 여기

버그의 예 :

우리가 호출하는 경우
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script type="text/javascript"> 
function rolea(dropdown){ 
    alert("value"); 
    //role(); 
} 

function role(){ 
    alert("value"); 
} 
</script> 
</head> 
<body> 

<select onchange="role()" name="select1"> 
    <option>a</option> 
    <option>b</option> 
</select> 
</body> 
</html> 

"역할()"가 작동하지 않습니다와 나는 오류가 나타납니다 : 라인 : 18 오류을 : 개체가 '아무튼 이 동작을 지원하지 않습니다.

"rolea()"이라고 부르면 작동하고 JavaScript 경고가 나타납니다. 또한 "rolea()"에서 "role()"을 호출하려고해도 작동합니다.

답변

4

IE8은 노드에서 "역할"및 "아리아"속성을 통해 액세스 가능성 기능을 정의하는 보조 기술을 지원합니다. 역할은 IE에서 DOM 범위 내에서 예약어입니다.

<select onchange="alert(typeof(role))" name="select1">을 입력하면이 문자열임을 알 수 있습니다. 문자열을 함수로 실행하려고하면 오류가 발생합니다. (경고 작업을하려면 역할 기능 선언을 제거하고 실제로 작동하는 것을 확인하십시오.)

여기에서 더 읽을 수 있습니다. http://dev.w3.org/html5/spec/Overview.html#annotations-for-assistive-technology-products-aria

+0

와우, 설명 주셔서 감사합니다. – Nordes

+0

IE8 "IE8 표준 모드"에서 이런 종류의 해킹 * 마법 * 범위 속성이 사라질 것이라고 예상했을 것입니다. 우 ... 오 잘. – scunliffe

관련 문제