2012-04-03 15 views
0

これは期待どおりに動作します。希望する機能は、セミコロンキーを使用してbang!をより簡単に呼び出せるようにすることです。しかし何らかの理由で、コロン(実際には何もしないはずです)を含むURLに対して永続的な更新を引き起こします。なぜこのgreasemonkey/javascriptコードはコロンで動作していますか?

ここでは、コードです:

// ==UserScript== 
// @name   DDG Semicolon Bangs 
// @include  https://duckduckgo.com/?q* 
// ==/UserScript== 

    window.location.href = window.location.href.replace(/%3B/, '%21'); 

// End of script 

例のテストページ:https://duckduckgo.com/?q=w%3A+greasemonkey(なぜこの永遠さわやかな??です!! garrrr?!?!)とhttps://duckduckgo.com/?q=w%3B+greasemonkey(期待通りに動作します - 万歳!)

答えて

4
は、

ウィンドウの場所を現在の場所に設定したときに起こる(ブラウザ固有の、非標準的な)ものを数えないでください。それを置き換える前に、あなたの正規表現に一致するかどうかを確認してください。 location.replaceを使用して、ブラウザの履歴にエントリを設定しないようにします。

var re = /%3B/g; 
if (re.test(window.location.href)) { 
    window.location.replace(window.location.href.replace(re,'%21')); 
} 
関連する問題