为什么这个简单的登录脚本在Tampermonkey中工作,而不是Greasemonkey?

时间:2013-11-15 23:47:54

标签: javascript firefox greasemonkey tampermonkey

我有这个小小的脚本,我使用Tampermonkey在Chrome中运行,效果很好。

但是,当我在带有Greasemonkey的Firefox中使用它时,它会显示在活动列表中,这意味着它与页面匹配,但它实际上并不执行代码。我知道它必须是一个我忽略的简单的东西,但它没有打我。

var myVar=setInterval(function(){myTimer();},100);

function myStopFunction()
{
    clearInterval(myVar);
}

function myTimer()
{
    var p1 = "Login";
    var p2 = "mode=login";
    var x = document.body.innerHTML;

        if (x.match(p1) && x.match(p2)){
            document.documentURI = "/ucp.php?mode=login";
        }
    myStopFunction();
}

脚本逻辑/功能

  1. 我正在使用计时器来防止脚本在永久循环中反复触发。
  2. 它只是检测我是否登录了phpBB论坛,如果没有将我发送到登录页面,那么我就可以登录了。
  3. 我正在使用文档URI,以便保留原始位置,因此在登录时,我会立即回复它。
  4. 当你登录时常常是phpBB,它会带你回到索引页面,这样就保留了我去实际链接的初衷。
  5. 这个脚本在使用TM的Chrome上运行完美正常,但在使用GM的Firefox上它没有触发,我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:1)

来自the Firefox spec

  

document.documentURI
  以字符串形式返回文档位置。根据DOM4规范,它是只读

事实上,the latest spec仍然指定此属性必须是只读的。

如果Chrome允许您编写此属性,那么这是非标准行为,可能是错误。

使用location.assign()location.replace(),或者只需以编程方式点击登录按钮 - 这通常会保留目标网页。

相关问题