javascript - 为什么这个greasemonkey/javascript 代码在冒号上运行?

标签 javascript search greasemonkey userjs

它按预期工作 - 所需的功能是能够使用分号键更轻松地调用 bang!。然而,由于某种原因,它也会导致包含冒号的 URL 永久刷新(实际上它不应该执行任何操作)。

代码如下:

// ==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(按预期工作 - 万岁!)

最佳答案

不要指望将窗口位置设置为当前位置时会发生的(特定于浏览器的、非标准的)事情。在替换之前检查该位置是否与您的正则表达式匹配。并使用 location.replace,以避免在浏览器历史记录中设置条目。

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

关于javascript - 为什么这个greasemonkey/javascript 代码在冒号上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9998496/

相关文章:

javascript - 使用 jquery 自定义滑动插件

php - 在 php/mysql 中对搜索实现拼写错误更正的最佳方法是什么?

javascript - 在 DOM 中搜索不区分大小写的字符串

google-chrome-extension - 为什么对于 MacOS 上的 Greasemonkey/Tampermonkey 上的本地脚本,@require 总是给我错误“"couldn' t load @require from禁止的 URL”

javascript - 让 Greasemonkey 对元素的 ajax 更改使用react

javascript - Symbol.for 中的预期标识符

JavaScript:在 IE7 中设置 div 标签的样式属性

Django haystack,搜索中某些字段的优先级

javascript - 如何访问 greasemonkey 脚本中的页面级别(本地)javascript 变量?

javascript - 使用 React 测试库在 React 中为表单提交断言 prop 调用