2009-08-07 12 views
1

nehme ich eine Webseite laden, die die folgenden Anker enthält:Wie simulieren Sie klicken Sie auf Anker mit spezifischem Text mit Javascript in GreaseMonkey?

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

Was ich will, ist: Sobald die Seite geladen ist, möchte ich onClick für diesen Anker erzeugen, die Text als „Link“ hat.

Beachten Sie, dass der Anker keine ID oder einen zugehörigen Namen enthält. Daher wird document.geelementbyid oder document.geelementbyname nicht funktionieren.

Antwort

3

Hier ist, was people seemto do in der Lage sein, generisch ein click Ereignis in Firefox auszulösen. Sie erweitern den HTMLAnchorElement Prototyp mit einer click() Funktion, etwa so:

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() See. Wenn Sie jQuery haben, können Sie auch trigger() ausprobieren.

1

Die Lösung (die Tomalak verknüpft) von https://developer.mozilla.org/en/DOM/event.initMouseEvent gearbeitet Großartig für mich, und es erfordert keinen Prototyp oder 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"); 
    } 
} 
Verwandte Themen