javascript - 链接元素上的 click() 返回 TypeError ... 为什么?

标签 javascript dom

我想弄清楚为什么要在 <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/

相关文章:

javascript - 对于特定模型,如何始终在编辑模式下打开表单

javascript - Angular 模板仅从 MeteorJS 的根目录加载

javascript - JS 中 new Date() 的问题

jquery - 如何在Python中将HTML字符串解析为HTML DOM元素?

javascript - Jquery添加到下拉列表

javascript - IE8 上的 Jquery jstorage 问题?

javascript - 使用 angular-google-maps 点击隐藏所有信息窗口

javascript - jQuery - 查找所有输入,除了从 div 降序的输入

javascript - 使用 Javascript window.open 和 jQuery 提交表单

java - 使用解析后的 Java DOM XML 中的元素添加新元素