繁体   English   中英

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

[英]How to simulate click on anchor with specific text using javascript in GreaseMonkey?

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

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

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

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

人们似乎 可以这样做 ,从而能够在Firefox中普遍触发click事件。 他们使用click()函数扩展了HTMLAnchorElement原型,如下所示:

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);
}

有关initMouseEvent()请参见MDC

如果您使用jQuery,则还可以签出trigger()

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

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

来自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");
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM