1

假设我加载了一个包含以下锚点的网页:

<a class="someClass" href="#" onClick="gotoPage('http://somepage.org')">Link</a>

我想要的是:加载页面后,我想为该锚点生成 onClick,该锚点的文本为“链接”。

请注意,锚点不包含任何与其关联的 id 或名称。因此 document.getelementbyid 或 document.getelementbyname 将不起作用。

4

3 回答 3

3

以下是人们似乎 能够click在 Firefox中一般触发事件的方法。他们用一个函数扩展HTMLAnchorElement原型,如下所示:click()

HTMLAnchorElement.prototype.click = function() {
  var evt = this.ownerDocument.createEvent('MouseEvents');
  evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
  this.dispatchEvent(evt);
}

请参阅MDC 了解initMouseEvent().

如果您有 jQuery,您还可以查看trigger().

于 2009-08-07T12:28:33.560 回答
2

当您使用 Greasemonkey 时,您应该能够使用 XPath 使用它的 HTML 属性之一来选择有问题的链接:

http://diveintogreasemonkey.org/patterns/match-attribute.html

于 2009-08-07T12:32:02.890 回答
1

来自https://developer.mozilla.org/en/DOM/event.initMouseEvent的解决方案(Tomalak 链接到)对我来说非常有用,而且它不需要原型或 jquery。

function simulateClick() {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var cb = document.getElementById("checkbox"); 
  var canceled = !cb.dispatchEvent(evt);
  if(canceled) {
    // A handler called preventDefault
    alert("canceled");
  } else {
    // None of the handlers called preventDefault
    alert("not canceled");
  }
}
于 2009-09-28T10:57:42.007 回答