2012-06-29 10 views
0

javascript新手位,所以不知道這個問題很容易或不可能。在JavaScript中替換URL中的兩個元素

我的工作與不同的測試環境中的網站,並取得了Greasemonkey的腳本,以一組按鈕,從一個切換到另一個:

if (/^(.*?)\www.mysite.com(.*)$/.test(document.location.href)) { 
document.location.href = RegExp.$1+"iww1.mysite.com"+RegExp.$2 
} 

這已經工作,除了一些網址的搜索字符串ID也需要更改爲不同的數字。

&storeId=15162 

我覺得我已經耗盡了我有限的知識,通過增加內{}另一個IF函數添加各種替換功能,都無濟於事。

如果這是有道理的,任何人都可以幫助它,將不勝感激。

乾杯

+0

**如何**搜索字符串ID(S)從一個網站更改爲另一個?給大量的例子。 –

+0

嘿,在這種情況下,實際上只有兩個特定的搜索字符串ID,它們可以在兩個五位數字之間進行交換,因此只需要能夠將一個替換爲另一個。 – terrysaunders

回答

0

你的第一個問題是,location object神奇:分配給它,或任何其屬性,使瀏覽器導航到指定的URL。由於這通常會停止腳本,因此無法執行兩次。相反,您應該將中間網址存儲在其他某個變量中,並且一旦準備好移動到新頁面,只分配給location.href。另外,你沒有指定如何計算新的「搜索字符串ID」,所以我只是假設你有一些函數,例如命名爲「 getNewStoreID(),當你給它舊的ID時,它會返回新的ID。鑑於這樣的功能,這個代碼應該這樣做:

var siteRegExp = /www\.mysite\.com/; 
var paramRegExp = /([?&]storeId)=(\d+)/; 

if (siteRegExp.test(location.href)) { 
    var href = location.href.replace(siteRegExp, "iww1.mysite.com"); 
    var match = paramRegExp.exec(href); 
    if (match) { 
     href = href.replace(paramRegExp, "$1=" + getNewStoreID(match[2])); 
    } 
    location.href = href; // navigate to the new URL! 
} 
+0

非常好,謝謝你的工作完美 – terrysaunders