如何在 Firefox 标题栏中隐藏 HTTPS URL 方案

如何在 Firefox 标题栏中隐藏 HTTPS URL 方案

目前,Firefox 会在标题栏中显示已访问网站的完整 URL。有一个browser.urlbar.trimURLs偏好about:config隐藏了http://前缀但不隐藏https://。其他浏览器(例如 Safari 和 Chrome)会隐藏https://前缀和www.。是否可以在 Firefox 中复制此行为?

答案1

您可以在 Firefox 中添加以下内容来添加对此的支持firefox.cfg(或等效内容)AutoConfig 文件

// -*- mode: javascript; -*- vim: set ft=javascript:
// See https://support.mozilla.org/en-US/kb/customizing-firefox-using-autoconfig
"use strict";

(() => {
  if (Services.appinfo.inSafeMode) {
    return;
  }

  const addressPattern = new RegExp(
    "^(chrome:(?!//(global/content/commonDialog)\\.xhtml)|about:(?!blank))"
  );
  const hostnameStripPattern = new RegExp("^www\\.");

  Services.obs.addObserver(subject => {
    subject.addEventListener(
      "DOMContentLoaded",
      event => {
        const document = event.originalTarget;
        const window = document.defaultView;
        if (!addressPattern.test(window.location.href)) {
          return;
        }

        // Hide URL scheme once editing in URL bar is finished.
        const urlbarInput = document.getElementById("urlbar-input");
        const updateURLHandler = () => {
          if (!window.gURLBar.focused) {
            const untrimmedValue = urlbarInput.value;
            let url;
            try {
              url = new window.URL(untrimmedValue);
            } catch (error) {
              // Catch TypeError: URL constructor errors for invalid/partial URLs.
              if (error instanceof window.TypeError) {
                return;
              }
              throw error;
            }

            // Preserve existing behavior for built-in prefixes like "view-source:".
            if (url.protocol !== "https:" && url.protocol !== "http:") {
              return;
            }

            const suffix = url.pathname + url.search + url.hash;
            const displayValue =
              url.hostname.replace(hostnameStripPattern, "") +
                (suffix === "/" ? "" : suffix);

            if (displayValue !== urlbarInput.value) {
              window.gURLBar.value = displayValue;
              window.gURLBar._untrimmedValue = untrimmedValue;
            }
          }
        };

        urlbarInput?.addEventListener("SetURI", updateURLHandler);
        urlbarInput?.addEventListener("blur", updateURLHandler);
      },
      { once: true }
    );
  }, "chrome-document-global-created");
})();

这个答案了解更多背景信息和安装说明。

这将重现 Chrome 的行为,即https://[www.]删除前缀但保留后缀,除非它只是/。要使用 Safari 的行为(完全删除后缀并仅显示域),请更改displayValueurl.hostname.replace(hostnameStripPattern, "")

您可能还想打开security.insecure_connection_text.enabled偏爱about:config或在user.jsHTTP 站点的 URL 栏中显示“不安全”指示。

user_pref("security.insecure_connection_text.enabled", true);

Bugzilla 上有一个未解决的问题这里

更新:现在,版本 119 及更高版本已通过以下方式正式支持此功能:browser.urlbar.trimHttps偏爱

user_pref("browser.urlbar.trimHttps", true);

相关内容