2012-04-03 3 views
0

Es funktioniert wie erwartet - die gewünschte Funktionalität ist es, bang! S einfacher mit dem Semikolonschlüssel aufrufen zu können. Aus irgendeinem Grund verursacht es jedoch auch eine ständige Aktualisierung für URLs, die einen Doppelpunkt enthalten (für den es eigentlich nichts tun sollte).Warum funktioniert dieser Grainemonkey/JavaScript-Code auf Doppelpunkten?

Hier ist der Code:

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

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

// End of script 

Beispiel Testseiten: https://duckduckgo.com/?q=w%3A+greasemonkey (?!?! Warum ist das ständig erfrischend ?? !! garrrr) und https://duckduckgo.com/?q=w%3B+greasemonkey (wie erwartet funktioniert - hurra!)

Antwort

4

Zählen Sie nicht auf die (browserspezifische, nicht standardmäßige) Sache, die passiert, wenn Sie den Fensterstandort auf den aktuellen Standort einstellen. Überprüfen Sie vor dem Ersetzen, ob der Standort mit Ihrer Regex übereinstimmt. Und verwenden Sie location.replace, um einen Eintrag in Ihrem Browserverlauf zu vermeiden.

var re = /%3B/g; 
if (re.test(window.location.href)) { 
    window.location.replace(window.location.href.replace(re,'%21')); 
}