问题在Facebook上运行脚本

时间:2011-02-13 23:14:43

标签: javascript google-chrome greasemonkey userscripts

嘿所有,所以我刚刚为Google Chrome制作了一个小型的油脂脚本脚本,应该删除facebook添加的令人讨厌的新照片查看功能。它所做的就是从URL的末尾删除“& theatre”。我的第一次尝试就是在一行中做到这一点。

if (window.location.toString().indexOf('www.facebook.com') >= 0) {
    window.location.href = window.location.href.replace(/(&theater)$/, '');
}

但这只是让页面不断重新加载,一遍又一遍地执行脚本。 所以我想我会将该代码放在一个名为on page load的函数中。我的代码现在看起来像这样:

window.onload = function()
{
if (window.location.toString().indexOf('www.facebook.com') >= 0) {
    window.location.href = window.location.href.replace(/(&theater)$/, '');
}
}

我的问题是,当你加载一个facebook页面时,永远不会调用window.onload。它适用于其他网站,(我在函数内部发出一个警告,检查它是否被调用)。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您创建了一个无限循环的刷新,因为即使您在重定向到的URL上也刷新页面。你最好做一个像这样的if语句:

if ((window.location.host === 'www.facebook.com') && window.location.pathname.indexOf('&theater') > -1) {
  // redirect here
}

答案 1 :(得分:0)

可能是你只允许一个window.onload,Facebook可能已经在使用它吗?

请参阅alert(window.onload) ...

Facebook

答案 2 :(得分:0)

如果onload 有效,您仍然会有无限循环 - 重新加载之间只需更长时间。 :)

在大多数情况下......要避免循环,请设置一个在加载之间存活的标志。最简单的方法是创建一个URL参数。

但是,在这种情况下,您只需更改您要搜索的内容(暂时)。

类似的东西:

if ( /&theater/i.test (window.location.href) )
{
    window.location.href = window.location.href.replace(/(&theater)$/, '');
}