-1

大家好,所以我刚刚为 Google Chrome 制作了一个小油猴脚本,它应该可以删除 facebook 添加的烦人的新照片查看功能。它所做的只是从 URL 的末尾删除“&theater”。我的第一次尝试只是在一行中做到这一点。

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

但这只会使页面不断重新加载,一遍又一遍地执行脚本。所以我想我会将该代码放在页面加载时调用的函数中。我的代码现在看起来像这样:

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

我的问题是,当您加载 facebook 页面时,window.onload 永远不会被调用。它适用于其他网站,(我在函数中放置了一个警报以检查它是否被调用)。有什么建议么?

4

3 回答 3

0

如果这onload 行得通,你仍然会有一个无限循环——只是重新加载之间的时间更长。:)

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

但是,在这种情况下,您可以只更改您正在搜索的内容(目前)。

就像是:

if ( /&theater/i.test (window.location.href) )
{
    window.location.href = window.location.href.replace(/(&theater)$/, '');
}
于 2011-02-14T01:09:23.383 回答
0

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

if ((window.location.host === 'www.facebook.com') && window.location.pathname.indexOf('&theater') > -1) {
  // redirect here
}
于 2011-02-14T00:09:20.600 回答
0

会不会只允许你使用一个window.onload,而 Facebook 可能已经在使用它了?

alert(window.onload)...

Facebook

于 2011-02-14T00:11:38.583 回答