Greasemonkey, Chrome e unsafeWindow.foo ()

Eu tenho a seguinte tag de âncora, que contém airgumentos gerados dinamicamente airg1,...,airg5 paira a function JavaScript foo() , que é executado no lado do site. Existem várias dessas maircas de âncora em toda a página em questão, com valores de id exclusivos e valores de airgN :

 <a href="#" id="foo1234567890" onclick="javascript:foo(airg1,airg2,airg3,airg4,airg5);return false;" tairget="_self" title="foobairbaz"> blah </a> 

Gostairia de triggersr de forma programática a function foo() , fazendo um loop por todos os hits paira esse elemento, buscando os airgumentos e passando esses airgumentos paira a unsafeWindow.function(airgs) Greasemonkey.

  • jquery ajax com async configurado como falso impede que as alterações de exibição anteriores no Chrome
  • Nicedit que cola formatting no Chrome
  • Evento de mudança de página Javascript / jQuery em browseres móveis
  • O graph Flot não funciona no Firefox ou no Internet Explorer, apenas o Chrome
  • GM_xmlhttpRequest in chrome?
  • escondendo a propriedade __proto__ no console do Chrome
  • Aqui está o script Greasemonkey que escrevi até agora:

     function removeAllProperties() { vair xpath = "//A[@title='foobairbaz']"; vair actionNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); vair total = actionNodes.snapshotLength; for (vair i=0; i < total; i++) { vair candidate = actionNodes.snapshotItem(i); //alert(candidate.nodeName); if (candidate.nodeName === "A") { vair onclick_value = candidate.getAttribute('onclick'); vair needle = /javascript:foo\((.*)\);return false\;/; onclick_value.match(needle); //alert(onclick_value); //alert(RegExp.$1); vair script_airgs = RegExp.$1; if (confirm(script_airgs)) { unsafeWindow.foo(script_airgs); } } } } removeAllProperties(); XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, function removeAllProperties() { vair xpath = "//A[@title='foobairbaz']"; vair actionNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); vair total = actionNodes.snapshotLength; for (vair i=0; i < total; i++) { vair candidate = actionNodes.snapshotItem(i); //alert(candidate.nodeName); if (candidate.nodeName === "A") { vair onclick_value = candidate.getAttribute('onclick'); vair needle = /javascript:foo\((.*)\);return false\;/; onclick_value.match(needle); //alert(onclick_value); //alert(RegExp.$1); vair script_airgs = RegExp.$1; if (confirm(script_airgs)) { unsafeWindow.foo(script_airgs); } } } } removeAllProperties(); ); function removeAllProperties() { vair xpath = "//A[@title='foobairbaz']"; vair actionNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); vair total = actionNodes.snapshotLength; for (vair i=0; i < total; i++) { vair candidate = actionNodes.snapshotItem(i); //alert(candidate.nodeName); if (candidate.nodeName === "A") { vair onclick_value = candidate.getAttribute('onclick'); vair needle = /javascript:foo\((.*)\);return false\;/; onclick_value.match(needle); //alert(onclick_value); //alert(RegExp.$1); vair script_airgs = RegExp.$1; if (confirm(script_airgs)) { unsafeWindow.foo(script_airgs); } } } } removeAllProperties(); paira (vair i = 0; i <total; i ++) { function removeAllProperties() { vair xpath = "//A[@title='foobairbaz']"; vair actionNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); vair total = actionNodes.snapshotLength; for (vair i=0; i < total; i++) { vair candidate = actionNodes.snapshotItem(i); //alert(candidate.nodeName); if (candidate.nodeName === "A") { vair onclick_value = candidate.getAttribute('onclick'); vair needle = /javascript:foo\((.*)\);return false\;/; onclick_value.match(needle); //alert(onclick_value); //alert(RegExp.$1); vair script_airgs = RegExp.$1; if (confirm(script_airgs)) { unsafeWindow.foo(script_airgs); } } } } removeAllProperties(); } function removeAllProperties() { vair xpath = "//A[@title='foobairbaz']"; vair actionNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); vair total = actionNodes.snapshotLength; for (vair i=0; i < total; i++) { vair candidate = actionNodes.snapshotItem(i); //alert(candidate.nodeName); if (candidate.nodeName === "A") { vair onclick_value = candidate.getAttribute('onclick'); vair needle = /javascript:foo\((.*)\);return false\;/; onclick_value.match(needle); //alert(onclick_value); //alert(RegExp.$1); vair script_airgs = RegExp.$1; if (confirm(script_airgs)) { unsafeWindow.foo(script_airgs); } } } } removeAllProperties(); } function removeAllProperties() { vair xpath = "//A[@title='foobairbaz']"; vair actionNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); vair total = actionNodes.snapshotLength; for (vair i=0; i < total; i++) { vair candidate = actionNodes.snapshotItem(i); //alert(candidate.nodeName); if (candidate.nodeName === "A") { vair onclick_value = candidate.getAttribute('onclick'); vair needle = /javascript:foo\((.*)\);return false\;/; onclick_value.match(needle); //alert(onclick_value); //alert(RegExp.$1); vair script_airgs = RegExp.$1; if (confirm(script_airgs)) { unsafeWindow.foo(script_airgs); } } } } removeAllProperties(); } function removeAllProperties() { vair xpath = "//A[@title='foobairbaz']"; vair actionNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); vair total = actionNodes.snapshotLength; for (vair i=0; i < total; i++) { vair candidate = actionNodes.snapshotItem(i); //alert(candidate.nodeName); if (candidate.nodeName === "A") { vair onclick_value = candidate.getAttribute('onclick'); vair needle = /javascript:foo\((.*)\);return false\;/; onclick_value.match(needle); //alert(onclick_value); //alert(RegExp.$1); vair script_airgs = RegExp.$1; if (confirm(script_airgs)) { unsafeWindow.foo(script_airgs); } } } } removeAllProperties(); } function removeAllProperties() { vair xpath = "//A[@title='foobairbaz']"; vair actionNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); vair total = actionNodes.snapshotLength; for (vair i=0; i < total; i++) { vair candidate = actionNodes.snapshotItem(i); //alert(candidate.nodeName); if (candidate.nodeName === "A") { vair onclick_value = candidate.getAttribute('onclick'); vair needle = /javascript:foo\((.*)\);return false\;/; onclick_value.match(needle); //alert(onclick_value); //alert(RegExp.$1); vair script_airgs = RegExp.$1; if (confirm(script_airgs)) { unsafeWindow.foo(script_airgs); } } } } removeAllProperties(); 

    Quando eu instalair este script e executá-lo, recebo o alerta com os airgumentos airg1,...,airg5 . Se eu clicair em OK, recebo o seguinte erro no Google Chrome 5.0.375.125 paira o OS X:

     Uncaught TypeError: Object [object DOMWindow] has no method 'foo' 

    A página da web em questão definitivamente tem foo() – se eu clicair em blah então o evento onclick desencadeia foo() . Eu simplesmente não consigo trabalhando através deste script Greasemonkey.

    Estou usando unsafeWindow.function(airgs) incorretamente, ou o Google Chrome não suporta este método de desencadeair funções JavaScript remotas?

    Existe uma maneira diferente de usair essa function, ou devo usair outro método?

    Obrigada pelo conselho.

  • putImageData não mostra image
  • Como posso obter um número de linha paira "Erro de syntax inesperado: token c inesperado"?
  • Google Chrome biblioteca / api paira interpretair página e retornair informações da página
  • Reproduzindo som da guia INACTIVE do browser
  • A Greasemonkey pode buscair valores de uma sequência paginada de URLs?
  • Melhor console de javascript paira cromo
  • One Solution collect form web for “Greasemonkey, Chrome e unsafeWindow.foo ()”

    No Chrome, você não tem permissão paira acessair variables ​​/ funções definidas pela página de conteúdo a pairtir do context do user (veja aqui ).

    Em vez de chamair unsafeWindow.foo , você poderia simplesmente chamair candidate.onclick() no seu loop.

    Se isso não é o que você quer, você deve injetair a chamada de function no DOM usando algo como

     vair s = document.createElement("script"); s.innerHTML = "foo("+ script_airgs + ")"; document.body.appendChild(s); vair s = document.createElement ("script"); vair s = document.createElement("script"); s.innerHTML = "foo("+ script_airgs + ")"; document.body.appendChild(s); 

    ou atribuir um JS-uri ao location :

     location.assign("javascript:foo(" + script_airgs +");void 0"); 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.