我想弄清楚为什么要在 <a>
上执行 click() 函数标记元素返回“undefined_method”的类型错误。例如,访问此页面:http://http://www.google.com/#&q=test .现在,这个页面上的每个搜索结果都有一个类名“l”,所以如果我要求:
document.getElementsByClassName('l')
我得到了所有搜索结果的列表 <a>
标签。从逻辑上讲,按如下方式索引这个数组会给我一个特定的 <a>
标签:
document.getElementsByClassName('l')[0]
但是,如果我想点击那个链接怎么办?我希望以下内容能够工作
document.getElementsByClassName('l')[0].click()
但是我得到了 TypeError 'undefined_method'。
为什么?我将如何激活此链接?
谢谢
最佳答案
如果您想将点击事件发送到 DOM 中,则必须使用 W3C DOM dispatchEvent兼容浏览器和 MS 的方法 fireEvent方法给别人。有些浏览器可能不支持。
如果你想对付HTML5浏览器,那么你可以调用元素的click方法,但是你必须先测试支持,如果浏览器没有响应,不要感到惊讶。大多数人认为以编程方式触发元素监听器/处理程序是一件坏事。
在这种情况下,最好的方法可能是如 Zhehao Maoto 所说,将 window.location 属性设置为 A 元素的 href,或者让用户点击链接他们想要并让 HTML 完成它的工作。
编辑
测试表明 IE 支持在 A 元素上单击,以便触发单击处理程序并跟踪链接(如果处理程序未返回 false)。在 Firefox 中,将调用处理程序但不会跟踪链接。
在 Chrome 中,A 元素除了按钮响应外什么都不做。 Opera 触发 A 的点击处理程序并点击链接。所以最重要的是支持非常不稳定(这并不奇怪)。
例如
<!-- Call click() on link to Google -->
<a href="#" onclick="
var el = document.getElementById('a0');
if ('click' in el) {
alert('found click\n' + el.click);
el.click();
}">Click link</a>
<!-- Call click on button with onclick handler -->
<a href="#" onclick="
var el = document.getElementById('b0');
if ('click' in el) {
alert('found click\n' + el.click);
el.click();
}">Click button</a>
<a href="http://www.google.com" id="a0">Google</a>
<button onclick="alert('click!!');" id="b0">button</button>
关于javascript - 链接元素上的 click() 返回 TypeError ... 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590625/