Como simular clique na âncora com um texto específico usando javascript em GreaseMonkey?

StackOverflow https://stackoverflow.com/questions/1244222

  •  12-09-2019
  •  | 
  •  

Pergunta

Suponha que eu carregar uma página que contém o seguinte âncora:

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

O que eu quero é: assim que a página é carregada, eu quero gerar onClick para essa âncora que tem texto como "Link"

.

Note que a âncora não contém qualquer id ou nome associado a ele. Assim document.getElementById ou document.getelementbyname não vai funcionar.

Foi útil?

Solução

Como você está usando Greasemonkey você deve ser capaz de usar XPath para selecionar o link em questão usando um de seus atributos HTML:

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

Outras dicas

Aqui está o que pessoas parecem fazer ser capazes de desencadear genericamente um evento click no Firefox. Estendem-se o protótipo HTMLAnchorElement com uma função click(), assim:

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

Consulte MDC para initMouseEvent() .

Se você tem jQuery, você pode também verificar para fora trigger() .

A solução (que Tomalak ligados a) a partir de https: //developer.mozilla. org / en / DOM / event.initMouseEvent trabalhou muito para mim, e não requer protótipo ou 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");
  }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top