如何使用Greasemonkey绕过javascript函数?

我想学习如何在Greasemonkey中创建一个脚本来修改页面中的变量或绕过延迟函数。

这是在页面中间找到的脚本:

 x300=100; function countdown() { x300--; if (x300 == 0) { document.getElementById('countdown').innerHTML = 'Proceed to URL - click here!'; } if (x300 > 0) { document.getElementById('countdown').innerHTML = 'You will be redirected in ' + x300 + ' seconds.'; setTimeout('countdown()',100000); } } countdown();  

当然我想做一个脚本,将我重定向到http://XXXX.com/11123324 ,我仍然是noob所以我做的最好的脚本是:

 // ==UserScript== // @name aaa // @include bbbb // @grant none // ==/UserScript== x300=1; countdown() 

但它不起作用:(

更新:

基于原始问题(现已删除)和明显的目标页面,变量x300和函数countdown() 全局的。 但变量名称x300实际上在页面之间发生变化。 这意味着它不是脚本编写的好选择。

function名称countdown()似乎是常量。 因此,您可以使用正则表达式从函数源中提取所需的链接:

 // ==UserScript== // @name aaa // @include bbbb // @grant none // ==/UserScript== var addrFound = false; var cntDwnFuncSrc = window.countdown; // Use unsafeWindow if grant is not none. if (cntDwnFuncSrc) { cntDwnFuncSrc = countdown.toString (); var payloadAddrMatch = cntDwnFuncSrc.match (/href="([^"]+?)"/); if (payloadAddrMatch && payloadAddrMatch.length > 1) { location.assign (payloadAddrMatch[1]); addrFound = true; } } if ( ! addrFound) { alert ("Payload address not found. Site probably changed"); } 



鉴于您的示例页面, 您的用户脚本应该有效。 它没有,意味着您在省略或更改问题中的关键细节!

  1. 您在错误控制台中遇到了什么错误( Ctrl Shift J )?

  2. 在Firefox或Firebug控制台中运行以下代码时会发生什么?

     console.log (x300); console.log (countdown); 
  3. 目标页面的URL是什么,以便我们可以看到实际发生的情况?