2009-08-07 5 views
1

Supposons que je charger une page Web qui contient l'ancre suivante:Comment simuler un clic sur l'ancre avec un texte spécifique en utilisant javascript dans GreaseMonkey?

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

Ce que je veux est: dès que la page est chargée, je veux générer onClick pour ce point d'ancrage qui a le texte comme « Link ».

Notez que l'ancre ne contient aucun ID ou nom associé. Ainsi, document.getelementbyid ou document.getelementbyname ne fonctionnera pas.

Répondre

3

Voici ce que people seemto do pour déclencher de manière générique un événement click dans Firefox. Ils étendent le prototype HTMLAnchorElement avec une fonction click(), comme ceci:

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

Voir MDC for initMouseEvent(). Si vous avez jQuery, vous pouvez également vérifier trigger().

1

La solution (qui Tomalak liée à) de https://developer.mozilla.org/en/DOM/event.initMouseEvent travaillé super pour moi, et il ne nécessite pas de prototype ou de 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"); 
    } 
} 
Questions connexes