link元素上的click()返回一个TypeError..为什么

click() on a link element returns a TypeError ... why?

本文关键字:一个 TypeError 为什么 返回 click 元素 link      更新时间:2023-09-26

我试图弄清楚为什么在<a>标记元素上执行click((函数会返回'undefined_method'的TypeError。例如,请访问此页面:http://http://www.google.com/#&q=测试。现在,这个页面上的每个搜索结果都有一个类名"l",所以如果我要求:

document.getElementsByClassName('l')

我得到了所有搜索结果<a>标签的列表。从逻辑上讲,如下索引这个数组会给我一个特定的<a>标签:

document.getElementsByClassName('l')[0]

但是,如果我想点击那个链接怎么办?我希望以下能起作用

document.getElementsByClassName('l')[0].click()

但我得到的却是TypeError"undefined_method"。

为什么?我该如何激活此链接?

thx

如果您想将点击事件分派到DOM中,则必须对兼容的浏览器使用W3C DOM dispatchEvent方法,对其他浏览器使用MS fireEvent方法。某些浏览器可能不支持这两种功能。

如果你想处理HTML5浏览器,那么你可以调用元素的点击方法,但你必须首先测试支持,如果浏览器没有响应,不要感到惊讶。大多数人认为以程序方式激发元素侦听器/处理程序是件坏事。

在这种情况下,最好的方法可能是如Zhehao Maoto所说,将window.location属性设置为A元素的href,或者让用户点击他们想要的链接,让HTML完成它的工作。

编辑

测试表明,IE支持A元素上的click,从而触发click处理程序并跟踪链接(如果处理程序没有返回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(("方法。如果你想以编程方式遵循链接,最简单的方法就是这样

window.location = a.href; // assuming a is an anchor object

这将获取链接的url(href属性(,并通过设置window.location将浏览器重定向到该位置。

在链接上调用.click()方法(我相信(将无效,除非操作绑定到onclick事件。你想要类似的东西:

document.getElementsByClassName('l')[0].onclick();

如果你想做的是跟随链接,而不是激活onclick操作,请执行以下操作:

window.location.href = document.getElementsByClassName('l')[0].getAttribute('href');