bunda1
Вопрос не совсем понятен. Если нужно получить ссылку на окно, то вроде так:
const url = "chrome://mozapps/content/downloads/downloads.xul"; var observer = { observe: function(subject, topic, data) { subject.addEventListener("load", this, false); }, handleEvent: function(e) { var doc = e.target; var win = doc.defaultView; win.removeEventListener("load", this, false); if (doc.location.href != url) return; LOG(win); } } Services.obs.addObserver(observer, "domwindowopened", false); this.onDestroy = function() { Services.obs.removeObserver(observer, "domwindowopened", false); }
Отсутствует
Dumby
Отлично, почти то что нужно. А как с этим кодом открывать не стандартный менеджера загрузок, а загрузки в табе:
Добавлено 05-12-2012 04:27:40
Не срабатывает с твоим кодом.
Отредактировано bunda1 (05-12-2012 04:27:40)
Отсутствует
А как с этим кодом открывать не стандартный менеджера загрузок, а загрузки в табе
С этим кодом наверное никак. Код ловит и опознает уже открывшееся окно.
Ну разве что win.close(); и дальше открывай в табе, но окно всё равно мелькнёт
Отсутствует
bunda1
Код для гугла сработал, но например в вк когда нажимаешь "показать полностью" новость, загружается пустая вкладка
Kод не будет дружить с AutoPagerize и подобными вещами:
function removeTarget(e) { // стоп, если открыть другие владки в фоновом режиме .... if (e.target.linkedBrowser.currentURI.spec !== getBrowser().currentURI.spec) return; var links = gBrowser.contentDocument.links; if ( !links ) return; // стоп, если на странице ссылок нет for ( var i = 0; i < links.length; i++ ) { links[i].removeAttribute("target", "_blank"); }; } gBrowser.tabContainer.addEventListener("TabAttrModified", removeTarget, true); this.onDestroy = function() { gBrowser.tabContainer.removeEventListener("TabAttrModified", removeTarget, true); };
Добавлено 05-12-2012 16:16:40
надо выключить открытие менеджера загрузок в конфиге,а потом ловить момент начала загрузки и открывать окно менеджера в табе самому.
как ловить я не знаю ибо не силён но раз стандартные средства это делают значит в ФФ уже есть соответствующая функция остаётся только её найти. искать рекомендую по названию строчки в конфиге
Ловить момент начала загрузки и открывать окно менеджера в табе - это уже у меня работает.
Мне нужно при клике на всплывающей подсказке которая сообщает об окончание загрузки открыть загрузки в табе а не в стандартном менеджере загрузок. Ну и подобное.
И я уже пересмотрел в Firefox и в расширениях подобные коды но не хватает знаний что бы их использовать.
Отредактировано bunda1 (05-12-2012 16:16:40)
Отсутствует
Сделайте пожалуйста кнопочку для включения/отключения куков, с возможностью видеть их состояние (вкл./откл.) и сохранения при перезагрузке FF, а то постоянно приходится лазить в настройки ставить/снимать галочку.
На подобии таких как "Proxy" или "JavaScript":
--
FF v3.6.28, WinXPSP3
Отсутствует
okkamas_knife
Папробуй :
// Отслеживать загрузку и запускать нужные функции ...................................................... var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(myDownloadObserver, "dl-start", false); observerService.addObserver(myDownloadObserver, "dl-done", false); observerService.addObserver(myDownloadObserver, "dl-cancel", false); observerService.addObserver(myDownloadObserver, "dl-failed", false); function myDownloadObserver(subject, topic, state ) { if ( topic == "dl-start" ) { alert("dl-start") } if ( topic == "dl-done" ) { alert("dl-done") } if ( topic == "dl-cancel" ) { alert("dl-cancel") } if ( topic == "dl-failed" ) { alert("dl-failed") } };
А эсли так:
// Открывать загрузки в табе ................................................................................... const trueDownloadsImg = "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAIAAAMACyIAEGyoLtVqpyrVDSIADwAAAgABAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAgAAAgALHwAPZaAmwsXxnv+t63n/XpwbwAcUAA0AAAIAAQIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwADAAACAAwgAA9loyXFv+2W/7/wl/yg52b8n+Nj/1OJG8EBCAAMAAACAAECAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAIAAAIADCEADmSiI8Sx4oX/suWH+7HmhP+T3FX/i9dK+5LZUv9RhxnAAQkADAAAAgABAgACAAAAAAAAAAAAAAAAAQIAAgAAAgANIQANY6Eiw6nbfP+l23f7p913/6fed/+I0kj/gs5A/37KPvuL0Ev/UIYYvwIJAAsAAAIAAQIAAgAAAAABAQABAAABAAsgAA1gnh/BoNJy/5vSa/qe1W3/odhx/5/Ybv+Cy0H/fsg8/3zFOv92vjX6g8VD/0yCFL0BCAALAAABAAABAAEAAAEACRUAEmqmKcyn2Hr/n9Ry/Z3Tbv+Yz2b/mtJp/5nRZv99xDz/ecI3/3e/Nv97wT7/e78//YvKT/9Xjhy/BAwACQAAAQAAAAEAFCkAL2CUKdxhkTDXXI4o1m+mN/KWzGb/ksth/pLLX/93vTn/croz/nm9Pf9noizyVoog1lqNJtlbkx/TDyAAHwAAAQAAAAAAAAAAAAAAAAACAwEEAAAAAD5oFqeXz2X/icFY+4rDWP9ytjX/bLEu+3/CQv8+ZxSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQEDBAMEAAAAAEFqFqeSyV7/g7pR+4S8Uf9usDP/aKsr+3u9Pv9AaRSnAAAAAAMEAgQBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeNxVj/fbRK+3+2Sv9rqzD/ZaYo+3m5PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeJwlT/eLBF+3qyRv9qqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeHwFD/da5B+3exQv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeEv03/cqw8+3WvPv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeCvkn/cKs4+3OuO/9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAD9oE6d+vET/bKky+2+sNf9oqCv/Y6Mm+3e3Ov8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFaeDv0v/cKw5+3OvPP9vqzX/aqcx+3+8RP9AaRSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAEAAAAADlkCox1szT/a6Yv+W2oMPxspy78aqQt+XSyMv85ZAqMAAAAAAECAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; const falseDownloadsImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg=="; // Отслеживать начало загрузки и запускать нужные функции ...................................................... var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(myDownloadObserver, "dl-start", false); function myDownloadObserver(subject, topic, state ) { if ( topic == "dl-start" ) { if ( !custombuttons.getPrefs("browser.download.manager.showWhenStarting") && custombuttons.getPrefs("browser.download.useToolkitUI") ) { downloadManagerInTab(false); } } }; // Отслеживать все команды связные с загрузкой и запускать нужные функции и команды ............................. function getCommand(e) { var command = e.target.getAttribute("oncommand"); if ( command == 'DownloadsIndicatorView.onCommand(event);' || command == 'BrowserDownloadsUI();' || command == 'DownloadsPanel.showDownloadsHistory();') { e.preventDefault(); e.stopPropagation(); downloadManagerInTab(true); } if ( command == "performCommand('cmd_removeFromList');" || command == 'clearDownloadList();') { document.getElementById("Browser:Reload").doCommand(); } }; window.addEventListener("command", getCommand, true); /* Открывать загрузки в табе или переместить вкладку загрузок рядом с текущей вкладкой если загрузи уже открыты и закрыть все лишние вкладки загрузок .......................................................................................*/ function downloadManagerInTab( foregroundTab ) { setTimeout(function() { closeDownloadManager() }, 0); // закрыть стандартный менеджер загрузок var downTabUrl = 'chrome://mozapps/content/downloads/downloads.xul'; var moveTab = false; // переместить вкладку загрузок в текущую группу вкладок и переместить вкладку загрузок рядом с текущей вкладкой .... for ( var i = 0; i < gBrowser.tabs.length; i++) { var tab = gBrowser.mTabs[i]; if ( tab.linkedBrowser.currentURI.spec == downTabUrl ) { if ( TabView._window.GroupItems.groupItems.length > 1 ) { TabView.moveTabTo(tab, (TabView._window.GroupItems._activeGroupItem.id) ); } var selIndex = gBrowser.mCurrentTab._tPos; gBrowser.moveTabTo(tab, (tab._tPos > selIndex)? selIndex + 1: selIndex ); var moveTab = tab.linkedPanel; break; } } // закрыть все лишние вкладки загрузок .... (function () { for ( var i = 0; i < gBrowser.tabs.length; i++) { var tab = gBrowser.mTabs[i]; if ( tab.linkedBrowser.currentURI.spec !== downTabUrl || tab.linkedPanel == moveTab ) continue; gBrowser.removeTab(tab); arguments.callee(); } })(); // открыть вкладку загрузок рядом с текущей вкладкой .... if ( !moveTab ) gBrowser.moveTabTo( gBrowser.addTab( downTabUrl ), gBrowser.mCurrentTab._tPos +1); if ( foregroundTab == true ) { gBrowser.mTabContainer.advanceSelectedTab(+1, true) }; }; // Автоматически меняем иконку для таба "Загрузки" .......................................................... gBrowser.tabContainer.addEventListener("TabAttrModified", function(e) { if ( e.target.linkedBrowser.currentURI.spec == 'chrome://mozapps/content/downloads/downloads.xul' ) { var tabIndex = gBrowser.getBrowserIndexForDocument( e.target.linkedBrowser.contentDocument); var tab = gBrowser.mTabContainer.childNodes[tabIndex]; tab.image = ( tab.label == "Загрузки" )? falseDownloadsImg: trueDownloadsImg; } }, true); // Исправляем ошибки ............................................................................................ function setFakeArguments(e) { if ( e.target.location.href !== 'chrome://mozapps/content/downloads/downloads.xul' ) return; var win = e.target.defaultView; win = win.wrappedJSObject || win; win.arguments = []; }; gBrowser.addEventListener("DOMContentLoaded", setFakeArguments, true); gBrowser.addEventListener("TabClose", setFakeArguments, true); // Закрыть стандартный менеджер загрузок .......................................................................... function closeDownloadManager() { var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator); var dm = wm.getMostRecentWindow("Download:Manager"); if ( dm ) dm.close(); }; // Блокировать повторный запуск обработчиков при открытии настройки панелей ........................................ this.onDestroy = function() { window.removeEventListener("command", getCommand, true); gBrowser.removeEventListener("DOMContentLoaded", setFakeArguments, true); gBrowser.removeEventListener("TabClose", setFakeArguments, true); observerService.removeObserver(myDownloadObserver, "dl-start", false); };
Сделайте пожалуйста кнопочку для включения/отключения куков, с возможностью видеть их состояние (вкл./откл.) и сохранения при перезагрузке FF, а то постоянно приходится лазить в настройки ставить/снимать галочку.
Отредактировано bunda1 (05-12-2012 17:22:19)
Отсутствует
bunda1
Сохранить закладку страницы на ....
Не могу сохранить несколько закладок с некоторых сайтов, вручную прописываю, далеко не ходить http://forum.mozilla-russia.org/viewtopic.php?pid=588991#p588991 невозможно сохранить пару разных страниц.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Custom_Buttons/Cookies_Permissions at master · Infocatcher/Custom_Buttons · GitHub - Mozilla Firefox (Приватный просмотр)
"Cookies Permissions" уже установлена, но нужна кнопа для включения/отключения всех куков (как в настройках FF при снятии/установке галочки "Принимать куки с сайтов") и с сохранением заданного ей состояния при выходе/перезагрузке FF.
Отсутствует
olDjeka
Иконки в коде imgTrue и imgFalse поменяй на свои.
const s = "network.cookie.cookieBehavior"; const imgTrue = "chrome://mozapps/skin/plugins/pluginGeneric-16.png"; const imgFalse = "chrome://mozapps/skin/plugins/notifyPluginBlocked.png"; var button = this; var pref = Application.prefs.get(s); this.onclick = function(e) { if(e.button) return; pref.value = (pref.value == 0)? 2: 0; } function toggleImage() { button.image = (pref.value == 2)? imgFalse: imgTrue; } toggleImage(); pref.events.addListener("change", toggleImage, false); this.onDestroy = function() { pref.events.removeListener("change", toggleImage, false); }
Отсутствует
придётся ставить счётчик
У лисы он вроде уже есть gDownloadMgr.activeDownloadCount, а в симанке незнаю...
А эсли так
Если открыть новое окно браузера, то при загрузке
DM-таб открывается в обоих, у тебя тоже так ?
Отсутствует
Отсутствует
olDjeka
за
надо
Отсутствует
Kод не будет дружить с AutoPagerize и подобными вещами:
Код прекрасно работает с простыми вкладками, но все также проблемы с закрепленными
Например поиск на яндексе, первая ссылка на маркет, раньше открывалась новая вкладка, с твоим кодом открывается в текущей, но если закрепить вкладку то опять открывается в новой, было подумал что Tab Utilities защищает закрепленную вкладку, но нет.
Отсутствует
Код прекрасно работает с простыми вкладками, но все также проблемы с закрепленными
Например поиск на яндексе
Я проверил там только одна ссылка открывается в новой, но почему
Отсутствует
bunda1
Спасибо за улучшение Сохранить ярлык страницы на ...
отличная кнопка
жаль я уже наловчился просто перетаскивать ярлык из адресной строки
небольшой момент, при копировании кода кнопки виснет браузер, но если через инициализацию, то всё ок
Отредактировано LongLogin (05-12-2012 22:48:40)
Отсутствует
я с обсерверами и листенерами так и не подружился
Да я тоже не особо, лишь иногда, лишь частично.
Но попробуй, проверяй и правь:
var dm = Components.classes["@mozilla.org/download-manager;1"].getService(Components.interfaces.nsIDownloadManager); var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); var topics = ["dl-start", "dl-done", "dl-cancel", "dl-failed"]; // in console function test() { var time = new Date().toLocaleString(); LOG(time + " количество активных загрузок = " + dm.activeDownloadCount); } topics.forEach(function(topic) { os.addObserver(test, topic, false); }); this.onDestroy = function() { topics.forEach(function(topic) { os.removeObserver(test, topic, false); }); }
Отсутствует
жаль я уже наловчился просто перетаскивать ярлык из адресной строки
небольшой момент, при копировании кода кнопки виснет браузер, но если через инициализацию, то всё ок
Этот же не удобно. С копированием не понятно, у меня не наблюдается.
Отсутствует