2012-06-10 37 views
3

我想將URL重定向到不同的URL。例如,如果我輸入:通過Greasemonkey重定向鏈接

google.com 

並回車,就應該我重定向到:

yahoo.com 

I was at a previous thread and found a code for this,但不幸的是,它適用於所有的網址,我不想。此外,一旦重定向完成(在yahoo.com),頁面將重新加載,無限循環。

編輯:目前代碼:

// ==UserScript== 
// @name  Google to Yahoo 
// @description Redirects Google to Yahoo 
// @include  http://*.google.*/* 
// @version  1 
// ==/UserScript== 
    if(content.document.location == "http://google.com"){ 
      window.location.replace("http://yahoo.com") 
} 
+0

你通過Greasemonkey的運行此,正確嗎?自從我做Greasemonkey以來已經有一段時間了,但是'@ include'指令應該阻止它在所有的URL上工作。 – Shoaib

回答

6

,您張貼只是轉發用戶的腳本,它從來沒有檢查用戶加載的頁面。由於Greasemonkey是Javascript,因此您可以使用獲取當前頁面的URL並進行比較。

獲取URL與

var current_location = content.document.location; 

然後進行比較。我認爲這將是這樣的:

if(content.document.location == "http://google.com"){ 
    window.location.replace("http://yahoo.com") 
} 

編輯

你打算在什麼鄰省說,你可以使用包括在Greasemonkey的腳本指令。所以,在上面你會把

// @include  http://*.google.*/* 

這將在每一個谷歌的子域在每一個國家每一個頁面,沒有人對運行該腳本。

編輯2

使用namespace指令將使:

// ==UserScript== 
// @name  Redirect Google 
// @namespace http://domain.com/directory 
// @description Redirect Google to Yahoo! 
// @include  http://*.google.*/* 
// ==/UserScript== 

window.location.replace("http://yahoo.com"); 
+0

關於'「@namespace」':根據這個答案:[什麼是Greasemonkey命名空間需要?](http://stackoverflow.com/a/386616/606539),'@ namespace'指令用於避免命名衝突。通常,「@ namespace」的值應該設置爲「你控制的URL」,其中「你」通常是腳本編寫者。如果一個擁有的URL不可用,那麼任何「全球唯一」的文本應該沒問題。在這個(很好!)的答案中,應該注意'@ namespace'被設置爲一個佔位符,並且可能被任何合併這個腳本或者將其發佈到一個存儲庫中的人修改。 –