2012-04-03 89 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')); 
} 
相关问题