【问题标题】:IE8 - JavaScript dropdown onchange calling "role()" cause an errorIE8 - JavaScript 下拉 onchange 调用“role()”导致错误
【发布时间】:2010-12-26 22:29:27
【问题描述】:

我实际上是在为 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 警报。而且,如果我尝试从“rolea()”调用“role()”,它也可以工作。

【问题讨论】:

    标签: javascript internet-explorer-8


    【解决方案1】:

    IE8支持辅助技术,通过节点的“role”和“aria”属性定义辅助功能。 Role 是 IE 中的保留字,位于 DOM 范围内。

    如果您执行&lt;select onchange="alert(typeof(role))" name="select1"&gt;,您将看到这是一个字符串。尝试将字符串作为函数执行会导致错误。 (要使警报起作用,请删除您的角色函数声明并查看它的实际效果。

    你可以在这里阅读更多http://dev.w3.org/html5/spec/Overview.html#annotations-for-assistive-technology-products-aria

    【讨论】:

    • 我本来希望在 IE8“IE8 标准模式”中这种 hacky magical 范围属性的东西会消失。呃……好吧。
    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 2015-04-17
    • 2020-05-29
    • 2017-06-25
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多