skytalk
非常火狐
非常火狐
  • UID32994
  • 注册日期2010-06-06
  • 最后登录2019-06-12
  • 发帖数590
  • 经验716枚
  • 威望3点
  • 贡献值712点
  • 好评度142点
  • 社区居民
  • 忠实会员
阅读:1821回复:15

创建搜索引擎插件 在地址栏的搜索结果链接中 如何允许空格而禁止“+”号替换

楼主#
更多 发布于:2016-08-06 23:03
Add to Search Bar 2.9 添加的搜索引擎 xml文件默认存储路径是哪里?很久没用这个扩展了,刚刚添加了个搜索引擎,然后到个人配置文件夹中的searchplugins目录去找xml文件,结果发现searchplugins文件夹是空的,用find找也没找到,晕了搜索引擎插件


创建搜索引擎插件 在地址栏的搜索结果链接中 如何允许空格而禁止“+”号替换
<os:Url type="text/html" method="GET" template="http://domain/search/{searchTerms}">
当关键词中含有空格时,地址栏显示搜索结果后的链接希望像这样:
http://domain/search/关键词 关键词
禁止搜索结果链接中的 空格自动被空格替换"+"
liuxb
非常火狐
非常火狐
  • UID26160
  • 注册日期2008-09-05
  • 最后登录2019-06-06
  • 发帖数653
  • 经验318枚
  • 威望0点
  • 贡献值184点
  • 好评度16点
1楼#
发布于:2016-08-07 04:33
search.json.mozlz4 ?
我的...
skytalk
非常火狐
非常火狐
  • UID32994
  • 注册日期2010-06-06
  • 最后登录2019-06-12
  • 发帖数590
  • 经验716枚
  • 威望3点
  • 贡献值712点
  • 好评度142点
  • 社区居民
  • 忠实会员
2楼#
发布于:2016-08-07 18:08
liuxb:search.json.mozlz4 ?回到原帖
刚想来这说,就看到被@liuxb提到了。
从firefox v44.0开始创建了这个文件(目前查到的最早的版本,不知是否有误)。当第一次启动firefox后,fx就会将omni.ja内的默认搜索引擎信息及配置(比如搜索引擎排列次序/os:Url信息等),写入到search.json.mozlz4文件内,若清空omni.ja内的搜索引擎,fx就会调用search.json.mozlz4内写入的信息及配置。
由于fx会优先读取search.json.mozlz4内的写入信息及配置,这就会产生问题,当更新omni.ja内搜索引擎后,fx会忽略些细微改动,甚至搜索栏不显示新添加的搜索引擎,包括引擎图标/os:Url都会是之前写入的陈旧信息。
skytalk
非常火狐
非常火狐
  • UID32994
  • 注册日期2010-06-06
  • 最后登录2019-06-12
  • 发帖数590
  • 经验716枚
  • 威望3点
  • 贡献值712点
  • 好评度142点
  • 社区居民
  • 忠实会员
3楼#
发布于:2016-08-07 23:45
乱开新帖感觉乱,直接编辑一下,废物利用好了
skytalk
非常火狐
非常火狐
  • UID32994
  • 注册日期2010-06-06
  • 最后登录2019-06-12
  • 发帖数590
  • 经验716枚
  • 威望3点
  • 贡献值712点
  • 好评度142点
  • 社区居民
  • 忠实会员
4楼#
发布于:2016-08-09 10:05
咋没人回复呢
英文也搜过 不知道是否是姿势不对 都没能找到答案
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2019-06-18
  • 发帖数18307
  • 经验4659枚
  • 威望5点
  • 贡献值4264点
  • 好评度1039点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
5楼#
发布于:2016-08-09 12:25
不太清楚这个搜索插件searchterm 部分,对于ff来说解析的时候强制将两个搜索关键词判别为加号。
Firefox More than meets your experience
alanfly
千年狐狸
千年狐狸
  • UID31035
  • 注册日期2009-11-10
  • 最后登录2019-06-19
  • 发帖数2665
  • 经验476枚
  • 威望1点
  • 贡献值116点
  • 好评度79点
  • 社区居民
  • 最爱沙发
  • 忠实会员
6楼#
发布于:2016-08-09 16:00
skytalk
非常火狐
非常火狐
  • UID32994
  • 注册日期2010-06-06
  • 最后登录2019-06-12
  • 发帖数590
  • 经验716枚
  • 威望3点
  • 贡献值712点
  • 好评度142点
  • 社区居民
  • 忠实会员
7楼#
发布于:2016-08-09 17:35
alanfly:不是本地端处理的。
urlencode - When to encode space to plus (+) or %20? - Stack Overflow
回到原帖
太感谢啦,@alanfly ,发的链接已经看啦,但如果远端允许“空格”,创建的{searchTerms}该如何写呢?
比如:
<Url type="text/html" method="GET" template="http://subhd.com/search/{searchTerms}">

subhd既然允许搜索链接中包含空格,那利用创建的xml搜索词汇时,是否也应该允许空格呢?
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2019-06-18
  • 发帖数18307
  • 经验4659枚
  • 威望5点
  • 贡献值4264点
  • 好评度1039点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
8楼#
发布于:2016-08-09 17:53
skytalk:太感谢啦,@alanfly ,发的链接已经看啦,但如果远端允许“空格”,创建的{searchTerms}该如何写呢?
比如:<Url type="text/html" method="GET" template="http://subhd...
回到原帖
关键词%20关键词  ?
Firefox More than meets your experience
skytalk
非常火狐
非常火狐
  • UID32994
  • 注册日期2010-06-06
  • 最后登录2019-06-12
  • 发帖数590
  • 经验716枚
  • 威望3点
  • 贡献值712点
  • 好评度142点
  • 社区居民
  • 忠实会员
9楼#
发布于:2016-08-09 18:49
告饶,服啦,好折腾害死人哪,关键omni.ja这货太坑,休整休整,虽然偶知道偶并么有死心。。。
版大,偶知道空格=%20,之前测试了{%searchTerms%}测试过,再加20估计更够呛,等偶再测
alanfly
千年狐狸
千年狐狸
  • UID31035
  • 注册日期2009-11-10
  • 最后登录2019-06-19
  • 发帖数2665
  • 经验476枚
  • 威望1点
  • 贡献值116点
  • 好评度79点
  • 社区居民
  • 最爱沙发
  • 忠实会员
10楼#
发布于:2016-08-09 19:04
skytalk:太感谢啦,@alanfly ,发的链接已经看啦,但如果远端允许“空格”,创建的{searchTerms}该如何写呢?
比如:<Url type="text/html" method="GET" template="http://subhd...
回到原帖
我也不会,google也允许url中包含空格,但是用xml提供的google搜索引擎搜索时会将空格转成加号。
skytalk
非常火狐
非常火狐
  • UID32994
  • 注册日期2010-06-06
  • 最后登录2019-06-12
  • 发帖数590
  • 经验716枚
  • 威望3点
  • 贡献值712点
  • 好评度142点
  • 社区居民
  • 忠实会员
11楼#
发布于:2016-08-09 23:37
alanfly:我也不会,google也允许url中包含空格,但是用xml提供的google搜索引擎搜索时会将空格转成加号。回到原帖
同不会啊,所以才弄得头两个大,别看仅仅是个xml,也很折腾

论坛经常点击 回复按钮/发布按钮 没反应
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2019-06-19
  • 发帖数1898
  • 经验1114枚
  • 威望1点
  • 贡献值232点
  • 好评度159点
12楼#
发布于:2016-08-11 01:04
搜索是调用 Engine.getSubmission
看代码
https://dxr.mozilla.org/mozilla-central/source/toolkit/components/search/nsSearchService.js#2428-2478

一般是用 gTextToSubURI.ConvertAndEscape 来对搜索字串编码
nsTextToSubURI::ConvertAndEscape 中是用 nsEscape 来转义的
nsEscape 定义在 https://dxr.mozilla.org/mozilla-central/source/xpcom/io/nsEscape.cpp#75-150
124 行明确写了会把空格转义为加号
之后 Engine.getSubmission 会调用 EngineURL.getSubmission
EngineURL.getSubmission 中也明确写了编码是 application/x-www-form-urlencoded 式的
也就是空格转义为加号

只有在满足了某些极端条件时
nsSearchService.js 的 2439 到 2446 行,参见 Bug 1203168
才会使用 encodeURIComponent 来对搜索字串编码
也就是空格转义为 %20
skytalk
非常火狐
非常火狐
  • UID32994
  • 注册日期2010-06-06
  • 最后登录2019-06-12
  • 发帖数590
  • 经验716枚
  • 威望3点
  • 贡献值712点
  • 好评度142点
  • 社区居民
  • 忠实会员
13楼#
发布于:2016-08-11 22:00
aaaa007cn:搜索是调用 Engine.getSubmission
看代码
https://dxr.mozilla.org/mozilla-central/source/toolkit/components/search/nsSearchServic...
回到原帖
这么说是完全不可控的啦,看来彻底没戏了,也就死心啦
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2019-06-19
  • 发帖数1898
  • 经验1114枚
  • 威望1点
  • 贡献值232点
  • 好评度159点
14楼#
发布于:2016-08-13 13:29
除去那个极端场景
在目前的代码中
仅通过修改 search plugin 是办不到的

但是看你的奇怪需求似乎只考虑地址栏的显示?
那么也不用考虑 post 的场合了
完全可以利用重定向或者扩展改写目标地址嘛
上一页
游客

返回顶部