2011-11-07 94 views
1

我想創建一個JavaScript書籤,這會從URL中提取一個數字ID:Javascript小書籤:如何替換URL部分?

http://site-1/script-1.php?ID=12345678&other-params 

,然後將瀏覽器重定向到一個新的URL:

http://site-2/script-2.php?id=12345678 

我搜索淨書籤的例子,我有2個問題,請:

1)我需要把我的JS代碼在無效

javascript:void(XXX); 

是什麼無效意味着在這種情況下?

2)我應該使用location.href來閱讀舊的URL並分配一個新的構造的URL嗎?我這麼問是因爲我看到很多奇怪的代碼片段,比如字符串(location.href)等 - 就像它需要一些鑄造爲String(是嗎?)

更新:我已經試過下面的代碼,但沒有在Chrome中發生不幸的是,當我老的頁面上,點擊我的書籤(希望導航到新的頁面):

javascript:void (
    if (var match = location.search.match(/id=(\d+)/i)) 
     location = 'http://site-2/script-2.php?id=' + match[1]; 
) 

(我已經添加了線 - 突破以上,是我試圖用一個「=」)

更新2:我的第二次嘗試 - 只是想展示一個新的URL:

javascript:void (
    var match = location.search.match(/ID=(\d+)/); 
    alert('http://site-2/script-2.php?id=' + match[1]); 
) 

,但仍然沒有任何反應,當我點擊在書籤欄中的書籤。我看到在谷歌瀏覽器控制檯:

Uncaught SyntaxError: Unexpected token var 

回答

2

1)如果你的書籤返回一個值,這樣運行的所有代碼之後,這個網址就被解讀爲:javascript:%somestring%瀏覽器將顯示在瀏覽器窗口中的字符串。所以void()只是一個安全措施(ref...The void operator evaluates the given expression and then returns undefined...),以免意外超越文檔。這意味着,如果你小心,你不需要失效。

2)不需要強制轉換,因爲如果不提供字符串值,它將自動發生。


我的書籤模板:

<a href="javascript:(function(){ 
    // do stuff but do not return anything 
}());">something</a> 

更新:

javascript:(function() { 
    var match = window.location.href.match(/ID=(\d+)/); 
    if (match.length > 0) { 
    alert('http://site-2/script-2.php?id=' + match[1]); 
    // or after debugging: window.location = 'http://site-2/script-2.php?id=' + match[1]; 
    } 
}()); 
+0

謝謝!任何想法,爲什麼我的更新代碼不會運行? –

+1

'var'在if條件中是無效的語法;)(在if之前聲明匹配,然後使用它) – Yoshi

+0

謝謝!我已更新我的代碼 - 請提供其他提示嗎? –