Страницы: 1
Я использую Bookmarks Tab со своими изменениями.
У меня получилось сделать его совместимым с 12 - 16, но с небольшой проблемой: в новой вкладке адресная строка заполнена значением browser.newtab.url: chrome://bookmarks/content/bookmarks.html
Сейчас я решаю это с помощью URL Bar Cleaner. Но лучше было бы, если бы адресная строка оставалась чистой. То есть надо или автоматически стирать её содержимое после открытия новой вкладки; или не использовать browser.newtab.url (тем более что в старых версиях хватает параметра extensions.bookmarks.startPage, который в последних версиях не срабатывает).
Отредактировано Пандёнок (06-07-2012 20:27:36)
Отсутствует
Может в Bookmarks Tab в tabloader.js
за
положить этот код:
var enabled = [ "chrome://bookmarks/content/bookmarks.html", ]; gBrowser.tabContainer.addEventListener("TabSelect", function(event) { if (content.location.href.indexOf(enabled) != -1){ gURLBar.value = ""; gURLBar.focus(); } }, false); gBrowser.addEventListener("pageshow", function(event){ //стоп, если открыть другие владки if (event.target.location.href !== getBrowser().currentURI.spec) return; if (content.location.href.indexOf(enabled) != -1){ gURLBar.value = ""; gURLBar.focus(); } }, false);
Отредактировано bunda1 (07-07-2012 00:13:52)
Отсутствует
Пандёнок
это не проблема:
gBrowser.addEventListener("pageshow", function(event){ //стоп, если открыть другие владки if (event.target.location.href !== getBrowser().currentURI.spec) return; if (content.location.href.indexOf("chrome://bookmarks/content/bookmarks.html") != -1){ gURLBar.value = ""; gURLBar.focus(); } }, false);
Отсутствует
Пандёнок
У меня на FF16 работает как ты просил - при повторном переключении на новую вкладку адресная строка не очищается. Может я что то не правильно понял?
Ты коды поменял?
Отредактировано bunda1 (07-07-2012 03:34:11)
Отсутствует
bunda1
Ничего не поменялось.
Ну тогда удали из Bookmarks Tab > chrome > content > tabloader.js мои коды.
И за Bookmarks Tab > chrome > content > tabloader.js >
положи этот код:
window.addEventListener("command", function(event){ if ( event.target.getAttribute("oncommand") == 'BrowserOpenTab();') { BtTabLoader.clearUrlBar(); } }, true);
У меня на FF16 этот код отлично работает.
Отредактировано bunda1 (07-07-2012 20:32:53)
Отсутствует
Разобрался.
var BtTabLoader = { TIMEOUT: 100, isNewTab: false, start: function() { gBrowser.addEventListener("pageshow", function(event){ //стоп, если открыть другие вкладки if (event.target.location.href !== getBrowser().currentURI.spec) return; if (content.location.href.indexOf("chrome://bookmarks/content/bookmarks.html") != -1){ gURLBar.value = ""; gURLBar.focus(); } }, false); addEventListener("load", function() {
...
работает так как я просил.
Но не знаю, как будет практически удобнее:
если адресная строка очищается каждый раз, освобождая место для адреса (недонабранный пользователем адрес после переключения сотрётся)
или если строка очищается только при первом переключении на вкладку (при втором переключении строка заполнится, если пользователь в неё ничего не ввёл до того)
???
Отсутствует
Пандёнок
Этот код быстрее очищает адресную строку и меньше потребляет ресурсы, попробуй Сегодня 19:29:53
Отредактировано bunda1 (07-07-2012 23:44:24)
Отсутствует
Или я опять чего-то не понял, или не срабатывает.
Ты что то сделал не правильно, вот какой должен быть tabloader.js
var BtTabLoader = { TIMEOUT: 100, isNewTab: false, start: function() { addEventListener("load", function() { BtTabLoader.loadInExistingTabs(); gBrowser.addEventListener("load", BtTabLoader.onPageLoad, true); gBrowser.addEventListener("NewTab", BtTabLoader.onNewTab, false); window.addEventListener("command", function(event){ if ( event.target.getAttribute("oncommand") == 'BrowserOpenTab();') { BtTabLoader.clearUrlBar(); } }, true); var tabMenu = document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu"); var newTabContextItem = tabMenu.firstChild; newTabContextItem.addEventListener("command", BtTabLoader.onNewTab, false); var newTabCommand = $("cmd_newNavigatorTab"); newTabCommand.addEventListener("command", BtTabLoader.onNewTab, false); }, false); }, isBlank: function(doc) { return doc && doc.location == "about:blank"; }, getURL: function() { return BtPrefs.getString("startPage"); }, loadIn: function(doc) { var url = BtTabLoader.getURL(); if (url && url != "about:blank") { doc.location = url; BtTabLoader.clearUrlBar(); } }, loadInExistingTabs: function() { var tabs = gBrowser.tabContainer.childNodes; for(var i = 0; i < tabs.length; i++) { var tab = tabs[i]; if (!tab.hasAttribute("busy")) { var doc = tab.linkedBrowser.contentDocument; if (BtTabLoader.isBlank(doc)) BtTabLoader.loadIn(doc); } } }, onNewTab: function() { BtTabLoader.isNewTab = true; }, onPageLoad: function(e) { var doc = e.originalTarget; if (doc.location == BtTabLoader.getURL()) { BtTabLoader.addToHistory(doc.location, doc.title); } var singleTab = gBrowser.tabContainer.childNodes.length == 1; if ((BtTabLoader.isNewTab || singleTab) && BtTabLoader.isBlank(doc)) { BtTabLoader.isNewTab = false; BtTabLoader.loadIn(doc); } }, addToHistory: function(url, title) { var entry = Components.classes["@mozilla.org/browser/session-history-entry;1"] .createInstance(Components.interfaces.nsISHEntry); entry.setURI(BtURL.getNsiURL(url)); entry.setTitle(title); var sessionHistory = gBrowser.sessionHistory; if (sessionHistory) { sessionHistory.QueryInterface(Components.interfaces.nsISHistoryInternal); if (!sessionHistory.count) { sessionHistory.addEntry(entry, true); } } }, clearUrlBar: function() { var urlbar = $("urlbar"); var input = document.getAnonymousElementByAttribute(urlbar, "anonid", "input"); input.style.visibility = "hidden"; setTimeout(function() { $("urlbar").value = ""; input.style.visibility = "visible"; $("urlbar").select(); }, BtTabLoader.TIMEOUT); } }
Отредактировано bunda1 (08-07-2012 23:16:17)
Отсутствует
Страницы: 1