在 Firefox 4 中,URL 欄自動完成彈出式功能表現在有一個名為「切換到分頁」的項目,用於已在其他分頁中開啟的 URL。
我從來不想這樣,結果總是錯誤地擊中它。有辦法禁用它嗎?
FF 的大多數新功能似乎都有一個開關about:config
可以關閉,但我沒有看到任何明顯的跡象。
答案1
以下是如何在 Firefox Quantum(測試版本 68)中停用它
- 漢堡菜單
- 選項(Mac/Linux 上的首選項)(
about:preferences
) - 隱私與安全 (
about:preferences#privacy
) - 網址
- 取消選取打開選項卡
就是這樣!
答案2
在 google 上快速搜尋後發現 mozillazine.org 上有一大堆火焰。 (http://forums.mozillazine.org/viewtopic.php?f=23&t=1977593)
由 lithopsian 編寫的程式碼(最初位於http://forums.mozillazine.org/viewtopic.php?f=23&t=1977593&start=30)
這顯然位於現有擴充內,但可以將程式碼放置在您喜歡的任何地方。
CSS 像這樣:
#urlbar
{
-moz-binding: url("chrome://NoTabs/content/NoTabs.xml#NoTabsUrlbar");
}
.autocomplete-richlistitem
{
-moz-binding: url("chrome://NoTabs/content/NoTabs.xml#NoTabsRichlistitem");
}
像這樣的綁定取代了兩個關鍵方法:
<?xml version="1.0" encoding="UTF-8"?>
<bindings id="NoTabs-urlbarBindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="NoTabsUrlbar" extends="chrome://browser/content/urlbarBindings.xml#urlbar">
<implementation implements="nsIObserver, nsIDOMEventListener">
<!--
onBeforeValueSet is called by the base-binding's .value setter.
It should return the value that the setter should use.
-->
<method name="onBeforeValueSet">
<parameter name="aValue"/>
<body><![CDATA[
this.removeAttribute("actiontype");
this._value = aValue;
var returnValue = aValue;
var action = this._parseActionUrl(aValue);
if (action) returnValue = action.param;
return returnValue;
]]></body>
</method>
</implementation>
</binding>
<binding id="NoTabsRichlistitem" extends="chrome://global/content/bindings/autocomplete.xml#autocomplete-richlistitem">
<implementation implements="nsIDOMXULSelectControlItemElement">
<method name="_adjustAcItem">
<body>
<![CDATA[
var url = this.getAttribute("url");
var title = this.getAttribute("title");
var type = this.getAttribute("type");
this.removeAttribute("actiontype");
var setupUrl = true;
// If the type includes an action, set up the item appropriately.
var types = type.split(/\s+/);
var actionIndex = types.indexOf("action");
if (actionIndex >= 0) {
let [,action, param] = url.match(/^moz-action:([^,]+),(.*)$/);
url = param;
// Remove the "action" substring so that the correct style, if any,
// is applied below.
types.splice(actionIndex, 1);
type = types.join(" ");
}
// If we have a tag match, show the tags and icon
if (type == "tag") {
// Configure the extra box for tags display
this._extraBox.hidden = false;
this._extraBox.childNodes[0].hidden = false;
this._extraBox.childNodes[1].hidden = true;
this._extraBox.pack = "end";
this._titleBox.flex = 1;
// The title is separated from the tags by an endash
let tags;
[, title, tags] = title.match(/^(.+) \u2013 (.+)$/);
// Each tag is split by a comma in an undefined order, so sort it
let sortedTags = tags.split(",").sort().join(", ");
// Emphasize the matching text in the tags
this._setUpDescription(this._extra, sortedTags);
// Treat tagged matches as bookmarks for the star
type = "bookmark";
} else if (type == "keyword") {
// Configure the extra box for keyword display
this._extraBox.hidden = false;
this._extraBox.childNodes[0].hidden = true;
this._extraBox.childNodes[1].hidden = false;
this._extraBox.pack = "start";
this._titleBox.flex = 0;
// Put the parameters next to the title if we have any
let search = this.getAttribute("text");
let params = "";
let paramsIndex = search.indexOf(' ');
if (paramsIndex != -1)
params = search.substr(paramsIndex + 1);
// Emphasize the keyword parameters
this._setUpDescription(this._extra, params);
// Don't emphasize keyword searches in the title or url
this.setAttribute("text", "");
} else {
// Hide the title's extra box if we don't need extra stuff
this._extraBox.hidden = true;
this._titleBox.flex = 1;
}
// Give the image the icon style and a special one for the type
this._typeImage.className = "ac-type-icon" +
(type ? " ac-result-type-" + type : "");
// Show the url as the title if we don't have a title
if (title == "")
title = url;
// Emphasize the matching search terms for the description
this._setUpDescription(this._title, title);
if (setupUrl)
this._setUpDescription(this._url, url);
// Set up overflow on a timeout because the contents of the box
// might not have a width yet even though we just changed them
setTimeout(this._setUpOverflow, 0, this._titleBox, this._titleOverflowEllipsis);
setTimeout(this._setUpOverflow, 0, this._urlBox, this._urlOverflowEllipsis);
]]>
</body>
</method>
</implementation>
</binding>
</bindings>