javascript - IE8 - JavaScript 下拉 onchange 调用 "role()"导致错误

标签 javascript internet-explorer-8

我实际上正在调试 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()”,它也会起作用。

最佳答案

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

如果你这样做<select onchange="alert(typeof(role))" name="select1">你会看到这是一个字符串。尝试将字符串作为函数执行会导致错误。 (要使警报正常工作,请删除您的 Angular 色函数声明并查看它的实际效果)。

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

关于javascript - IE8 - JavaScript 下拉 onchange 调用 "role()"导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1909443/

相关文章:

javascript - SQL 外键类似 Meteor 中的行为 - MongoDB

css - IE7 和 IE8 中的响应式网站问题

angularjs - Angular $q .catch() 方法在 IE8 中失败

html - IE8 CSS 相对位置额外空格

javascript - 如何在服务器端渲染期间检查窗口/ block 宽度?

javascript - 如何在 VS Code 的 Angular 工作流程中使用 Pusher-JS?

javascript - Javascript 中 float 和整数的区别?

javascript - 无需修改 JavaScript 即可打印

css - 为什么与新版浏览器相比,旧版 IE 中的字母间距要宽得多?

html - 防止IE8使内容透明