强制 %s 用加号而不是百分之二十来转义空格

she*_*onh 10 google-chrome

我想使用 mc 作为 Google Chrome 中 metacritic.com 的搜索快捷方式。我为快捷方式设置了以下搜索 URL:

http://metacritic.com/search/all/%s/results
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我搜索 patrician iii 如下

mc patrcian iii
Run Code Online (Sandbox Code Playgroud)

Chrome 会生成此查询,元批评家将其误解为生成一组无用的无关结果:

http://www.metacritic.com/search/all/patrician%20iii/results
Run Code Online (Sandbox Code Playgroud)

Metacritic 喜欢这个查询,它给出了我想要的结果:

http://www.metacritic.com/search/all/patrician+iii/results
Run Code Online (Sandbox Code Playgroud)

如何强制 Chrome 使用加号而不是 URL 编码的空格?

slh*_*hck 5

您不需要使用 REST 风格的搜索,而是可以使用普通的 HTTP GET 参数,如下所示:

http://www.metacritic.com/search/all/results?search_term=test+query
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下,这将是:

http://www.metacritic.com/search/all/results?search_term=%s
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不适用于 Metacricic (?)。

我能得到的最好的是以下搜索功能,但由于某种原因它并没有真正重定向:

data:text/html;charset=utf-8,<script>var s = "%s"; s = s.replace("%20", "+"); var url = "http://www.metacritic.com/search/all/" + s + "/results"; window.location = url;</script>
Run Code Online (Sandbox Code Playgroud)

背景资料:

Chrome 根据位置对发送的参数进行编码,即是在 URL 内还是作为 GET 参数。在 URL 中,将空格转换为 是有意义的%20,而在参数中+则使用 。

不幸的是,他们无法改变这种行为,所以我猜测一行简单的 Javascript 就可以解决这个问题。我会调查一下。


小智 5

虽然有点粗糙,但您可以创建一个简单的 Chrome 扩展来调整 metacritic(或其他网站,如果您愿意)的 URL

以下是我用于 Metacritic 搜索 URL 替换扩展的代码:

清单.json:

{
    "content_scripts": [ {
    "include_globs": [ "http://www.metacritic.com/search/*%20*" ],
    "js": [ "script.js" ],
        "matches": [ "http://*/*", "https://*/*" ],
        "run_at": "document_start"
    } ],
    "converted_from_user_script": true,
    "description": "Replaces '%20' in metacritic search request to '+'",
    "name": "Metacritic search replacer",
    "version": "0.1"
}
Run Code Online (Sandbox Code Playgroud)

脚本.js:

window.location = window.location.href.replace(/%20/g, "+");
Run Code Online (Sandbox Code Playgroud)

由于我确实没有可靠的位置来上传我的扩展程序,因此以下是使用这两个文件创建 Chrome 扩展程序的说明:

首先,将这两个文件放入某个文件夹中,然后浏览至 chrome://extensions。确保开发人员模式处于活动状态(查看页面右上角以启用此模式)。在这里,您可以选择“打包扩展..”,它会询问您脚本所在的文件夹。选择此文件夹后,将创建扩展程序,您只需将其拖放到 Chrome 中即可安装。如果一切按计划进行,脚本会将 Metacritic 搜索请求的 URL 从“%20”重写为“+”字符。

现在,您可以http://metacritic.com/search/all/%s/results在 Chrome 本身中用作搜索引擎 url,以使用此搜索的快捷方式。

希望这可以帮助.. ;)