1

次のアンカーを含むWebページをロードするとします。

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

私が欲しいのは、ページがロードされるとすぐに、「リンク」としてテキストを持つこのアンカーのonClickを生成したいということです。

アンカーには、それに関連付けられたIDまたは名前が含まれていないことに注意してください。したがって、document.getelementbyidまたはdocument.getelementbynameは機能しません。

4

3 に答える 3

3

これは、Firefox で一般的にイベントをトリガーできるようにするために人々が 行っているように見えることです。次のように、プロトタイプを関数でclick拡張します。HTMLAnchorElementclick()

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 に答える