嘿所有,所以我刚刚为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。它适用于其他网站,(我在函数内部发出一个警告,检查它是否被调用)。有什么建议吗?
答案 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)
...
答案 2 :(得分:0)
如果onload
有效,您仍然会有无限循环 - 重新加载之间只需更长时间。 :)
在大多数情况下......要避免循环,请设置一个在加载之间存活的标志。最简单的方法是创建一个URL参数。
但是,在这种情况下,您只需更改您要搜索的内容(暂时)。
类似的东西:
if ( /&theater/i.test (window.location.href) )
{
window.location.href = window.location.href.replace(/(&theater)$/, '');
}