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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№1077611-10-2016 21:28:58

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1419
UA: Firefox 46.0

Re: Custom Buttons

Есть у меня такой способ бэкапа текущего профиля, причем, можно бэкапить прямо во время работы браузера.

Для работы требуются:
Файлы - 7z.dll и 7z.exe из архиватора 7-zip любой версии и разрядности (естественно лучше взять x32)
Батники - "_list-folder.bat"

Выделить код

Код:

chcp 1251
dir /a /b /-p /o:gen >_include.txt

и "_profbak.bat"

Выделить код

Код:

@echo off
For /F "Tokens=1 Delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set DateTime=%%i
set "FOX_BACKUP=_ff_backup_%DateTime:~2,2%.%DateTime:~4,2%.%DateTime:~6,2%_%DateTime:~8,2%-%DateTime:~10,2%"
rem файлы _include.txt, 7z.exe и 7z.dll должны быть рядом
rem _list-folder.bat создает _include.txt с листингом папки
7z.exe u -tzip -mx9 -ssw -spf -scsWIN -r0 -i@_include.txt ..\%FOX_BACKUP%.zip

Кидаем весь этот зоопарк в профиль выгруженного браузера.
Запускаем "_list-folder.bat" он создает рядом с собой "_include.txt" - текстовый файл со списком всех папок и файлов профиля. Редактируем, если надо, "_include.txt", желательно удалить из списка "parent.lock", так как вызывает не критическую ошибку. 
Запускаем браузер.
Создаем кнопку -

Выделить код

Код:

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%3E%u0411%u044D%u043A%u0430%u043F%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA51AAAOdQG5Y1EyAAAAhklEQVQ4y6WT0QnAIAxE78Bt2v1cod3PznP9kVLTRKUGBD+Sd5eQUBJWggCWCAkAJPGXOqlUPyVKkrSPQIoCQJGE6AF4HFyGuBmrR3cGQX8Wmp2cL8Cqv5JPD5Zm1D0nFZjTjHpQ7DuI1L3iBjBS9/pvhtjr21OukVkXiX/ug6SWj4mr53wDMz1vldHlLJkAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%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%5B/*CODE*/%0Avar%20file%20%3D%20Services.dirsvc.get%28%27ProfD%27%2C%20Ci.nsIFile%29%3B%0Afile.append%28%22_profbak.bat%22%29%3B%0Afile.launch%28%29%3B%20%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%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

Поучаем возможность бэкапить все файлы-папки профиля, перечисленные в файле "_include.txt", прямо во время работы браузера.
Бэкапы создаются рядом с папкой профиля и имеют имя формата "_ff_backup_дата_время", пример: "_ff_backup_16.10.07_00-57". Формат даты не зависит от системных настроек и жестко задан в батнике. В "_include.txt" можно оставить только действительно нужное, а остальное удалить.

Как бы все это отвязать от файлов в профиле и сделать кнопку с возможностью указания пути к архиватору, но не привязанную к системному пути профиля браузера? Что бы можно было использовать с портативками.

Получение пути профиля, получение списка файлов-папок профиля (можно в справку, для возможности редактирования), путь архиватора, запуск ком.строки, вставка параметров, Enter. Сможет кто ни будь реализовать? smile.gif

Отсутствует

 

№1077713-10-2016 01:19:26

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

Выделить код

Код:

var links = "http://nnmclub.to/?q="+convertFromUnicode("UTF-8",getSelect())+"&w=title";
  gBrowser.addTab(links);

function getSelect() {
   var clip = gClipboard.read();
   gClipboard.write("");
   
   window.content.focus();
   goDoCommand("cmd_copy");
   
   var sel = gClipboard.read();
   clip && gClipboard.write(clip);

   return (sel == '') ? " " : sel.toString().replace(/^\s+|\s+$/g,"");
};

А в какой кодировке текст на этот сайт передавать?

Отсутствует

 

№1077813-10-2016 15:08:27

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

fokanik пишет

А в какой кодировке текст на этот сайт передавать?

Со страничкой сайта надо общаться в той кодировке, которую она сама использует. В случае http://nnmclub.to/ это "windows-1251".

Отредактировано yup (13-10-2016 15:11:21)

Отсутствует

 

№1077913-10-2016 16:53:57

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

yup пишет

это "windows-1251"

ГЅГІГ® "windows-1251"

Отсутствует

 

№1078013-10-2016 17:02:32

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

fokanik

А можно взглянуть на весь код, передающий запрос на сайт?

Отсутствует

 

№1078113-10-2016 17:08:02

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

yup пишет

А можно взглянуть на весь код, передающий запрос на сайт?

Выделить код

Код:

function searchInWebsite( ) { 
   var text = escape( convertFromUnicode("windows-1251", getSelect()) );           
   var url = content.document.domain;   
   var url = encodeURIComponent( url );
   var url = "http://nnmclub.to/?q=" + text + "&w=title";
   gBrowser.addTab( url ); 
};

А во, вот так работает, из кнопки - поиск по сайту.

Выделить код

Код:

var links = "http://nnmclub.to/?q="+convertFromUnicode("windows-1251",getSelect())+"&w=title";
  gBrowser.addTab(links);

А пробовал так.

Отсутствует

 

№1078213-10-2016 18:04:39

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 261
UA: Firefox 33.0

Re: Custom Buttons

У меня по нажатию на кнопку создается таймер

Выделить код

Код:

timer = setInterval (function(){...}, 100)

И получается, если нажать кнопку пока этот таймер тикает, создается еще один таймер  с этим же идентификатором. И первый уже остановить невозможно.
Как сделать, чтобы не создавались дополнительные таймеры пока первый работает?

Отредактировано toxa (13-10-2016 18:06:55)

Отсутствует

 

№1078313-10-2016 18:08:35

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

fokanik
У меня выполнение из кнопки строки

Выделить код

Код:

alert(encodeURIComponent(convertFromUnicode("windows-1251", "АБВГ")));

показывает

Выделить код

Код:

%C3%80%C3%81%C3%82%C3%83

а это никак не ANSI-1251. Если точнее, это безумная (в духе начала 90-х годов) транслитерация в западноевропейские буквы.

Отредактировано yup (13-10-2016 18:09:34)

Отсутствует

 

№1078413-10-2016 18:11:28

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

fokanik
:/ у меня работает.

Выделить код

Код:

var text = escape( convertFromUnicode("UTF-8", getSelect()) );           
var url = "http://nnmclub.to/?q=" + text + "&w=title";
gBrowser.addTab(url); 


function getSelect() {
   var clip = gClipboard.read();
   gClipboard.write("");
   
   window.content.focus();
   goDoCommand("cmd_copy");
   
   var sel = gClipboard.read();
   clip && gClipboard.write(clip);

   return (sel == '') ? " " : sel.toString().replace(/^\s+|\s+$/g,"");
};

Отсутствует

 

№1078513-10-2016 18:42:01

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

bunda1
Пробую вручную конструировать запрос поиска по слову "Геометрия".
Если передавать в UTF-8 -

Выделить код

Код:

http://nnmclub.to/?q=%D0%93%D0%B5%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%8F&w=title

- не находит ничего.
Если передавать в ANSI-1251 -

Выделить код

Код:

http://nnmclub.to/?q=%C3%E5%EE%EC%E5%F2%F0%E8%FF&w=title

- вываливает кучу найденных раздач

Отсутствует

 

№1078613-10-2016 18:53:13

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

yup, bunda1 - спасибо, работает :)

Выделить код

Код:

var zapros = getSelect();

gBrowser.addTab("http://free-rutor.org/search/" + escape(convertFromUnicode("UTF-8", zapros)) + "");
gBrowser.addTab("http://nnmclub.to/?q=" + escape(convertFromUnicode("windows-1251", zapros)) + "&w=title"); 
gBrowser.addTab("http://riperam.org/search.php?keywords=" + escape(convertFromUnicode("UTF-8", zapros)) + "&sr=topics&sf=titleonly&fp=1&tracker_search=torrent#sr");

function getSelect() {
   var clip = gClipboard.read();
   gClipboard.write("");
   
   window.content.focus();
   goDoCommand("cmd_copy");
   
   var sel = gClipboard.read();
   clip && gClipboard.write(clip);

   return (sel == '') ? " " : sel.toString().replace(/^\s+|\s+$/g,"");
};

Отредактировано fokanik (13-10-2016 18:57:51)

Отсутствует

 

№1078713-10-2016 18:57:52

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

yup пишет

bunda1
Пробую вручную конструировать запрос поиска по слову "Геометрия".

Но у меня код ищет не слово "Геометрия" а getSelect(), то есть выделенный текст из страницы у которого уже есть своя кодировка. Так работает без перекодировки:

Выделить код

Код:

var url = "http://nnmclub.to/?q=" + getSelect() + "&w=title";
gBrowser.addTab(url); 


function getSelect() {
   var clip = gClipboard.read();
   gClipboard.write("");
   
   window.content.focus();
   goDoCommand("cmd_copy");
   
   var sel = gClipboard.read();
   clip && gClipboard.write(clip);

   return (sel == '') ? " " : sel.toString().replace(/^\s+|\s+$/g,"");
};

Отсутствует

 

№1078813-10-2016 19:06:13

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

bunda1 пишет

Но у меня код ищет не слово "Геометрия" а getSelect(), то есть выделенный текст из страницы у которого уже есть своя кодировка.

А разве gClipboard.read() возвращает текст в кодировке страницы а не во внутреннем представлении Javascript?

Кстати, откуда в Custom Buttons берётся функция convertFromUnicode с двумя параметрами? В стандартном Javascript её нет (и при вызове её из консоли отладчика, соответственно, получаем ругань), а у функции из nsIScriptableUnicodeConverter параметр только один?

Отсутствует

 

№1078913-10-2016 19:14:08

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

yup пишет

Кстати, откуда в Custom Buttons берётся функция convertFromUnicode с двумя параметрами?

Из window.
1bb8087aad9fda8b9a9d1eca5c5ce04b.png

yup пишет

А разве gClipboard.read() возвращает текст в кодировке страницы а не во внутреннем представлении Javascript?

:/ получается так.

Отсутствует

 

№1079013-10-2016 19:19:02

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

bunda1
Вот из этой картинки как раз и видно, что у функции из nsIScriptableUnicodeConverter параметр только один, а функция с двумя параметрами является обёрткой для него.
Но из CB эта обёртка вызывается, а из консоли - нет. Почему так?

Отсутствует

 

№1079113-10-2016 19:23:43

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

yup пишет

Но из CB эта обёртка вызывается, а из консоли - нет. Почему так?

А вот не знаю.

Отсутствует

 

№1079213-10-2016 20:24:14

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 261
UA: Firefox 33.0

Re: Custom Buttons

Ну а с моим вопросом по таймеру как?
https://forum.mozilla-russia.org/viewtopic.php?pid=724576#p724576

Отсутствует

 

№1079313-10-2016 20:40:07

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

toxa пишет

Ну а с моим вопросом по таймеру как?
https://forum.mozilla-russia.org/viewtopic.php?pid=724576#p724576

Выделить код

Код:

if ( self.interval ) {     
     alert('stop');
     return;
     }
     
self.interval = setInterval(()=>  {
   custombuttons.alertSlide("alert", "2000");
   
   clearInterval(self.interval);
   delete self.interval;
}, 2000);

или

Выделить код

Код:

if ( self.interval ) {     
     clearInterval( self.interval );
     delete self.interval;
     return;
     }
     
self.interval = setInterval(function() {
   custombuttons.alertSlide("alert", "700");
   
   Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager)
   .minimizeMemoryUsage(null);
}, 12000 );

Отсутствует

 

№1079413-10-2016 22:07:50

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

bunda1 пишет
yup пишет

А разве gClipboard.read() возвращает текст в кодировке страницы а не во внутреннем представлении Javascript?

:/ получается так.

Засовываю в кнопку код

Выделить код

Код:

goDoCommand("cmd_copy");
alert(gClipboard.read());

Захожу на nnmclub.to, выделяю там кусочек русского текста, жму кнопку. Выскакивает окошко с выделенным мной текстом. А ведь в Javascript внутреннее представление текста только одно - UTF-16, и если бы gClipboard.read() возвращала текст в кодировке страницы (ANSI-1251), то я должен был бы увидеть белиберду.

А дальше запускаю системную утилиту просмотра содержимого буфера обмена и вижу, что при копировании любого текста в браузере он помещается в буфер сразу в трёх форматах: OEM, ANSI и Unicode. Из чего следуют два вывода:
1. При чтении текста из буфера обмена неизвестно, в какой кодировке этот текст был изначально.
2. Функции чтения текста из буфера никакого смысла заморачиваться с левыми (для Javascript) кодировками, если оттуда можно сразу взять готовый Уникод.

Отсутствует

 

№1079516-10-2016 21:25:45

Владимир Болотников
Участник
 
Группа: Members
Зарегистрирован: 16-10-2016
Сообщений: 13
UA: Firefox 49.0

Re: Custom Buttons

Подскажите пожалуйста, как отредактировать кнопку для сайта (код), которую создаёт вот эта кнопка  https://forum.mozilla-russia.org/viewtopic.php?pid=624291#p624291, чтобы сайт открывался не в новой закладке а в боковой панели? :angry:

Или может кто подскажет код кнопки для открытия определённого сайта в боковой панели?

Отредактировано Владимир Болотников (16-10-2016 21:28:39)

Отсутствует

 

№1079616-10-2016 21:37:12

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

Владимир Болотников пишет

Или может кто подскажет код кнопки для открытия определённого сайта в боковой панели?

Выделить код

Код:

openWebPanel("habrahabr", "https://habrahabr.ru/post/111308/");

Отсутствует

 

№1079716-10-2016 21:48:33

Владимир Болотников
Участник
 
Группа: Members
Зарегистрирован: 16-10-2016
Сообщений: 13
UA: Firefox 49.0

Re: Custom Buttons

bunda1
Спасибо большое :)

Отсутствует

 

№1079817-10-2016 00:23:41

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 52.0

Re: Custom Buttons

Владимир Болотников
Вот ещё кнопку посмотри №153

Отсутствует

 

№1079917-10-2016 10:01:35

Владимир Болотников
Участник
 
Группа: Members
Зарегистрирован: 16-10-2016
Сообщений: 13
UA: Firefox 49.0

Re: Custom Buttons

voqabuhe
Эта кнопка не работает как описано,  левая кнопка мыши (ЛКМ) не выводит ничего  и поэтому сайты сохранить в список не возможно. У меня портативка 49.0.1

Ещё вопросик если можно, а Custom Buttons понимает относительные пути до папки с профилем, если например сделать htm  и положить его в папку с профиле и показывать по  кнопке в боковой панели.
Или  в кнопке нужно обязательно прописывать абсолютный путь типа: "file:///D:/FirefoxPortable/myprofile/main.htm"

Отредактировано Владимир Болотников (17-10-2016 11:04:01)

Отсутствует

 

№1080017-10-2016 12:22:11

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 261
UA: Firefox 33.0

Re: Custom Buttons

Спасибо bunda1 за помощь с таймером.  Я сделал, все работает.

Ну а если все же получилось, что создались два таймера с одинаковым идентификатором и к одному из них вроде как нет доступа, как можно его удалить или остановить? Чтоб без перезапуска браузера?

Отсутствует

 

Board footer

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