bunda1
Сделал код каторый добавляет в контекстное меню раширеный на странице раширений about:addons новый пункт Открыть папку расширения ...
Если получилось, можешь запостить этот код? Было бы полезно!
Отредактировано Inko7 (25-10-2012 19:49:21)
Отсутствует
Если получилось, можешь запостить этот код? Было бы полезно!
Добавыть в контекстное меню раширений пункт "Открыть папку расширения"
Отсутствует
Почему то у меня не дружат кнопки "Открыть новый таб двойным кликом левой кнопкой на титлебаре(Titlebar)"(у меня открывает по клику на панели вкладок) и "Двойной клик левой кнопкой на табе, закрыть страницу", по отдельности работают нормально, а если вместе то двойной клик по панели вкладок закрывает вкладку вместо открытия новой. Проверял на чистом профиле.
// Двойной клик левой кнопкой на табе закрывает страницу ........... function TabClose(event) { if ( event.button == 0 && event.target.nodeName == 'tab') { event.preventDefault(); event.stopPropagation(); gBrowser.removeCurrentTab(); // закрыть страницу } }; this.onDestroy = function() { removeEventListener("dblclick", TabClose, false, gBrowser.mTabContainer); }; addEventListener("dblclick", TabClose, false, gBrowser.mTabContainer); // Двойной клик левой кнопкой на на титлебаре(Titlebar) открывает новый таб ............ if ( !this.hasAttribute("tabClickStop")) window.addEventListener("dblclick", function(event) { if ( event.button == 0 && event.target.nodeName == 'tabs') { event.preventDefault(); event.stopPropagation(); var open = ( custombuttons.getPrefs("browser.tabs.onTop") && custombuttons.getPrefs("browser.tabs.drawInTitlebar") && document.getElementById("toolbar-menubar").getAttribute("autohide") ) if ( open == 'true' ) { BrowserOpenTab() } } }, false); this.setAttribute("tabClickStop","true");
Отсутствует
Хочу задать вопрос, может и глупый, но все же:
есть команда custombuttons.alertSlide("title", "description"). Время отображения этого алерта около 4-5 секунд. Можно ли регулировать время его показа?
Хочу, например, для некоторых время показа 1-2 секунды. Возможно?
Отсутствует
Inko7
Есть настройка alerts.totalOpenTime, но в Nightly ее уже удалили.
А так это
custombuttons. alertSlide = function (sTitle, sMsg) { var as = Components. classes ["@mozilla.org/alerts-service;1"]. getService (Components. interfaces. nsIAlertsService); as. showAlertNotification ("chrome://custombuttons/skin/button.png", sTitle, sMsg, false, "", null); };
https://developer.mozilla.org/en-US/doc … tion%28%29
+ chrome://global/content/alerts/alert.js и chrome://global/content/alerts/alert.css
А вот в Nightly только стилем:
@-moz-document url("chrome://global/content/alerts/alert.xul") { #alertBox[animate] { animation-duration: 16s !important; } }
Или вообще никак:
function onAlertLoad() { const ALERT_DURATION_IMMEDIATE = 4000; ... if (Services.prefs.getBoolPref("alerts.disableSlidingEffect")) { setTimeout(closeAlert, ALERT_DURATION_IMMEDIATE); return; }
Можно только переопределить эту функцию.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Хочу, например, для некоторых время показа 1-2 секунды. Возможно?
var alertWin = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].getService(Components.interfaces.nsIWindowWatcher) .openWindow(null, "chrome://global/content/alerts/alert.xul", "_blank", "chrome,titlebar=no,popup=yes", null); alertWin.arguments = ["chrome://global/skin/icons/error-16.png", "Надо выделить текст", "qwerty", null, false, ""]; alertWin.setTimeout(function() { alertWin.close() }, 500);
Отсутствует
Inko7
Может нужно:
var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService); // стиль для изображение на сплывающей подсказке .... var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); var uri = makeURI('data:text/css,'+ encodeURIComponent(' #alertImage { height: 25px !important; width: 25px !important; }')); sss.loadAndRegisterSheet(uri, sss.USER_SHEET); // обработчик удаляет стиль если сплывающая подсказка закрывается .... var listener = { observe: function(subject, topic, data) { if ( topic == 'alertfinished') sss.unregisterSheet(uri, sss.USER_SHEET); } } // всплывающая подсказка .... alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", "qwerty", "изображение", false, "data", listener, "");
Отредактировано bunda1 (27-10-2012 22:19:42)
Отсутствует
Файл не найден
Этот файл есть в Nightly.
А вот в 16.0 и более ранних его нету, да.
Добавлено 27-10-2012 23:30:00
Но если слайдинг включен, то не очень красиво получается.
Можно временно менять значение alerts.totalOpenTime.
А в Nightly загружать стиль, переопределяющий animation-duration.
Добавлено 27-10-2012 23:43:27
Можно временно менять значение alerts.totalOpenTime.
showAlertNotification("Title", "Message", 500); function showAlertNotification(title, message, delay) { var totalOpenTime = Application.prefs.getValue("alerts.totalOpenTime", 4000); Application.prefs.setValue("alerts.totalOpenTime", delay); setTimeout(function() { if(Application.prefs.getValue("alerts.totalOpenTime", 4000) == delay) Application.prefs.setValue("alerts.totalOpenTime", totalOpenTime); }, 50); // Тут может понадобиться задержка побольше... Components.classes["@mozilla.org/alerts-service;1"] .getService(Components.interfaces.nsIAlertsService) .showAlertNotification( "chrome://custombuttons/skin/button.png", "Title", "Message", false, "", null ); }
Только будут проблемы, если одновременно выдать несколько таких сообщений.
С задержкой тоже неоднозначно.
Можно восстанавливать настройку после закрытия сообщения, но это будет еще больше мешать другим сообщениям.
И можно добавить наблюдателя открытия окон, ловить окно, дожидаться его загрузки (то есть дожидаться чтения настройки) и восстанавливать параметр. Но это муторно.
Отредактировано Infocatcher (27-10-2012 23:43:27)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
А вот извращение с учетом изменений в Nightly:
showAlertNotification("Title", "Message", 500); function showAlertNotification(title, message, delay) { var win = window.openDialog( "chrome://global/content/alerts/alert.xul", "_blank", "chrome,titlebar=no,popup=yes", "chrome://custombuttons/skin/button.png", title, message, false, "", null ); var totalOpenTime; win.addEventListener("DOMContentLoaded", function loader(e) { win.removeEventListener(e.type, loader, false); totalOpenTime = Application.prefs.getValue("alerts.totalOpenTime", undefined); if(totalOpenTime != undefined) Application.prefs.setValue("alerts.totalOpenTime", delay); var alertBox = win.document.getElementById("alertBox"); if(alertBox && "animationDuration" in alertBox.style) alertBox.style.setProperty("animation-duration", delay + "ms", "important"); }, false); win.addEventListener("load", function legacyLoader(e) { win.removeEventListener(e.type, legacyLoader, false); if(totalOpenTime != undefined) setTimeout(function() { if(Application.prefs.getValue("alerts.totalOpenTime", undefined) == delay) Application.prefs.setValue("alerts.totalOpenTime", totalOpenTime); }, 0); }, false); }
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Перестала работать на кнопка Stf - выделяю текст, появляется окно с выбором папки для сохранения, жму кнопку "сохранить" и окно закрывается. Но самого файла в папке нет. Это только у меня так или проблема в ?
Отсутствует
что за дела
Ошибка: TypeError: aInitiatingDocument is undefined
Источник: chrome://global/content/contentAreaUtils.js
Строка: 336
function internalSave(aURL, aDocument, aDefaultFileName, aContentDisposition,
aContentType, aShouldBypassCache, aFilePickerTitleKey,
aChosenData, aReferrer, aInitiatingDocument, aSkipPrompt,
aCacheKey)
{
...
var persistArgs = {
...
initiatingWindow : aInitiatingDocument.defaultView
};
И
function saveURL(aURL, aFileName, aFilePickerTitleKey, aShouldBypassCache,
aSkipPrompt, aReferrer, aSourceDocument)
{
internalSave(aURL, null, aFileName, null, null, aShouldBypassCache,
aFilePickerTitleKey, null, aReferrer, aSourceDocument,
aSkipPrompt, null);
}
Отредактировано Infocatcher (05-11-2012 02:34:57)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
И что с этим делать?
Может и исправят, кто их знает.
Можно заменить
saveURL("data:text/plain," + encodeURIComponent( uri + ("\r\n\r\n" + getSelect() )), fileTitle + ".txt");
на
saveURL("data:text/plain," + encodeURIComponent( uri + ("\r\n\r\n" + getSelect() )), fileTitle + ".txt", null, false, false, null, content.document);
В общем, надо передавать в saveURL() все параметры, потому как добавленный aSourceDocument последний...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
bunda1
Насчёт кнопки Настройки - парочка наблюдений:
2. Если окошко настроек уже открыто (не этой кнопкой), то если нажать кнопку,
то она его только focus, а фича «...и дает возможность закрыть настройки по двойному клику...»
не подключается. (хотя, может быть и не нужно...)
Без закрытия двойным кликом по странице, себе, вот так переписал:
var features = "chrome, dialog, titlebar, toolbar, " + "centerscreen, minimizable, resizable"; var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator); var win = wm.getMostRecentWindow("Browser:Preferences"); // открыть настройки и фокус на настройки если они уже открыты .... if ( !win ) win = window.openDialog("chrome://browser/content/preferences/preferences.xul", "Preferences", features, "General"); else win.focus(); win.ondblclick = function(e) { var node = e.target.nodeName; if (node == "textbox" || node == "filefield") return; this.close(); }
Отсутствует
Что-то не нашёл. Кнопка UP/Вверх. Перенаправляет на главную/самый верх (т.е. на forum.mozilla-russia.org ) или на список похожих страниц, если вы уже наверху. Хоткей Alt+Up.
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EUP%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6AAAdTAAAOpgAAA6lwAAF2+XqZnUAAAB2ElEQVR4nGL8//8/AzkAIICY0AUYJzLyA3E9IY0AAYSiEaQJSB0wlTJpALLn49MIEEAsaPwD+faZBoZqKgxrDoklADUz/M//n4hNI0AAwTWCbEg0jzEQlmZneP7rKUOonSsDGwM7SPMBoOaF6BoBAogJpslC2TRBQpqf4cvPLww/fv1kePbrMYOXhQ2DpojGAqB8PLpGgABiAgrmm6oYJjjpWwE1fQVq+sXwHagRpPkv82+GHt8WBi0RTZBme2SNAAHEyDCBYT+ULeCl72YgLSnEwMnKxiDFJc1QsbL9A1D8AlT+AtDJhTCNAAHEAuQ4Qp1rz8jIcABkEwh8//MTptgRW+AABBBKqH7+9YWB6zcrmP2D7ScDDzuPAjZNQEvOAwQQPB6BJh+8/OgaAwsTK8OP378YXn17zaAvo6OAHjAwPkAAodj4/suHBfdfPkkQ5RcE841VdBk+fPsIChgHIPcBEINckADCAAHEiJxWYSnHTtvSQJhfgIGFmYlBmleagesfL4MYqyTDorNLGc49O78AlCgAAogRPZFDNU9QEJVNkBKUZBDhE2L49u07w+VH1xlefnnVANTUCFIHEEAYGpEMkAdSBlB8gAESwh9h8gABhFMjIQAQYADQGKKCjfSDsAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E2%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20u%3DgetBrowser%28%29.currentURI%2Cp%3Du.scheme+%27%3A//%27%2Ch%3Du.host+%27/%27%3B%0Aif%28u.spec%3D%3Dp+h%29%7B%0A%20var%20a%3Dh.split%28%27.%27%29%2Cl%3Da.length%2Cn%3D2%3B%0A%20if%28l%3E2%29%7Bif%28a%5B0%5D%3D%3D%27www%27%29%7Ba.shift%28%29%3Bl--%7D%3Bif%28/%5E%28co%7Ccom%7Cnet%7Corg%7Cedu%7Cgov%7Cmil%7Cint%29%24/i.test%28a%5Bl-2%5D%29%29n++%7D%3B%0A%20if%28l%3En%29%7Bh%3D%28n%3D%3D3%3Fa%5Bl-3%5D+%27.%27%3A%27%27%29+a%5Bl-2%5D+%27.%27+a%5Bl-1%5D%7Delse%7Bp%3D%27http%3A//www.google.com/search%3Fq%3Drelated%3A%27+p%7D%0A%7D%3B%0AloadURI%28p+h%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5BAlt+UP%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отредактировано Lex1 (05-11-2012 11:25:18)
Отсутствует
Да, в сниппетах для получения адреса страницы предлагается использовать:
"Получить адрес текущей страницы: var url=getBrowser().currentURI.spec;"
А почему не getBrowser().contentWindow.location - какие-то проблемы?
Отсутствует