18

最近,每个浏览器都改变了其URL栏行为。当你点击地址栏时,它会选择整个URL。

我是一名web开发人员,所以大多数时候我只想编辑URL中的参数或添加到其中。这种自动选择行为很痛苦。我将指针对准我想要光标的位置,单击它,整个URI就会被选中,所以只要我开始键入,所有内容都会被删除。

有没有办法恢复“单击选择全部“Firefox上的行为?

0

3个答案

重置为默认值
19

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使用的配置文件。

解释

  1. 这是一个存储一个相关文件路径的变量。稍后,您需要检查此路径是否存在,因为Mozilla已在103版本前后重命名了此文件。

    urlbarinput_path=omni/modules/urlbarinput.sys.mjs# …如果[[!-f/tmp/$urlbarinput_path]];然后urlbarinput_path=omni/modules/urlbarinput.jsmfi(菲涅耳)
  2. 这些行打开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]处理可能已成功完成”正如手册页所说。

  3. 接下来,这两行在位编辑适当的文件。这个_阻止单击选择全部属性控制是否在单击时进行选择。将其设置为真的将阻止此行为。第一行是URL栏,第二行是搜索栏。

    sed-i是/这个_preventClickSelectsAll=this\.focused/这个_preventClickSelectsAll=true;/'$urlbarinput_path(网址输入路径)sed-i是/这个_preventClickSelectsAll=这\_文本框\.focused/这个_preventClickSelectsAll=true;/'omni/chrome/browser/content/browser/search/searchbar.js
  4. 这将创建一个新的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问题.

  5. 接下来,创建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的所有发布渠道。

7
  • 谢谢您!我在LinuxMint上使用的相应命令是(对不起,注释中没有换行符):cd/tmp;mkdir omni;解压缩-q/usr/lib/firefox/browser/omni.ja-d omni;sed-i是/这个_preventClickSelectsAll=this\.focused/这个_preventClickSelectsAll=true;/'omni/modules/UrlbarInput.jsm;sed-i是/这个_preventClickSelectsAll=这\_文本框\.focused/这个_preventClickSelectsAll=true;/'omni/chrome/browser/content/browser/search/searchbar.js;cd omni;zip-qr9XD omni.ja*;sudo cp omni.ja/usr/lib/firefox/browser/omni.ja;firefox—清除缓存;
    – 莫伊尼
    评论 2020年6月13日1:59
  • @Moini看起来只有路径不同(我将答案中的示例路径更改为最常见的路径),您调用了火狐直接从终端--清除缓存。请检查链接的shell脚本以及对此答案所做的编辑。该脚本应提供一个统一的解决方案,并提高可用性。我想知道我的脚本是否可以与其他Linux发行版和软件设置一起使用。 评论 2020年7月7日19:01
  • 也可以在Windows上运行(尽管我不得不用Linux设置一个虚拟机来运行很不方便拉链/解压缩命令。
    – 伊佐夫
    评论 2021年12月17日9:43
  • 1
    已经10年了!我刚在firefox上开了一张修改单,错误地说是4。:)bugzilla.mozilla.org/show_bug.cgi?编号=1849593 评论 2023年8月21日14:06
  • 1
    @奇怪的是,我认为firefox安卓夜版没有做到这一点,但桌面版做到了这一点。如果有什么不同的话,android的URL栏更便于自动选择,而在PC上,插入(单击一次)、选择单词(单击两次)和选择全部(单击三次)的点击次数都是标准的。更愚蠢的是,现在只需单击一次=选择全部,单击两次=选择单词,单击三次=再次选择全部,再单击四次就可以插入而无需选择。我应该起诉腕管综合征,这真的毫无意义。
    – 麦希德
    评论 2023年8月21日17:29
1

我也注意到了这种行为,但我有一个简单的解决方法。将鼠标移到地址上,左键单击拖曳选择一些文本。文本高亮显示后,您可以单击字符串中的任意位置,光标将转到那里。

它成为第二天性,不需要时间。

1
  • 2
    我在更换东西时已经这样做了。。。但要添加内容,您现在必须选择较小的部分。它仍然在选择、取消选择和键入。 评论 2013年1月24日9:02
0

我不知道Opera或Chrome,但在Firefox中很容易打开关于:config并根据需要修改以下布尔值:

浏览器.urlbar.click选择全部浏览器.urlbar.doubleClick选择全部
2

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.