2011-02-13 107 views
-1

嘿所有,所以我只是爲Google Chrome製作了一個小型的greasemonkey腳本,它應該可以消除Facebook添加的令人討厭的新照片查看功能。它所做的就是從URL末尾刪除「&影院」。我的第一個嘗試就是在一行中做到這一點。問題在Facebook上運行腳本

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永遠不會被調用。它適用於其他網站,(我在函數中加入了一個警報來檢查它是否被調用)。有什麼建議麼?

+0

你試過unsafeWindow.onload =函數(){}; ? – Shaz 2011-02-13 23:19:32

回答

0

您創建了無限循環的刷新環境,因爲即使您位於您重定向到的URL上,也刷新了頁面。你會更好的做一個if語句是這樣的:

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

難道只許你一個window.onload,和Facebook很可能已經在使用它?

alert(window.onload) ...

Facebook

0

如果onload工作,你仍然有一個死循環 - 只是不再重載之間。 :)

在大多數情況下...爲了避免循環,請設置一個在負載之間存活的標誌。最簡單的方法是創建一個URL參數。

但是,在這種情況下,您可以更改您正在搜索的內容(現在)。

喜歡的東西:

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