Firefox,2020年3月及以后
2020年3月左右浏览器.urlbar.click选择全部
首选项已删除.从那以后,这个bug一直正在讨论中,其中建议了一个修补程序-这需要从头开始重新编译Firefox。
作为“单击选择全部
不起作用“Bugzilla上积累了重复项,其中一个收到了斯蒂芬·麦卡锡评论它描述了一种解决方法,涉及编辑内部Firefox文件,特别是omni.ja公司
基本上是一个拉链
包含大量内部文件的文件,例如浏览器chrome的JavaScript模块,包括相关的模块/UrlbarInput.jsm
.这个变通方法看起来像是最简单的方法,但这种方法不能按原样工作。
有一个MDN官方文档(存档版本)它描述了如何omni.ja公司
应重新包装。我还发现了一个上的博客文章浅薄的想法关于修改omni.ja公司
它更详细地描述了这个过程。然后,还有一件事需要担心:您需要强制Firefox使用修改后的omni.ja公司
通过清除其启动缓存,这在追求懒惰博客文章我找到的。
修改内部文件
把所有这些资源放在一起,这些是目前在Arch Linux上工作的shell命令(核心/linux
5.8.1.拱门1-1
通过5.12.13.拱门1-2
).1如果在任何时候遇到“权限被拒绝”错误,只需以root身份继续执行命令。这些需要在每次Firefox更新后执行。这些命令将在后面解释。
您可以使用此shell脚本,而不用键入单个命令GitHub回购我的。该脚本提供了一个用户友好的终端界面;它会自动找到Firefox,更改omni.ja公司
,并处理缓存。它还可以根据需要自动切换到root并创建备份。还有一个web界面在这里,您可以选择其他选项并下载定制的shell脚本。
命令
urlbarinput_path=omni/modules/urlbarinput.sys.mjs光盘/tmpmkdir omni公司解压缩-d omni-q/usr/lib/firefox/browser/omni.ja如果[[!-f/tmp/$urlbarinput_path]];然后urlbarinput_path=omni/modules/urlbarinput.jsmfi(菲涅耳)sed-i是/这个_preventClickSelectsAll=this\.focused/这个_preventClickSelectsAll=true;/'$urlbarinput_path(网址输入路径)sed-i是/这个_preventClickSelectsAll=这\_文本框\.focused/这个_preventClickSelectsAll=true;/'omni/chrome/browser/content/browser/search/searchbar.js光盘全向zip-0DXqr omni.ja*光盘。。mv omni/omni.ja/usr/lib/firefox/browser/omni.jachown用户:群组/usr/lib/firefox/browser/omni.jarm-r全向
重要提示:
更新Firefox,然后在执行此操作之前将其关闭。Firefox需要更新安装(例如,您可能需要在升级后启动Firefox,然后再次关闭它)。
/usr/lib/firefox
是一个可能的Firefox的安装路径;你的道路可能不同,例如/usr/share/firefox
.您应该能够使用以下命令之一找到可能的路径:
其中是-b萤火虫萤火虫esr哪个firefox firefox-esr
正确的omni.ja公司
位于…/browser/omni.ja
路径。
在执行任何操作之前,请确保创建工作的副本omni.ja公司
某处,所以你有一个备份,以防出现问题。
确保更换⟨用户⟩
按用户名和⟨组⟩
文件原始所有权的用户组。据我所知,在大多数情况下,这应该是root:根
如果还没有的话。
解压缩后omni.ja公司
你可能想再检查一下
- 那条线
这个_preventClickSelectsAll=this.focused;
存在于模块/UrlbarInput.jsm
、和
- 那条线
这个_preventClickSelectsAll=这一点_文本框聚焦;
存在于chrome/browser/content/browser/search/searchbar.js
.
清除缓存
最后,Firefox需要正确加载新的omni.ja公司
通过清除缓存。这是我发现最容易的两种不同的选择。只需要其中一个选项。
一种方法是简单地创建一个名为.清洗槽
在中浏览器
目录。例如,您可以执行以下操作:
触摸/usr/lib/firefox/browser/.purge-caches
您只需要在运行上述命令后创建该文件。启动时,如果Firefox找到该文件,它将清除其启动缓存,并尝试删除该文件。根据您最初安装Firefox的方式,自动删除文件可能会失败。即使这不影响成功清除缓存,也要注意这一点。
另一种方法是查找Firefox的桌面配置文件。观察/usr/share/applications/
或~/.local/share/applications/
找到一些*.桌面
文件包含火狐
(或每晚
或者也许莫桑比克
或类似内容)。打开找到的文件。在我的系统中有两个:
- 一个小的开始
火狐肉
(通过行政人员=
)
- 有三个参考
/usr/lib/firefox/firefox
您想修改较大的:在每个/usr/lib/firefox/firefox
(或无论哪条路适合你)-清除缓存
选项(--清除缓存
作品);因此,其中一个配置条目可能如下所示:
Exec=/usr/lib/firefox/firefox-清除缓存%u
使用这种方法,您可能需要编辑您的*.桌面
每次Firefox更新后的文件它减缓了Firefox的每次启动。
现在您可以通过单击桌面图标启动Firefox。
如果你不通过点击桌面图标来启动Firefox,而是使用终端,那么还有另外两种选择:
- 你可以输入
firefox-清洗
进入终端,
- 或者你可以输入
导出MOZ_PURGE_CACHES=1
进入终端,然后键入火狐
进入同一终端。
最后,您还可以直接清除缓存。脚本缓存(包括启动缓存)隐藏在.cache文件
您的目录/家
.这条路看起来像/主页/用户/缓存/mozilla/firefox/配置文件IDprofileType⟩/startupCache
.删除这些目录将清除Firefox的启动缓存。
如果在同一个Firefox安装中使用多个配置文件,请使用此方法。另一个内置清除缓存
方法只清除缓存第一Firefox使用的配置文件。
解释
这是一个存储一个相关文件路径的变量。稍后,您需要检查此路径是否存在,因为Mozilla已在103版本前后重命名了此文件。
urlbarinput_path=omni/modules/urlbarinput.sys.mjs# …如果[[!-f/tmp/$urlbarinput_path]];然后urlbarinput_path=omni/modules/urlbarinput.jsmfi(菲涅耳)
这些行打开omni.ja公司
文件(准PKZIP文件)到新创建的/tmp/omni公司
目录使用解压缩
公用事业(额外/解压缩
6.0-14
)1.
光盘/tmpmkdir omni公司解压缩-d omni-q/usr/lib/firefox/browser/omni.ja
-d omni公司
只从中提取文件/usr/lib/firefox/browser/omni.ja
进入/tmp/omni公司
目录;-问
抑制输出(只是一个正在膨胀和提取的文件列表)。
解压缩
可能会以状态退出2
当运行解压缩
命令:
警告[omni.ja]:开始时或zipfile中有50008544个额外字节(仍在尝试处理)error[omni.ja]:中心目录的报告长度为-50008544字节太长(Atari STZip zipfile?J.H.Holm ZIPSPLIT 1.1 zipffile?)。正在补偿。。。
别担心。这不会影响过程;地位2
只是意味着检测到了一些错误,但是“无论如何,[p]处理可能已成功完成”正如手册页所说。
接下来,这两行在位编辑适当的文件。这个_阻止单击选择全部
属性控制是否在单击时进行选择。将其设置为真的
将阻止此行为。第一行是URL栏,第二行是搜索栏。
sed-i是/这个_preventClickSelectsAll=this\.focused/这个_preventClickSelectsAll=true;/'$urlbarinput_path(网址输入路径)sed-i是/这个_preventClickSelectsAll=这\_文本框\.focused/这个_preventClickSelectsAll=true;/'omni/chrome/browser/content/browser/search/searchbar.js
这将创建一个新的omni.ja公司
使用拉链
公用事业(额外/拉链
3.0-9
)1.
光盘全向zip-0DXqr omni.ja*光盘。。
瞄准目标很重要*
(每个文件)内泛光灯/
,而不是全能的/
目录本身;我们不想创建omni.ja公司
具有泛光灯
作为根目录。使用进出目录光盘
还确保正确的文件层次结构,否则,拉链
仍然包括额外的泛光灯
归档文件中的根目录。
至于选项,-0
将压缩级别设置为无压缩并简单地存储文件;-D类
避免在zip存档中为目录创建条目;-X(X)
不保存额外的文件属性;-问
再次,抑制输出;-第页
确保文件递归添加到正确的目录路径中。
这些是MDN文档中建议的选项。你可能见过旧版本(编辑前)使用-9
(-qr9XD
,确切地说)而不是-0
,但这会导致问题:例如,显示键盘快捷键的工具提示的本地化无法在开发人员工具中加载。答案位于是否可以修改硬编码的Firefox JavaScript Ctrl-Tab面板行为?提到了-0
是拉链
创建omni.ja公司
文件大小接近原始文件的文件。顺便说一句,这是避免这种奇怪的本地化问题的唯一选择。我在中对此进行了详细解释这个GitHub问题.
接下来,创建omni.ja公司
移动到Firefox浏览器
目录(并替换文件;不要直接使用现有的omni.ja公司
作为拉链
目标,否则文件将嵌套到现有的ZIP中),可以像设置原始文件一样设置权限,最后可以删除/tmp/omni公司
目录。
mv omni/omni.ja/usr/lib/ffirefox/browser/omni.jachown用户:组rm-r全向
事实证明大杂烩
命令可能不是绝对必要的,但它可以确保新的omni.ja公司
与原始文件具有相同的所有者。或者,如果您以非root用户身份将原始文件复制到备份目录,则可以使用以下方法:
chown--reference=⟨your_backup_directory⟩/omni.ja/usr/lib/firefox/browser/omni.jachmod--reference=⟨your_backup_directory⟩/omni.ja/usr/lib/firefox/browser/omni.ja
当然,您可以使用其他文件,如/usr/lib/firefox/browser/crashreporter-override.ini
作为参考。
恢复omni.ja公司
备份以防出现问题
不幸的是,如果Firefox在这个过程之后似乎没有正确运行,或者根本没有运行,这个过程就无法正常运行。您可以通过一个简单的毫伏
这样(可能作为根用户):
mv⟨your_backup_directory⟩/omni.ja \10216]your_firefox_browser_directory/omni.ja
记住再次清除缓存。
如果您没有创建omni.ja公司
之前,您需要重新下载Firefox提取包裹以找到替代品omni.ja公司
.
顺便提一下,建议的Bugzilla解决方案有一个zip--更新
命令。完整的命令包括:
解压缩-q/usr/lib/firefox/browser/omni.ja$urlbarinput_path chrome/browser/content/browsers/search/searchbar.js-d omni#而不是#解压缩-q/usr/lib/firefox/browser/omni.ja-d omni
…和…
zip-qr9XDu/usr/lib/firefox/browser/omni.ja文件*#而不是#zip-qr9XD omni.ja*#mv omni/omni.ja/usr/lib/firefox/browser/omni.ja#chown用户名
不幸的是,即使知道拉链
文件层次结构,我无法实现这一点-不过,这会很好,因为这会加快进程一点。相反,我在启动Firefox时遇到如下错误:
XML分析错误:未定义实体位置:chrome://browser/content/browser.xml第740行,第15列:<toolbarbutton id=“UITourTooltipClose”class=“close-icon”--------------^
我想知道Mozilla是否会自动报告此类错误,即使我篡改了构建…
相关问题:
1:我还没有测试全部的版本,但在2020年3月行为发生变化后,这应该继续适用于更高版本、最早版本,并且应该适用于Firefox的所有发布渠道。