如何使用GreaseMonkey中的javascript模拟使用特定文本点击锚点?

时间:2009-08-07 11:19:14

标签: javascript anchor greasemonkey

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

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

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

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

3 个答案:

答案 0 :(得分:3)

以下是people seem to do能够在Firefox中一般触发click事件的内容。他们使用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 for initMouseEvent()

如果你有jQuery,你也可以查看trigger()

答案 1 :(得分:2)

当您使用Greasemonkey时,您应该能够使用XPath使用其中一个HTML属性选择相关链接:

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

答案 2 :(得分: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");
  }
}