Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

Разработка » Отлов Right\Left click по кнопке на toolbar » 12-09-2015 16:33:04

Странно, но сейчас срабатывает без каких либо event.preventDefault(); и event.stopPropagation();
Но первый клик всегда уходит "в молоко". Со второго клика уже начинает действовать функция.
Видимо это происходит потому, что код добавляющий обработчик события вешается уже после нажатия на кнопку на тулбаре.

Можете подсказать, как можно повесить его раньше, чтобы уже первый клик по кнопке срабатывал?
Пробовал в overlay писать код инициализации в теге <script> - не помогло.

Разработка » Отлов Right\Left click по кнопке на toolbar » 11-09-2015 13:59:24

bunda1 спасибо за помощь, но не помогло.

В ходе экспериментов по подстановке в разные места функций выяснилось, что:
Первый код вообще все блокирует, т.е. кнопка такое ощущение что даже не нажимается.
Второй код просто не работает.

Разработка » Отлов Right\Left click по кнопке на toolbar » 10-09-2015 17:48:15

Немного поспешил...
При отлове ПКМ всплывает стандартное меню (хотя и не всегда, иногда почему-то оно не выводилось), как правильно его отключить?

Выделить код

Код:

function MakeChoice (event) { //Функция вызывается из оверлея по команде oncommand="MakeChoice()"
        
event.preventDefault();
event.stopPropagation();
// event.type == "mouseup" && closeMenus(event.target); // пробовал и так
if (event.button === 0) {Alert("ЛКМ");} //Left
else if (event.button === 2) {Alert("ПКМ");} //Right
}

var testbt = document.getElementById("Test_button")
testbt.addEventListener("mousedown", MakeChoice);
},

Разработка » Отлов Right\Left click по кнопке на toolbar » 10-09-2015 16:51:02

Спасибо, получилось.
Основная проблема оказалась в том, что я пытался внедрить этот код в overlay, а не сам исполняемый js sript.

Разработка » Отлов Right\Left click по кнопке на toolbar » 08-09-2015 17:02:11

Добрый день.

В overlay.xul создаю кнопку на панеле.

Выделить код

Код:

<toolbarpalette id="BrowserToolbarPalette">
    <toolbarbutton id="Test_button" 
        label="Test_B" 
        tooltiptext="Test_click" 
        oncommand="MakeTest()" 
        class="toolbarbutton-1 chromeclass-toolbar-additional">
    </toolbarbutton>
</toolbarpalette>

И все отлично работает. Но вот задумал я сделать вызов разных функций в зависимости от ЛКМ или ПКМ.
И вроде бы нашел код похожий на форуме. Вроде 1-Left \ 2 - Middle \ 3 - Right click.

Выделить код

Код:

var testbt = document.getElementById("Test_button")
testbt.addEventListener("mousedown",function(e) {console.log(e); // you can inspect the click event
if (e.which === 3) {alert("right click");}
});

Но как не прикручиваю его в файл overlay - не получается...  Кнопка вообще не выводится на панель.
Можете подсказать как правильно сделать?

Разработка » Удалить файл/папку ; Выбрать файл/папку » 07-09-2015 16:26:06

Код работает. Но не до конца его понимаю. Можете его объяснить для повышения уровня образованности?

К примеру я так понял, что .open это метод для открывания окна, аналог которого .show() и который сейчас не рекомендуется использовать?
А как прочитать вот эти условия? (result => result == picker.returnOK && picker.file.remove(true))

Перевел этот код в аналогичный, но более понятный для меня:

Выделить код

Код:

var nsIFilePicker = Components.interfaces.nsIFilePicker;
var foldp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
foldp.init(window, "", nsIFilePicker.modeGetFolder);
var rav = foldp.show();
if (rav == nsIFilePicker.returnOK) {
foldp.file.remove(true);}

В нем я могу записать в переменную выбранный путь .file.path, а как это сделать в вашем коде?

И самое главное! Можно ли как-то удалить папку просто подставив путь, т.е. без ее выбора в окне пользователем?
Файл так можно удалить. При удалении файла я использую .initWithPath(delpat

Разработка » Удалить файл/папку ; Выбрать файл/папку » 06-09-2015 14:51:24

Добрый день.

1) Можно удалить файл, используя код:

Выделить код

Код:

function delete_file_by_path(delpath)
{var file = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(delpath);
if (file.exists()) file.remove(false);}

delete_file_by_path (delpath); //Активируем

Вопрос - можно ли удалить папку?
По крайней мере этим же кодом сделать этого не получилось. Подозреваю что все дело в .nsILocalFile, но чего-то похожего на .nsILocalFolder не нашел.

2) Так же к примеру мне нужно открыть стандартное окно для выбора файла, чтобы получить путь к файлу. Это делаю кодом:
[code]
var chosenpath; // В этой переменной будет путь к файлу
function getpatch(dialogtitle)
{var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"]
        .createInstance(nsIFilePicker);
fp.init(window, dialogtitle, nsIFilePicker.modeOpen);
var rv = fp.show();
if (rv == nsIFilePicker.returnOK) {cho

Разработка » Сохранение не активной вкладки » 06-09-2015 14:44:20

Спасибо, получилось.

Судя по ссылке придется переписывать код расширения потом.
Но по моему возможность обращаться из активного окна к другой вкладке сохраниться, разве нет?

Разработка » Сохранение не активной вкладки » 05-09-2015 08:54:33

Добрый день.

Мне нужно сохранить вкладку. Для этого приходится использовать код:

Выделить код

Код:

var TabIndex = gBrowser.tabContainer.selectedIndex; //Запоминаю индекс текущей вкладки
gBrowser.selectedTab = ТутВкладка; // Делаю нужную вкладку активной
saveDocument(window.content.document, true); // Сохраняю документ
gBrowser.removeCurrentTab(); // Закрываю активную вкладку
gBrowser.selectTabAtIndex(TabIndex ); //Активирую ранее запомненную вкладку, иначе браузер открывает вкладку слева от закрытой

Кажется очень много действий, плюс возникают мелькания из-за переходов.
Возможно как-то в строке где сохраняется документ обратиться ко вкладке без перехода на нее?
Т.е. есть какой-то код, который заменит window.content.document и будет воспринят функцией saveDocumet?

Разработка » Обновление содержимого HTML страницы » 05-09-2015 03:17:30

Добрый день.

Мне необходимо:
Открыть шаблон HTML страницы с локального компьютера (потому что это имхо просто легче чем генерировать страницу с нуля) и вставить в него данные.
Далее вывести диалог на сохранение страницы.

Вот так заполняем содержимое шаблона.

Выделить код

Код:

var TabOpen = gBrowser.addTab('Путь к файлу на локальном компьютере'); 
var Tab = gBrowser.getBrowserForTab(TabOpen);
Tab.addEventListener("load", function () {
var recipientHTML = Tab.contentDocument.body.innerHTML
// Тут работаем с recipientHTML как со String и меняем все что нужно.
Tab.contentDocument.body.innerHTML = recipientHTML; //Тут записываем новое содержимое страницы.
 }, true);

Вцелом все работает, текстовые переменные заменяются и сразу же отображаются в новых значениях.
Но есть проблема, на странице есть интерактивная карта и даже тогда когда я просто перезаписываю innerHTML (как есть) без изменений, карта визуально "замерзает" и с ней невозможно взаимодействовать.
У карты следующий код:
[code]<link hr

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]