我实际上正在调试 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/