IE8 - выпадающий onchange JavaScript, вызывающий "role ()", вызывает ошибку - PullRequest
2 голосов
/ 15 декабря 2009

Я фактически отлаживаю приложение для IE8 (после IE6 IE7 теперь IE8). Я получил сообщение об ошибке в одном из моих интерфейсов, когда мы выполняли действие в раскрывающемся списке, и я удивился, почему этого не произошло раньше. Наконец я обнаружил, что выпадающий список (или выбор), вызывающий метод с именем « 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>

Если мы вызываем « role () », это не работает, и я получаю сообщение об ошибке: Линия: 18 Ошибка : объект не поддерживает это действие

Когда я вызываю " rolea () ", это работает, и появляется предупреждение JavaScript. И также, если я пытаюсь вызвать "role ()" из " rolea () ", это также работает.

1 Ответ

4 голосов
/ 15 декабря 2009

IE8 поддерживает вспомогательные технологии, которые определяют функции доступности с помощью атрибутов «role» и «aria» на узлах. Роль - зарезервированное слово в IE, внутри области DOM.

Если вы сделаете <select onchange="alert(typeof(role))" name="select1">, вы увидите, что это строка. Попытка выполнить строку как функцию вызывает ошибку. (Чтобы включить оповещение, удалите объявление своей функции роли и просмотрите его в действии).

Вы можете прочитать здесь больше http://dev.w3.org/html5/spec/Overview.html#annotations-for-assistive-technology-products-aria

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...