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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№587609-02-2013 11:16:01

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

Re: Custom Buttons

serg00700 пишет

Эта работает, но только завышает показания.

У меня точно показывает. Просто в коде кнопки надо уменьшить время обновления показателя, она просто запаздывает, поэтому и появляется расхождение с диспетчером.

Отсутствует

 

№587709-02-2013 11:31:39

serg00700
Участник
 
Группа: Members
Зарегистрирован: 27-10-2010
Сообщений: 74
UA: Firefox 18.0

Re: Custom Buttons

voqabuhe пишет

serg00700 пишет: Эта работает, но только завышает показания.У меня точно показывает. Просто в коде кнопки надо уменьшить время обновления показателя, она просто запаздывает, поэтому и появляется расхождение с диспетчером.

я сразу для проверки изменил

Выделить код

Код:

_interval: 2000, //ms

на 1 . Отзывы читал в теме. У многих корректно работает.
у меня в виндовс 8

А как объединить строку поиска с адресной?

Отредактировано serg00700 (09-02-2013 11:35:14)


Mozilla  Firefox -  Просто "мега бомба"

Отсутствует

 

№587809-02-2013 15:03:35

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 18.0

Re: Custom Buttons

okkamas_knife пишет

а можно както такой изврат поправить? ;)чтоб выбор пункта меню таки срабатывал?:whistle:

Выделить код

Код:

<menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
       oncommand="this.parentNode.getselvalue(event)">

Дело в том, что все on* атрибуты выполняются в глобальном контексте, так что переменные из кода они не видят.

okkamas_knife пишет

можно ли сделать кнопку которая либо полностью удаляет поле Etag из всех хттп заголовков(входящих и отправляемых)
либо набивает его при отправке случайными значениями?

Можно, но не нужно: каждое новое окно будет делать то же самое повторно.
Вот тут есть пример расширения.

Только вот на этом проблемы параноика не закончатся.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№587909-02-2013 15:04:37

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

Re: Custom Buttons

Dumby
Ты просто гений :), мне этот код как раз и был нужен что бы переключить настройки при выходе но не при рестарте, а если конкретно то отключить использование прокси.

Странно но почему этот код так не работает:

Выделить код

Код:

var observer = {
    observe: function(subject, topic, data) {
        alert(data);
    }
};
Services.obs.addObserver(observer, "quit-application", false);

Именно так я этот код проверял раньше :/

Отредактировано bunda1 (09-02-2013 15:05:08)

Отсутствует

 

№588009-02-2013 15:47:11

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

Re: Custom Buttons

serg00700 пишет

А как объединить строку поиска с адресной?

Я не знаю как объединить строку поиска с адресной используя Custom Buttons. Но можно скрыть строку поиска через userChrome.css

Выделить код

Код:

#search-container:not([show = "true"]) { display: none !important; }

И потом открывать сочетанием клавиш Snift + Z, а после поиска панель поиска сама закроется.

Выделить код

Код:

const searchbar = document.getElementById("searchbar");
const searchContainer = document.getElementById("search-container");

// Открывать панель поиска сочетанием клавиш Snift + Z .......................................
function handleKeydown(e) { 
  if ( (e.shiftKey) && (!e.altKey) && (!e.ctrlKey) && (e.keyCode == 90) ) {
       e.preventDefault();
       searchContainer.setAttribute('show', true ); 
       searchbar.focus();
       };  
}
window.addEventListener('keydown', handleKeydown, false);
this.onDestroy = function(reason) {
   window.removeEventListener('keydown', handleKeydown, false);
};

// Автоматически закрыть панель поиска после запуска поиска ................................
(function() {
    var func = BrowserSearch.searchBar.handleSearchCommand.toString()
                   .replace(/^\s*function.+{/, '').replace(/}\s*$/, '');
    
    var code = ['document.getElementById("search-container").setAttribute("show", false);',
                'textBox.value="";'
               ].join('');

    func += code;
    BrowserSearch.searchBar.handleSearchCommand = new Function('aEvent', func);
})();

Отредактировано bunda1 (09-02-2013 15:47:43)

Отсутствует

 

№588109-02-2013 16:15:06

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

bunda1
Помнишь, для кнопки Translate тебе надо было скрыть гугловские панели и растянуть переводимый контент? Кажется вот стиль работает:

Выделить код

Код:

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain('translate.google.com') {
#gb, #gt-c {
display: none !important;
}
#contentframe {
top: 0 !important;
}
}

Отсутствует

 

№588209-02-2013 16:37:42

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

Re: Custom Buttons

Kamui
Действительно работает. Спасибо что вспомнил про меня :)
А вот через userContent.css не работает, но это не проблема:

Выделить код

Код:

var css = '@-moz-document domain("translate.google.com") {\
#gb, #gt-c { display: none !important; }\
#contentframe { top: 0 !important; }\
}';
var uri = makeURI("data:text/css," + encodeURIComponent(css));
var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);

Добавлено 09-02-2013 16:48:48
Похоже, я слишком рано обрадовался. Стиль как то блокирует перевод текста в google переводчике :(

Отредактировано bunda1 (09-02-2013 16:54:37)

Отсутствует

 

№588309-02-2013 17:03:11

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

bunda1
Ну, я через User Style Manager применяю и перевод вроде работает. Попробуй может убрать область применения, все равно ведь через кнопку стиль будет грузиться только там где нужно.

Добавлено 09-02-2013 17:06:04
И у меня через userContent.css работает нормально.

Добавлено 09-02-2013 17:07:56
И код который ты написал тоже работает, т.е. корректно загружает стиль :)
Можно попробовать вместо #gb, #gt-c { display: none !important; } сделать #gb, #gt-c { visibility: collapse  !important; }

Отредактировано Kamui (09-02-2013 17:08:44)

Отсутствует

 

№588409-02-2013 17:35:27

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

Re: Custom Buttons

Нет никак не получается, мистика однако. В переводчике текста просто пустая страница.
Может дело в том что у меня FF17 а у тебя FF19

Отредактировано bunda1 (09-02-2013 18:22:47)

Отсутствует

 

№588509-02-2013 17:55:57

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

bunda1 пишет

Нет никак не получается, мистика однако. В переводчике текста просто путая станица.
Может дело в том что у меня FF17 а у тебя FF19

Странно, скинь готовый вариант кнопки, проверю.

Отсутствует

 

№588609-02-2013 17:59:03

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

Re: Custom Buttons

Kamui пишет

Странно, скинь готовый вариант кнопки, проверю.

Выделить код

Код:

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%3ETranslate%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKBMpTCYX4GMrH/9gMxn/YDQV/2cyG/9nLxr/YjMd/10xHv9cMRz/XjIa/2ExHP9gNRn/YDIV/2IwHf9ULSL/RCcU4EEoEylLKBfgcjUe/349IP98QRr/gEEd/39AKP+FUjv/h2NL/4lkUP+GYEv/hVQ+/35CJv9+Phz/gEIb/4c8H/96PCT/azgb/0koFOBpMyT/jD8i/4RFIf97RB3/hEUr/7GCdf/q29L/+e3e/97HuP/dwLD/6M2+/76VhP9+RSr/hUMg/5NAH/+NQCX/h0Ai/2Q1Iv9yOyf/lkYn/4xFJP+HSSn/m25Y//7y6v/bw7f/fkw2/3hBJv90QSX/hFI9/+nUxv+2k4H/i0kq/5VIJP+QRiL/lkYn/3Q5Kv9zQSn/mUkp/5tJKf+XSin/roJr//757f+0gG//l0oq/5NMI/+WTCH/i00u/8q0o//jx7j/mFU6/5JMJP+TTiL/l0wl/3Y/K/93Rif/oE4p/6ZNK/+jTSz/pGpS//rn2v/Np5b/kFEx/5BSK/+XTyv/nmFJ/+rTyP/lyrv/nlk+/5NRJv+WUib/l1Ik/3lFK/+BSyr/plQt/6ZULP+mUyv/nFIz/6d3Yf/hxrX/3b6n/7SUf/+7l4b/8NjL//7z6//BkoH/mlMz/55TLP+iUyv/olMp/4FJK/+FSzP/qVUz/61ZMf+sWSv/rFYs/59TM/+cWT//nmJJ/8OSgf/+8ub/+O/b/8ikkv+iVTb/qVgv/6pVMP+1WDT/qVY1/4ZMMf+MUTX/q1sx/7RZMf+2WjH/t1wv/7JbLf+oXDT/nVtD/8yajv/+8uf/ybGZ/5VYOP+zWDL/t1sx/7NYMv+5WjX/sFk2/49SM/+VVDn/s143/7hfNP+8WzX/v141/6xeMv/ZoYD/+9/I/+DBtP/Ss6P/7L+l/7l1Tf+1XjT/vlw0/7tdM/+6YC//tV42/5FYNP+cU0D/uGE9/75fNf/GZTb/wGI4/8OBYv//5tT/5byr/6RjSP+lXD//26eM//TNsf+3YkH/xGI3/8NjNf+7Yi//uGE3/5pZOv+hWEH/wGY9/8RlNP/KaDf/xWY3/9+ef///5tv/v4Vt/8NmOv+9ZUD/xI16//7o2v/FgGX/x2g5/8poNv/KaDb/xWU5/6ZYQv+mYUH/y2s7/8xwN//TbTf/0m46/+CYd///59X/vIJk/81tOv/Bbz//4a6b//7n2P/FiGL/yWw4/9FtN//KcDf/zG45/6dfQP+tZT//1W4//9pxPf/VbTz/1G5B/75wTf/31L7/z56C/8V5TP/TkGP/+NXC//XSv/+4cEr/0nA7/9VwO//Ubz7/1G88/61kP/+0bkj/4XNC/99wPv/gckL/321B/9VwR//Gf2D/6reX/+/DoP/82br//uHO//LSvv/mp33/3nhJ/9dwQv/bb0X/23BG/7RrSP+wb0r/4nhK/+V3Rf/qeEX/8HZE/+lzQf/adUf/yWg+/7lfO/+tYDz/qWFA/6xeOf/IaTn/5nND/+h1SP/pdkj/3ndN/7RtUP+NWTrg2oJX/+uGVf/ofkv/84FN/++ETv/qfk//6n5Q/+h+Uv/ngFP/5oFS/+d/UP/nfk//839O/+5+Tv/uhVj/3YFa/5JYPOCRVkEppFo64NN8UP/dgVT/3oRR/92DTP/ihVj/34FX/+ODVf/mg1T/5IRO/96ET//cglH/4YJT/+CCVv/Te1D/oVk44JBVQCkAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEE%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........................................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20sel%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20sel%20%29%20custombuttons.getPrefs%20%28%22Translate.TextInPopup%22%29%3F%20translateTextInPopup%28%20sel%20%29%3A%20translateTextInGoogle%28%20sel%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21sel%20%29%20custombuttons.getPrefs%20%28%22Translate.PageInMicrosoft%22%29%3F%20translatePageInMicrosoft%28%29%3A%20%28%20content.location.protocol%20%3D%3D%20%27https%3A%27%3F%20translatePageInMicrosoft%28%29%3A%20translatePageInGoogle%28%29%20%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20translateTextInGoogle%28%20gClipboard.read%28%29%20%29%3B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%7D%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043D%u043E%u043F%u043A%u0438%20...................................................................................%0Athis.tooltipText%20%3D%20%22Translate%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20/%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%5Cn%u0421%3A%20%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%22%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%0A//%20%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043D%u0430%u043B%u0438%u0447%u0438%u0435%20%u0441%u0442%u0440%u043E%u043A%20%u0432%20%27about%3Aconfig%27%20%u0438%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20..............................%0Aif%20%28%20%21custombuttons.isPref%28%22Translate.nextPage%22%29%20%29%20%0A%20%20%20%20%20%5B%22Translate.TextInPopup%22%2C%20%22Translate.PageInMicrosoft%22%2C%20%22Translate.nextPage%22%5D.forEach%28function%28pref%29%20%7B%20custombuttons.setPrefs%28%20pref%2C%20false%20%29%20%7D%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20............................................................................................%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%0A//%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0434%u0430%u043D%u043D%u044B%u043C%u0438%20%u0434%u043B%u044F%20%u0441%u043E%u0437%u0434%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%20....%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20%u043C%u0430%u043B%u0435%u043D%u044C%u043A%u043E%u043C%20%u043E%u043A%u043E%u0448%u043A%u0435%22%2C%20value%3A%20%27Translate.TextInPopup%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Microsoft%22%2C%20value%3A%20%27Translate.PageInMicrosoft%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%22%2C%20value%3A%20%27Translate.nextPage%27%20%7D%0A%5D%3B%0A%0A//%20%u0446%u0438%u043A%u043B%20%u043F%u043E%20%u043E%u0447%u0435%u0440%u0435%u0434%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0438%u0437%20%u043C%u0430%u0441%u0441%u0438%u0432%u0430%20%u043D%u0443%u0436%u043D%u044B%u0435%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%u044B%20%u043A%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%20....%20%20%20%20%20%0Aarray.forEach%28function%28%20m%20%29%20%7B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20mItem.setAttribute%28%27checked%27%2C%20custombuttons.getPrefs%28%20m.value%20%29%20%29%3B%0A%20%20%20mItem.setAttribute%28%27onclick%27%2C%20%27custombuttons.setPrefs%28%22%27%20+%20m.value%20+%20%27%22%2C%20%21custombuttons.getPrefs%28%22%27%20+%20m.value%20+%20%27%22%29%29%27%29%3B%20%20%0A%20%20%20menuPopup.appendChild%28%20mItem%20%29%3B%0A%7D%29%3B%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u043C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20....%0AmenuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%0Avar%20cbContextPopup%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0Avar%20clone%20%3D%20cbContextPopup.cloneNode%28true%29%3B%0Aclone.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29%22%29%3B%0Avar%20menu%20%3D%20document.createElement%28%22menu%22%29%3B%0Amenu.setAttribute%28%20%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%20%29%3B%0Amenu.appendChild%28%20clone%20%29%3B%0AmenuPopup.appendChild%28%20menu%20%29%3B%0A%0A%0A%0A/*%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%2C%20%0A%20%20%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%20%u0444%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u0434%u0430%u0441%u0442%20%27false%27%20%20.......................................................*/%0Afunction%20getSelect%28%29%20%7B%0A%0A%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20....%0A%20%20%20%20%20window.content.focus%28%29%3B%0A%20%20%20%20%20var%20selection%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29%3B%0A%0A%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%20....%0A%20%20%20%20%20if%20%28%20selection.toString%28%29.length%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20return%20%28%20selection%20%3D%3D%20%27%27%29%3F%20false%3A%20selection%3B%0A%7D%3B%0A%0A%0A%0A/*%20%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u0442%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Google%20%u0437%u0430%u0432%u0438%u0441%u0438%u043C%u043E%u0441%u0442%u0438%20%u043E%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0432%20%27about%3Aconfig%27%20%0A%20%20%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u0438%u043B%u0438%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20.........................................*/%0Afunction%20translatePageInGoogle%28%29%20%7B%0A%20%20%20var%20url%20%3D%20%22http%3A//translate.google.com/translate%3Fu%3D%22%20+%20content.location%20+%20%22%26hl%3Dru%26ie%3DUTF-8%26sl%3Dauto%26tl%3Dru%22%3B%0A%20%20%20if%20%28%20custombuttons.getPrefs%28%22Translate.nextPage%22%29%20%29%20%7B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20x%20%3D%20gBrowser.mCurrentTab._tPos%20+1%3B%0A%20%20%20%20%20%20%20%20gBrowser.moveTabTo%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%2C%20x%29%3B%20//%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20else%20loadURI%28url%29%3B%20//%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%20%20%20%20%20%20%0A%7D%3B%0A%0A%0A%0A/*%20%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u0442%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Microsoft%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20%u0438%u043B%u0438%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0432%20%u0437%u0430%u0432%u0438%u0441%u0438%u043C%u043E%u0441%u0442%u0438%20%u043E%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0432%20%27about%3Aconfig%27%20....................................*/%0Afunction%20translatePageInMicrosoft%28%29%20%7B%20%0A%20%20%20%0A%20%20%20//%20%u0420%u0430%u0437%u0440%u0435%u0448%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0434%u043B%u044F%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u044F%20NoScript%20....%20%20%20%0A%20%20%20if%20%28%20%22noscriptUtil%22%20in%20window%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20autoReload%20%3D%20custombuttons.getPrefs%28%22noscript.autoReload%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%20autoReload%20%29%20custombuttons.setPrefs%28%22noscript.autoReload%22%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20noscriptOverlay.allowPage%28%29%3B%0A%20%20%20%20%20%20%20%20content.document.location%20%3D%20%22javascript%3Avar%20s%20%3D%20content.document.createElement%28%27script%27%29%3B%20s.type%20%3D%20%27text/javascript%27%3B%20s.src%20%3D%20%27http%3A//labs.microsofttranslator.com/bookmarklet/default.aspx%3Ff%3Djs%26to%3Dru%27%3B%20content.document.body.insertBefore%28s%2C%20document.body.firstChild%29%3B%20void%280%29%3B%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%20autoReload%20%29%20setTimeout%28function%28%29%20%7B%20custombuttons.setPrefs%28%22noscript.autoReload%22%2C%20true%29%20%7D%2C%2010%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20setTimeout%28function%28%29%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20....%0A%20%20%20%20%20%20if%20%28%20custombuttons.getPrefs%28%22Translate.nextPage%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.duplicateTab%28%20gBrowser.mCurrentTab%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20gBrowser.addEventListener%28%22pageshow%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%22pageshow%22%2C%20arguments.callee%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20content.document.location%20%3D%20%22javascript%3Avar%20s%20%3D%20content.document.createElement%28%27script%27%29%3B%20s.type%20%3D%20%27text/javascript%27%3B%20s.src%20%3D%20%27http%3A//labs.microsofttranslator.com/bookmarklet/default.aspx%3Ff%3Djs%26to%3Dru%27%3B%20content.document.body.insertBefore%28s%2C%20document.body.firstChild%29%3B%20void%280%29%3B%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20return%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20%20%20%20//%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20....%0A%20%20%20%20%20%20else%20content.document.location%20%3D%20%22javascript%3Avar%20s%20%3D%20content.document.createElement%28%27script%27%29%3B%20s.type%20%3D%20%27text/javascript%27%3B%20s.src%20%3D%20%27http%3A//labs.microsofttranslator.com/bookmarklet/default.aspx%3Ff%3Djs%26to%3Dru%27%3B%20content.document.body.insertBefore%28s%2C%20document.body.firstChild%29%3B%20void%280%29%3B%22%3B%0A%20%20%20%7D%2C%2010%29%20%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20Google%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%20....................................%0Afunction%20translateTextInGoogle%28%20sel%20%29%20%7B%0A%20%20%20var%20x%20%3D%20gBrowser.mCurrentTab._tPos%20+1%3B%0A%20%20%20var%20url%20%3D%20%22http%3A//translate.google.com/translate_t%3Fhl%3Dru%23auto%7Cru%7C%22%20+%20sel%3B%0A%20%20%20gBrowser.moveTabTo%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%20url%20%29%2C%20x%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20Google%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20%u0432%20%u043C%u0430%u043B%u0435%u043D%u044C%u043A%u043E%u043C%20%u043E%u043A%u043E%u0448%u043A%u0435%20..............................................%0Afunction%20translateTextInPopup%28%20text%20%29%20%7B%0A%20%20%20const%20beg%20%3D%20%22http%3A//translate.google.com/translate_t%3Fprev%3Dhp%26hl%3Dru%26js%3Dy%26text%3D%22%3B%0A%20%20%20const%20end%20%3D%20%22%26file%3D%26sl%3Den%26tl%3Dru%26history_state0%3D%23%22%3B%0A%20%20%20var%20url%20%3D%20beg%20+%20text%20+%20end%3B%0A%20%20%20%20%0A%20%20%20var%20req%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20req.open%28%22GET%22%2C%20url%2C%20true%29%3B%0A%20%20%20%0A%20%20%20req.onload%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20var%20res%20%3D%20req.responseText%3B%0A%20%20%20%20%20%20%20var%20suHTML%20%3D%20Cc%5B%22@mozilla.org/feed-unescapehtml%3B1%22%5D.getService%28Ci.nsIScriptableUnescapeHTML%29%3B%0A%20%20%20%20%20%20%20var%20doc%20%3D%20document.implementation.createHTMLDocument%28%22%22%29%3B%0A%20%20%20%20%20%20%20doc.body.appendChild%28suHTML.parseFragment%28res%2C%20false%2C%20null%2C%20doc.body%29%29%3B%0A%0A%20%20%20%20%20%20%20var%20ruHTML%20%3D%20doc.getElementById%28%22result_box%22%29.innerHTML%3B%0A%20%20%20%20%20%20%20var%20dataURL%20%3D%20%27data%3Atext/html%2C%3C%21DOCTYPE%20HTML%20PUBLIC%20%22-//W3C//DTD%20HTML%204.0//EN%22%3E%3Chtml%3E%3Chead%3E%3Cmeta%20charset%3D%22utf-8%22%3E%3Cmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text/html%3B%20charset%3Dutf-8%22%3E%3C/head%3E%3Cbody%3E%27%3B%0A%20%20%20%20%20%20%20dataURL%20+%3D%20ruHTML%20+%20%27%3C/body%3E%3C/html%3E%27%3B%0A%0A%20%20%20%20%20%20%20var%20sizeX%20%3D%20screen.width/2.2%0A%20%20%20%20%20%20%20var%20sizeY%20%3D%20screen.height/2.2%0A%20%20%20%20%20%20%20var%20posX%20%3D%20screen.width-sizeX%3B%0A%20%20%20%20%20%20%20var%20posY%20%3D%20screen.height-sizeY%3B%0A%20%20%20%20%20%20%20var%20win%20%3D%20window.open%28dataURL%2C%20%22%22%2C%20%22width%3D%22+%28sizeX-30%29+%22%2C%20height%3D%22+%28sizeY-87%29+%22%2C%20screenX%3D%22+posX+%22%2C%20screenY%3D%22+posY+%22%2C%20status%3Dno%2C%20scrollbars%3Dyes%2Cresizable%3Dyes%22%29%3B%0A%20%20%20%20%20%20%20win.focus%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20arguments.callee%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%20win.close%28%29%20%7D%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20return%20%7D%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20true%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20req.channel.loadFlags%20%7C%3D%20req.channel.LOAD_FROM_CACHE%3B%20//%20if%20possible%0A%20%20%20req.send%28null%29%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%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%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u0442%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u0441%u0435%u0440%u0432%u0438%u0441%u0435%20Google%20Translate%20%u0438%u043B%u0438%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Microsoft%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%u043B%u0438%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435.%0Ahttps%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0438%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u0442%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Microsoft.%0A%0A%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0441%20%u043F%u043E%u043C%u043E%u0449%u044C%u044E%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20Google%20Translate%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u0438%u043B%u0438%20%u0432%20%u043C%u0430%u043B%u0435%u043D%u044C%u043A%u043E%u043C%20%u043E%u043A%u043E%u0448%u043A%u0435%20%u043A%u043E%u0442%u043E%u0440%u044B%u0439%20%u043C%u043E%u0436%u043D%u043E%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435.%0A%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0441%20%u043F%u043E%u043C%u043E%u0449%u044C%u044E%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20Google%20Translate%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u0438%u043B%u0438%20%u0432%20%u043C%u0430%u043B%u0435%u043D%u044C%u043A%u043E%u043C%20%u043E%u043A%u043E%u0448%u043A%u0435%20%u043A%u043E%u0442%u043E%u0440%u044B%u0439%20%u043C%u043E%u0436%u043D%u043E%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435.%20%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№588709-02-2013 18:09:40

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

bunda1
Так это кнопка Translate без фикса же? У меня она стоит уже и я создавал новую кнопку с кодом который ты привел:

Выделить код

Код:

var css = '@-moz-document domain("translate.google.com") {\
#gb, #gt-c { display: none !important; }\
#contentframe { top: 0 !important; }\
}';
var uri = makeURI("data:text/css," + encodeURIComponent(css));
var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);

И все работает. Я то думал ты включил уже этот код в кнопку Translate и не работает.
По отдельности у меня работает.

Отсутствует

 

№588809-02-2013 18:26:17

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

Re: Custom Buttons

Kamui
Конечно работает, но переводчике текста просто пустая страница.
Можно конечно это решить в кнопке, включать стиль только при переводе страниц, но хочетса простого решения.

Отредактировано bunda1 (09-02-2013 18:27:15)

Отсутствует

 

№588909-02-2013 18:43:44

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

bunda1 пишет

Конечно работает, но переводчике текста просто пустая страница.

Т.е. если просто зайти на http://translate.google.com, я то думал перевод выделенного текста, через кнопку не работает, вот и втупляю :lol:

Добавлено 09-02-2013 18:47:37
Тогда так:

Выделить код

Код:

@-moz-document domain('translate.google.com') {
#gb, #gt-c:not([class="g-section"]) {
display: none !important;
}

#contentframe {
top: 0 !important;
}
}

Отредактировано Kamui (09-02-2013 18:47:37)

Отсутствует

 

№589009-02-2013 19:03:45

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

Re: Custom Buttons

Das ist fantastic.
Это работает, потом положу этот код в кнопку и к меню кнопки добавлю соответствующий пункт.

Добавлено 09-02-2013 19:06:43
Кстати может подскажешь как исправить эту кнопку Уменьшить яркость сайта:

Выделить код

Код:

var domain = content.location.hostname;

var css = '@-moz-document domain("' + domain + '") {\
html { background: #000 !important; opacity: .8 !important; }\
}';
var uri = makeURI("data:text/css," + encodeURIComponent(css));
var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService);

if ( sss.sheetRegistered(uri, sss.AGENT_SHEET) ) sss.unregisterSheet(uri, sss.AGENT_SHEET);
else sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);

Добавлено 09-02-2013 19:09:21
Проблема в том что кнопка снижает яркость видео и изображений на странице :(

Отредактировано bunda1 (09-02-2013 19:13:12)

Отсутствует

 

№589109-02-2013 19:52:42

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

bunda1 пишет

Кстати может подскажешь как исправить эту кнопку Уменьшить яркость сайта:

Я пробовал стилем как-нибудь сделать, ничего не получилось. Можно сделать как советовал кто-то, создать div на всю страницу, чтобы затемнял, сделать ему css-свойство pointer-events: none; чтобы не перехватывал клики, потом сделать ему например z-index: 1000; а элементам типа embed и img сделать  z-index: 1100; чтобы они были поверх div'а и не затемнялись.

Отсутствует

 

№589209-02-2013 20:03:36

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

Re: Custom Buttons

Kamui
Ничего не понял но все равно спасибо :)

Отсутствует

 

№589309-02-2013 20:13:42

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

bunda1 пишет

Ничего не понял но все равно спасибо :)

Ну смотри, сейчас стиль применяется к html, что влияет и на дочерние элементы. Я думаю через JS можно создать на странице элемент? И уже к нему применять стили, он будет поверх всех элементов и будет затемнять всю страницу.
В общем напиши мне кнопку которая создает на странице div или какой-нибудь другой элемент, я напишу стиль чтобы все выглядело как надо :)

Отсутствует

 

№589409-02-2013 20:25:13

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

Re: Custom Buttons

А вот это можно как то переделать http://userstyles.org/styles/45663/glob … ss-control
Или применить к html { background: #000 !important; } и добавить к всем елементам на странице кроме видео и изображенй на странице opacity: .8 !important;

Отсутствует

 

№589509-02-2013 21:57:15

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

Кажется получилось, позволил себе немного подправить код okkamas_knife:

Выделить код

Код:

var mydivcontent='<center>содержимое div-а<br>обычный html</center> '
var doc = content.document;
var body = doc.body || doc.documentElement;
body.insertBefore(createDiv(mydivcontent), body.firstChild);
function createDiv(html) {
    var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
    div.setAttribute("id", "olololo");
    div.style.position="fixed";
    div.style.left="0px";
    div.style.top="0px";
    div.style.right="0px";
    div.style.bottom="0px";
    div.style.pointerEvents="none";
    div.style.backgroundColor="black";
    div.style.zIndex="100";
    div.style.opacity="0.5";
    div.innerHTML = html;
    return div;
}

а потом применил стиль:

Выделить код

Код:

IMG, EMBED
{position: relative !important;
 z-index: 100 !important;
}

Проверил на http://www.yaplakal.com/
там картинки не затемняются и видео тоже, кроме ютубовского почему-то :/

Отсутствует

 

№589609-02-2013 22:19:24

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

Re: Custom Buttons

Kamui пишет

Кажется получилось, позволил себе немного подправить код okkamas_knife:
там картинки не затемняются и видео тоже, кроме ютубовского почему-то :/

Получилась вот такая кнопка:

Выделить код

Код:

var mydivcontent='<center>содержимое div-а<br>обычный html</center> '
var doc = content.document;
var body = doc.body || doc.documentElement;
body.insertBefore(createDiv(mydivcontent), body.firstChild);
function createDiv(html) {
    var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
    div.setAttribute("id", "olololo");
    div.style.position="fixed";
    div.style.left="0px";
    div.style.top="0px";
    div.style.right="0px";
    div.style.bottom="0px";
    div.style.pointerEvents="none";
    div.style.backgroundColor="black";
    div.style.zIndex="100";
    div.style.opacity="0.5";
    div.innerHTML = html;
    return div;
}
var css = 'IMG, EMBED { position: relative !important; z-index: 100 !important; }';
var uri = makeURI("data:text/css," + encodeURIComponent(css));
var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);

Добавлено 09-02-2013 22:20:36
Но все таки это не то что я хотел.

Отредактировано bunda1 (09-02-2013 22:20:36)

Отсутствует

 

№589709-02-2013 23:03:44

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 19.0

Re: Custom Buttons

bunda1
Может сделать чтобы после второго клика на кнопку, добавленный ранее div удалялся? Тогда это будет переключение, как и надо было.

Добавлено 09-02-2013 23:05:43
Наверно по-другому никак.

Отредактировано Kamui (09-02-2013 23:05:43)

Отсутствует

 

№589810-02-2013 02:15:38

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 18.0

Re: Custom Buttons

Отсутствует

 

№589910-02-2013 22:13:08

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

Re: Custom Buttons

bunda1
Toggle  Find+3 перестала показывать колличество найденных совпадений. [nightly]

Отсутствует

 

№590010-02-2013 22:50:10

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 476
UA: Firefox 18.0

Re: Custom Buttons

Источник
Вот мой перевод с некотрыми дополнениями:

скрытый текст

Выделить код

Код:

/*CODE*/
var icon1 = "data:application/file;base64,AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8BAAAAFwAAAGkAAABzAAAAdQAAAHUAAAB1AAAAdQAAAHUAAAB1AAAAdQAAAHUAAAB1AAAAdQAAADkAAAAP////AQAAAIdgZmj/YWlt/2FobP9haGz/YGhr/2Boa/9fZ2v/X2dr/15mav9dZWn/XGRo/0ZNUP8AAACdAAAAFf///wEAAACr2tzc/9ve4P/a3t//1dnZ/7S2tf+foJz/m5ya/6apqP/O0tP/09fZ/9DV1v+hqq//AAAAuQAAABX///8BAAAAq+3u7//e4eL/ub29/2hnXv9oVUX/U0As/zgxGf83Lx3/YWBX/7a5uv/S1tj/o6yx/wAAALkAAAAV////AQAAAKv29/f/19na/1dUQf9jXDv/dmtJ/4FoSP9VQiL/V0Ek/008Iv9HQTP/yc3P/6Wus/8AAAC5AAAAFf///wEAAACr+Pj4/5uamP9tY0L/g31b/6GLa/+McVH/eFY5/4xwUv9yXkD/RTki/4uMiv+nsLT/AAAAuQAAABX///8BAAAAq/n6+v+FfXL/waSM/8qznf/DrZP/ooFi/7WfhP+qh2//blk9/1A+Iv9aWlH/pK2x/wAAALkAAAAV////AQAAAKv6+/v/d3Rr/9zCsP/RxbH/z8Wu/9fJt//Qvab/qItv/5iOb/9tYUH/VVJK/6Wtsf8AAAC5AAAAFf///wEAAACr+/z8/4mHff+3pI//3NK//+HXxf/m3Mz/5trJ/9rMuf+bgWT/d14//2hnYP+osbX/AAAAuQAAABX///8BAAAAq/z9/f/FxL7/j4l+//Xw5f/29ez/8/Dl/+DMuv/VuaP/poZn/2dFKv+srav/oamt/wAAALkAAAAV////AQAAAKv+/v7/+/z8/5iZjf+5uqr/6+PW/+3i1P/kzL3/vZR+/4NhSf+Qh3z/z9HS/4qQkv8AAAC1AAAAFf///wEAAACr/v7+//7+/v/u7u3/tbiv/5WSgP+DfGj/e25Z/29gTv+sppz/vr6+/5aYmP90eHr/AAAApwAAABP///8BAAAAq/////////////////7+/v/9/f3//f39//v8/P/5+fn/1dXV/2pqav9TU1P/QUFB/wEBAYkAAAAJ////AQAAAKv7+/v//////////////////v7+//7+/v/+/v7/+vr6/9fY2P/V1tb/7Ozs/4KCgv8EBAQrAAAAA////wEAAACFlJSU/6ioqP+qqqr/qqqq/6qqqv+qqqr/qKio/6anp/2kpaX9o6Oj/4qKitUZGRk9////Af///wH///8BAAAAFQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABTBAQEUx8fH1dfX18z////Af///wH///8BAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w==";
var icon2 = "data:image/ico;base64,AAABAAEAFBQAAAEAIAC4BgAAFgAAACgAAAAUAAAAKAAAAAEAIAAAAAAAQAYAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMxkzMzMZMzMzIDMzMzMzMzMzMzMzMzMzMzMzMzMgMzMzGTMzMxkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMZMzMzQCsrK2MhISGCHBwcjBwcHIwcHByMHBwcjBwcHIwcHByMHBwcjBwcHIwcHByMHBwcjCEhIYIrKytjMzMzQDMzMxkAAAAAAAAAADMzMyYzMzNAHR0dbv7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/x0dHW4zMzNAMzMzJgAAAAAAAAAAAAAAAAAAAAAAAAA//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz/AAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAzHMA/8xzAP/McwD/zHMA/8xzAP/McwD/zHMA/8xzAP/McwD/zHMA/8xzAP/McwD/zHMA/8xzAP/McwD/zHMA/wAAAAAAAAAAAAAAAAAAAADMcwD/5bV3/+W1d///////5bV3/+W1d///////5bV3/+W1d///////5bV3/+W1d///////5bV3/+W1d//McwD/AAAAAAAAAAAAAAAAAAAAAMxzAP/ou4D/4KRV///////gpFX/4KRV/+CkVf///////////+CkVf/gpFX/4KRV///////gpFX/6LuA/8xzAP8AAAAAAAAAAAAAAAAAAAAAzHMA/+vAif/kq2H//////+SrYf/kq2H/5Kth////////////5Kth/+SrYf/kq2H//////+SrYf/rwIn/zHMA/wAAAAAAAAAAAAAAAAAAAADMcwD/7saS/+izbf//////6LNt/+izbf/os23////////////os23/6LNt/+izbf//////6LNt/+7Gkv/McwD/AAAAAAAAAAAAAAAAAAAAAMxzAP/xy5v/////////////////8cub///////xy5v/8cub///////xy5v/////////////////8cub/8xzAP8AAAAAAAAAAAAAAAAAAAAAzHMA/8pzAf/KcwH/ynMB/8pzAf/KcwH/ynMB/8pzAf/KcwH/ynMB/8pzAf/KcwH/ynMB/8pzAf/KcwH/zHMA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx/wAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/AAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//4eHh/8PDw/+0tLT/urq6/7q6uv8AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/BwcH//////////////////////wAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/7Kysv////////////////8wMDBOAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/tra2////////////LCwsVgAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f+2trb//////2BgYHQAAAAUAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAALwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAEUAAAAwAAAAFAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AHwAIAAEACAABAA4ABwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADgAHAA4ABwAOAAcADgAHAA4ABwAOAAcADgAPAA4AHwAP//8AA=";
try { Cu.import("resource://custombuttons-modules/addons4.js", {}); } catch(ex) {}
 
var data = '<?xml version="1.0"?>' +
  '<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>' +
  '<window id="addonGenList-popup" onload="self.load(this)" title="Extension List" width="550" height="650" style="background: #EEE;" buttons="accept,extra1,extra2,cancel" ' +
  'defaultButton="" windowtype="addonlist:gen" persist="screenX screenY width height sizemode" xmlns="' + xulns + '">' +
  '<textbox id="listBox" flex="1" multiline="true" style=" -moz-appearance: none; background: #FFF; border: 1px solid #999; border-radius: 8px 8px 8px 8px; box-shadow: 3px 3px 3px #444; padding-top: 4px;"/>' +
  '<groupbox id="gb1" style="padding:0; -moz-appearance: none; background: none; border: none;">' + 
    '<hbox>' +
        '<checkbox id="editList" label="Редактировать список" onclick="self.check(id)"/>' +
        '<checkbox id="extBox" class="checkBox" label="Скрыть откл." onclick="self.check(id)"/>' +  
      '</hbox>' +
      '<hbox align="center">' +
          '<label id="label" value="Категории: "/>' +
        '<checkbox id="extensionsView" class="checkBox" label="Расширения" onclick="self.check(id)"/>' +
        '<checkbox id="themesView" class="checkBox" label="Темы" onclick="self.check(id)"/>' +
        '<checkbox id="pluginsView" class="checkBox" label="Плагины" onclick="self.check(id)"/>' +  
        '<checkbox id="stylesView" class="checkBox" label="Стили" onclick="self.check(id)"/>' +
        '<checkbox id="scriptView" class="checkBox" label="GM скрипты" onclick="self.check(id)"/>' +
        '<checkbox id="scriptsView" class="checkBox" label="Scriptish" onclick="self.check(id)"/>' +          
        '<checkbox id="custombuttonsView" class="checkBox" label="СВ кнопки" onclick="self.check(id)"/>' +
     '</hbox>' +
     '<hbox align="center">' +
        '<label id="label" value="Заголовок: "/>' +
        '<checkbox id="Tilebox" class="checkBox" label="О программе" onclick="self.check(id)"/>' +
        '<checkbox id="Tilebox1" class="checkBox" label="Дата" onclick="self.check(id)"/>' +
        '<checkbox id="Tilebox2" class="checkBox" label="Всего" onclick="self.check(id)"/>' +  
      '</hbox>' +   
     '<hbox align="center">' +
       '<label id="label" value="Свойства:   "/>' +   
        '<checkbox id="idextBox" class="checkBox" label="id" onclick="self.check(id)"/>' + 
        '<checkbox id="CompBox" class="checkBox" label="Совместимость" onclick="self.check(id)"/>' +          
        '<checkbox id="DateIbox" class="checkBox" label="Дата установки" onclick="self.check(id)"/>' +                        
        '<checkbox id="Datebox" class="checkBox" label="Дата обновления" onclick="self.check(id)"/>' +  
        '<checkbox id="Homebox" class="checkBox" label="Дом. страница" onclick="self.check(id)"/>' +
        '<checkbox id="Descriptbox" class="checkBox" label="Описание" onclick="self.check(id)"/>' +           
      '</hbox>' +
  '</groupbox>' +       
  '<hbox id="bntCont" style="margin-bottom: 4px">' +
    '<spacer flex="1"/>' +
    '<button dlgtype="accept" id="myAccept" image="' + icon2 + '" label="Создать TXT файл" oncommand="self.archiveTXT()"/>' +
    '<button dlgtype="extra1" id="HTMLBtn" image="' + icon1 + '" label="Создать HTML файл" oncommand="self.archiveHTML()"/>' +    
    '<button dlgtype="extra2" id="myExtra1" label="Копировать" oncommand="self.copy()"/>' +
    '<button dlgtype="cancel" id="myCancel" label="Закрыть" oncommand="close()"/>' +
  '</hbox>' +
'</window>';


data = data.replace(/self/g, "opener.document.getElementById('" + this.id + "')");
var url = "data:application/vnd.mozilla.xul+xml;text/plain," + encodeURIComponent(data);
dialog = window.openDialog(url, 'extlist', 'chrome, centerscreen, dialog=no, resizable=yes').focus(); 


var ww = Cc["@mozilla.org/embedcomp/window-watcher;1"].getService(Ci.nsIWindowWatcher);
var em = ww.getWindowEnumerator();
var winName = "extlist";
var index = 1;
while (em.hasMoreElements()) {
  var win = em.getNext();
  if (win.name == winName) {
    win.focus();
    return;
  }
  index++
}

var matId = Components.utils.import("resource://gre/modules/AddonManager.jsm"); 
if(!matId) opener.document.getElementById("' + this.id + '").close();
Выделить код

Код:

/*Initialization Code*/
// ===== Определяем настройки по умолчанию в about:config =====
pref.root = "extensions.custombuttons.addonlistgen.";
pref.defaults = {
  editList: true,
  themesView: true,
  scriptView: true,
  stylesView: true,
  pluginsView: true,
  scriptsView: true,
  custombuttonsView: true,
  extensionsView: true,
  Tilebox: true,
  Tilebox1: true,
  Tilebox2: true,
  DateIbox: true,
  Datebox: true,
  idextBox: true,
  CompBox: true,
  Descriptbox: true,
  Homebox: true,
  extBox: true
}

// ===== Заносим настройки в about:config =====
let (branch = Services.prefs.getDefaultBranch(pref.root)) {
  for (let [key, val] in Iterator(pref.defaults)) {
    switch (typeof val) {
      case "boolean": branch.setBoolPref(key, val); break;
      case "number": branch.setIntPref(key, val); break;
      case "string": branch.setCharPref(key, val); break;
} } }

// ===== Заносим изменения настроек в about:config =====
pref.observe = function(prefs, callback) {
  let {root} = pref;
  function observe(subject, topic, data) {
    if (topic != "nsPref:changed") return;
    let pref = data.slice(root.length);
    if (prefs.indexOf(pref) == -1) return;
    callback(pref);
  }
  Services.prefs.addObserver(root, observe, false);
  unload(function() Services.prefs.removeObserver(root, observe));
}

// ===== Считываем настройки из about:config =====
function pref(key) {
  let {branch, defaults} = pref;
  if (branch == null) branch = Services.prefs.getBranch(pref.root);
  switch (typeof defaults[key]) {
    case "boolean": return branch.getBoolPref(key);
    case "number": return branch.getIntPref(key);
    case "string": return branch.getCharPref(key);
  }
  return null;
}

let {classes: Cc, interfaces: Ci, utils: Cu} = Components;
let ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
let sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
let nSpace = "@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);";

let gRoot = Services.prefs.getBranch(pref.root), u = "url(", v = ")";
let appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
let app_info2 = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime);
let mrw = Services.wm.getMostRecentWindow("navigator:browser");

// ===== Определение имени профиля=====
 function getProfileRegistry() {
  var rv = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
  try {var dir = rv.get("DefProfRt", Ci.nsIFile);
    while(dir) {
      var myFile = dir.clone(); 
      myFile.append("profiles.ini");
      if(myFile.exists()) return myFile;
      dir = dir.parent;
  } } catch(ex) {}
  return null;
 }

 function getProfileName() {
   var name = "", reg = getProfileRegistry();
   var rv = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
   var profd = rv.get("ProfD", Ci.nsIFile);
   var stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
   var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var current = "", relative = "d", line = {}, path = "";
   if(!reg) {return name;}
   stream.init(reg, 1, 0, 0);
   stream.QueryInterface(Ci.nsILineInputStream);
   while(stream.readLine(line)) {
    if(line.value.substring(0, 5) == "Name=") current = line.value.substring(5);
    if(line.value.substring(0, 11) == "IsRelative=") relative = line.value.substring(11);
    if(line.value.substring(0, 5) == "Path=") {
      path = line.value.substring(5);
      if(relative == "1") dir.setRelativeDescriptor(reg.parent, path);
      else dir.persistentDescriptor = path;
      if(dir.path == profd.path) {name = current; break;}
  } }
  stream.close();
  if(name == "") name = "No Profile";
  return name;
 }

// ===== Вывод даты=====
 function aDate() {
 var t=new Date();
 var y=1900+t.getYear();
 var min=t.getMinutes(); if (min<10){min="0"+min};
 var h=t.getHours();
 var m=t.getMonth();switch(m){case 0: m="января";break;case 1: m="февраля";break;case 2: m="марта";break;case 3: m="апреля";break;case 4: m="мая";break;case 5: m="июня";break;case 6: m="июля";break;case 7: m="августа";break;case 8: m="сентября";break;case 9: m="октября";break;case 10: m="ноября";break;default: m="декабря";}
 var d=t.getDate();
 var curdate=y+"г."+" "+d+" "+m+" "+h+":"+min;
 var myfilename=curdate;
 return myfilename;
}

// ===== Создание списка=============================================================

function showExtensionList(aWin, aExt) {
  var exts = aExt, cnt = exts.length;
  var cntExt = 0, cntPlug = 0, cntTheme = 0, cntGm = 0, cntScript = 0, cntCustombuttons = 0, cntStyle = 0; 
  var cntdisabled1 = 0, cntdisabled2 = 0, cntdisabled3 = 0,cntdisabled4 = 0, cntdisabled5 = 0, cntdisabled6 = 0, cntdisabled7 = 0;
  var cntenabled1 = 0, cntenabled2 = 0, cntenabled3 = 0,cntenabled4 = 0, cntenabled5 = 0, cntenabled6 = 0,cntenabled7 = 0;
  var ckExt = 0, ckPlug = 0, ckTheme = 0, ckGm = 0, ckScript = 0, ckCustombuttons = 0, ckStyle = 0; 
  var ckdisabled1 = 0, ckdisabled2 = 0, ckdisabled3 = 0, ckdisabled4 = 0, ckdisabled5 = 0, ckdisabled6 = 0, ckdisabled7 = 0;
  var ckenabled1 = 0, ckenabled2 = 0, ckenabled3 = 0, ckenabled4 = 0, ckenabled5 = 0, ckenabled6 = 0, ckenabled7 = 0;
  
  for(var i = 0; i < cnt; i++) {
 
    if(exts[i].type == "extension") cntExt++;
    if(exts[i].type == "plugin") cntPlug++;
    if(exts[i].type == "theme") cntTheme++ ;
    if(exts[i].type == "greasemonkey-user-script") cntGm++;
    if(exts[i].type == "userscript") cntScript++;
    if(exts[i].type == "userstyle") cntStyle++;
    if(exts[i].type == "custombuttons") cntCustombuttons++;

    if(exts[i].type == "extension") {if (exts [i]. userDisabled) cntdisabled1++; else cntenabled1++;} 
    if(exts[i].type == "plugin") {if (exts [i]. userDisabled) cntdisabled2++; else cntenabled2++;}
    if(exts[i].type == "theme"){if (exts [i]. userDisabled) cntdisabled3++; else cntenabled3++;}
    if(exts[i].type == "greasemonkey-user-script"){if (exts [i]. userDisabled) cntdisabled4++; else cntenabled4++;}
    if(exts[i].type == "userscript"){if (exts [i]. userDisabled) cntdisabled5++; else cntenabled5++;}
    if(exts[i].type == "userstyle"){if (exts [i]. userDisabled) cntdisabled6++; else cntenabled6++;} 
    if(exts[i].type == "custombuttons"){    
         var str = exts[i].id;
         var id = str.substring(str.lastIndexOf("custombuttons-button"), str.length);
         var button = document.getElementById(id);
         if (!button == false)cntenabled7++; else cntdisabled7++;}
  }
  
// ===== Не показывать типы расширений, если их нет в about:addons=== 
  if(cntExt == 0) aWin.document.getElementById("extensionsView").style.display = "none";
  if(cntTheme == 0) aWin.document.getElementById("themesView").style.display = "none";
  if(cntPlug == 0) aWin.document.getElementById("pluginsView").style.display = "none";
  if(cntGm == 0) aWin.document.getElementById("scriptView").style.display = "none";
  if(cntScript == 0) aWin.document.getElementById("scriptsView").style.display = "none";
  if(cntStyle == 0) aWin.document.getElementById("stylesView").style.display = "none";
  if(cntCustombuttons == 0) aWin.document.getElementById("custombuttonsView").style.display = "none";
  
// ===== Подсчет всех и отключенных=== 
  if(aWin.document.getElementById("extensionsView").checked)  ckExt = cntExt, ckdisabled1 = cntdisabled1, ckenabled1 = cntenabled1; else ckExt = 0, ckdisabled1 = 0, ckenabled1 = 0;
  if(aWin.document.getElementById("pluginsView").checked) ckPlug = cntPlug, ckdisabled2 = cntdisabled2, ckenabled2 = cntenabled2; else ckPlug = 0, ckdisabled2 = 0, ckenabled2 = 0; 
  if(aWin.document.getElementById("themesView").checked) ckTheme = cntTheme, ckdisabled3 = cntdisabled3, ckenabled3 = cntenabled3; else ckTheme = 0, ckdisabled3 = 0, ckenabled3 = 0;
  if(aWin.document.getElementById("scriptView").checked) ckGm = cntGm, ckdisabled4 = cntdisabled4, ckenabled4 = cntenabled4; else ckGm = 0, ckdisabled4 = 0, ckenabled4 = 0;
  if(aWin.document.getElementById("scriptsView").checked) ckScript = cntScript, ckdisabled5 = cntdisabled5, ckenabled5 = cntenabled5; else ckScript = 0, ckdisabled5 = 0, ckenabled5 = 0;
  if(aWin.document.getElementById("custombuttonsView").checked) ckCustombuttons = cntCustombuttons, ckdisabled7 = cntdisabled7, ckenabled7 = cntenabled7; else ckCustombuttons = 0, ckdisabled7 = 0, ckenabled7 = 0;
  if(aWin.document.getElementById("stylesView").checked) ckStyle = cntStyle, ckdisabled6 = cntdisabled6, ckenabled6 = cntenabled6; else ckStyle = 0, ckdisabled6 = 0, ckenabled6 = 0;
 
  var totalCnt = ckExt + ckTheme + ckPlug  + ckGm + ckScript + ckCustombuttons + ckStyle;
  var totaldisabled = ckdisabled1 + ckdisabled2 + ckdisabled3 + ckdisabled4 + ckdisabled5 + ckdisabled6 + ckdisabled7;
  var totalenabled = ckenabled1 + ckenabled2 + ckenabled3 + ckenabled4 + ckenabled5 + ckenabled6 + ckenabled7; 
  
// ===== Заголовок===
  var str0 = "Приложение" + ": " + appInfo.vendor + " " + appInfo.name + " " + appInfo.version + " (" + appInfo.appBuildID ;
  var str1 = "Операционная система" + ": " + navigator.oscpu + " (" + app_info2.XPCOMABI + ")";
  var str2 = "Профиль: " + getProfileName();
  if(aWin.document.getElementById("Tilebox2").checked){
  var str3 = "Всего : " + totalCnt + "\u2007\u2007" + "Включено: " + totalenabled + "\u2007\u2007" + "Отключено: " + totaldisabled + "\n";
  } else var str3 = "";
  if(aWin.document.getElementById("Tilebox1").checked){
  var str4 = "Создан: " + aDate()+ "\n";
  } else var str4 = "";
  if(aWin.document.getElementById("Tilebox").checked){
  var str = str0 + ")\n" + str1 + "\n" + str2 + "\n";
  } else var str = "";
  var extList = str + str3 + str4;

// == Сортировка по имени и типу=====    
          exts.sort(function(a, b) {
          a = a.name.toLowerCase();
          b = b.name.toLowerCase();
          if (a < b) return -1;
          if (a > b) return 1;
          return 0;
          })
 
          exts.sort(function(a, b) {
          a = a.type.toLowerCase();
          b = b.type.toLowerCase();
          if (a < b) return -1;
          if (a > b) return 1;
          return 0;
          })
      
          exts.sort(function(a, b) {
          a = a.type.toLowerCase();
          b = b.type.toLowerCase();
          if (a == "custombuttons" || b == "extension") return 1; 
          return 0;
         })
     

  var typeExt = 0, typePlug = 0, typeTheme = 0, typeGm = 0, typeScript = 0, typeCustombuttons = 0, typeStyle = 0;
  for(var i = 0; i < cnt; i++) {
  
// ===== Обявление переменных для свойств===    
                var nameOf = "", verOf = "", typeOf = "", idOf = "", CompOf = "", dateOf = "", homepageURLOf = "", descriptionOf = "", dateIOf = "";
// ===== Имя и версия=== 
                if(exts[i].name && exts[i].version) {
                nameOf = '"' + exts[i].name + "  ";
                verOf = exts[i].version + '"';
                }
                if(exts[i].name && !exts[i].version) nameOf = '"' + exts[i].name + '"';
// ===== Совместимость===     
                if(aWin.document.getElementById("CompBox").checked){
        var XPIProvider = Components.utils.import("resource://gre/modules/XPIProvider.jsm")
        var addons_db = XPIProvider.XPIDatabase.getAddons();
        CompOf = Array();
        var db_found = false;
        var tmp_addon = null;
        for (var tmp_i=0; (!db_found && tmp_i<addons_db.length); tmp_i++) {
          if (addons_db[tmp_i].id == exts[i].id) {
          tmp_addon = addons_db[tmp_i];
          db_found = true;    
             }
            }
          if (tmp_addon != null) {
          var target_app;
          for (var j=0; j<tmp_addon.targetApplications.length; j++) {
          target_app = tmp_addon.targetApplications[j];
             }
          CompOf = "\u2007\u2007\u2007\u2007\u2007\u2007" + "Совместимость с Firefox:" + "\u2007" + target_app.minVersion + " \u2013" + target_app.maxVersion + "\n";
           }
                } else var CompOf = ""; 
// ===== id === 
               if(aWin.document.getElementById("idextBox").checked){
               if(exts[i].id) idOf = "\u2007\u2007\u2007\u2007\u2007\u2007" + "id" + ":"  + "  " + exts[i].id + "\n";
               } else var idOf = ""; 
// ===== тип стиля===   
               function ucFirst(str) {
               var firstLetter = str.slice(0, 1);
               return firstLetter.toUpperCase() + str.substring(1);
               }  
               if(exts[i].styleTypes) typeOf = "  (стиль " + ucFirst(exts[i].styleTypes) + ")";
// ===== дата обновления===   
              if(aWin.document.getElementById("Datebox").checked){ 
              if(exts[i].updateDate) {      
              var xDate = exts[i].updateDate.toString();
              if(xDate.indexOf("May") != -1) {
              var xA = xDate.substring(4, 10), xB = xDate.substring(11, 15);
              dateOf = "  (" + xA + ". " + xB + ")";
              } else {
              var xA = xDate.substring(4, 7), xB = xDate.substring(8, 10), xC = xDate.substring(11, 15);
              dateOf = "\u2007\u2007\u2007\u2007\u2007\u2007" + "Дата обновления " + ":" + "\u2007" + xB + "  " + xA + "  " + xC + "\n";
                 } 
               }
             } else var dateOf = "";
// ===== Дата установки===  
             if(aWin.document.getElementById("DateIbox").checked){  
         if(exts[i].installDate) {      
             var xDate = exts[i].installDate.toString();
             if(xDate.indexOf("May") != -1) {
             var xA = xDate.substring(4, 10), xB = xDate.substring(11, 15);
             dateOf = "  (" + xA + ". " + xB + ")";
             } else {
             var xA = xDate.substring(4, 7), xB = xDate.substring(8, 10), xC = xDate.substring(11, 15);
             dateIOf = "\u2007\u2007\u2007\u2007\u2007\u2007" + "Дата установки " + ":" + "\u2007\u2007\u2007" + xB + "  " + xA + "  " + xC + "\n";
               } 
              }    
             } else var dateIOf = "";
// ===== Домашняя страница===
             if(aWin.document.getElementById("Homebox").checked){     
             if(exts[i].homepageURL) homepageURLOf = "\u2007\u2007\u2007\u2007\u2007\u2007" + "Дом. страница" + ":"  + "  " + exts[i].homepageURL + "\n";
             } else var homepageURLOf = "";
// ===== Описание===  
             if(aWin.document.getElementById("Descriptbox").checked){  
             if(exts[i].description) descriptionOf = "\u2007\u2007\u2007\u2007\u2007\u2007" + "Описание" + ":"  + "  " + exts[i].description + "\n";
             } else var descriptionOf = "";
// ===== отключено===    
             var xx = exts[i].userDisabled;
             if(xx == true) var ud = " :: (отключено)";
             else var ud = "";
 // ===== СВ кнопка не вытащена===    
             if(exts[i].type == "custombuttons"){    
         var str = exts[i].id;
         var id = str.substring(str.lastIndexOf("custombuttons-button"), str.length);
         var button = document.getElementById(id);
        if (!button) {
        var SD = " :: (не вытащена)"; 
        } else var SD = "";
         } else var SD = ""; 
// ===== общий лист===    
            listStr = ". " + nameOf + verOf + typeOf  + ud +  SD + "\n" + idOf + CompOf + dateIOf + dateOf + homepageURLOf + descriptionOf;
            listStr = listStr.replace(/Jan/gi,'января').replace(/Feb/gi,'февраля').replace(/Mar/gi,'марта').replace(/Apr/gi,'апреля').replace(/May/gi,'мая').replace(/Jun/gi,'июня').replace(/Jul/gi,'июля').replace(/Aug/gi,'августа').replace(/Sep/gi,'сентября').replace(/Oct/gi,'октября').replace(/Nov/gi,'ноября').replace(/Dec/gi,'декабря').replace(/Global/gi,'глобальный').replace(/App/gi,'приложения').replace(/Site/gi,'для сайта');

// ===== Скрыть отключенные расширения=== 
  if(pref("extBox") == true ){ 

   if(exts[i].type == "extension" && exts[i].userDisabled == false) typeExt++;
     if(aWin.document.getElementById("extensionsView").checked) {
        if(typeExt != typeExt-1 && exts[i].type == "extension" && exts[i].userDisabled == false) {
       if(typeExt == 1) extList += "\nРАСШИРЕНИЯ: " + "Всего: " + cntExt + "\u2007" + "Включено: " + cntenabled1 + "\u2007" + "Отключено: " + cntdisabled1 + "\n" + "\u2007\u2007" + typeExt + listStr;
       if(typeExt > 1 && typeExt < 10) extList += "\u2007\u2007" + typeExt + listStr;
       if(typeExt >= 10) extList += "\u2007" + typeExt + listStr;
    } }
   if(exts[i].type == "plugin" && exts[i].userDisabled == false) typePlug++;    
     if(aWin.document.getElementById("pluginsView").checked) {
        if(typePlug != typePlug-1 && exts[i].type == "plugin" && exts[i].userDisabled == false) {
        if(typePlug == 1) extList += "\nПЛАГИНЫ: " + "Всего: " + cntPlug + "\u2007" + "Включено: " + cntenabled2 + "\u2007" + "Отключено: " + cntdisabled2 + "\n" + "\u2007\u2007" + typePlug + listStr;
        if(typePlug > 1 && typePlug < 10) extList += "\u2007\u2007" + typePlug + listStr;
        if(typePlug >= 10) extList += "\u2007" + typePlug + listStr;
    } }
   if(exts[i].type == "theme" && exts[i].userDisabled == false) typeTheme++;  
    if(aWin.document.getElementById("themesView").checked) {
        if(typeTheme != typeTheme-1 && exts[i].type == "theme" && exts[i].userDisabled == false) {
        if(typeTheme == 1) extList += "\nТЕМЫ: " + "Всего: " + cntTheme + "\u2007" + "Включено: " + cntenabled3 + "\u2007" + "Отключено: " + cntdisabled3 + "\n" + "\u2007\u2007" + typeTheme + listStr;
        if(typeTheme > 1 && typeTheme < 10) extList += "\u2007\u2007" + typeTheme + listStr;
        if(typeTheme >= 10) extList += "\u2007" + typeTheme + listStr;
    } }  
   if(exts[i].type == "greasemonkey-user-script" && exts[i].userDisabled == false) typeGm++;   
    if(aWin.document.getElementById("scriptView").checked) {
        if(typeGm != typeGm-1 && exts[i].type == "greasemonkey-user-script" && exts[i].userDisabled == false) {
        if(typeGm == 1) var extList3 = "\nGM СРИПТЫ: " + "Всего: " + cntGm + "\u2007" + "Включено: " + cntenabled4 + "\u2007" + "Отключено: " + cntdisabled4 + "\n" + "\u2007\u2007" + typeGm + listStr;
        if(typeGm > 1 && typeGm < 10) var extList3 = "\u2007\u2007" + typeGm + listStr;
        if(typeGm >= 10) var extList3 = "\u2007" + typeGm + listStr;
        extList +=extList3
    } } 
   if(exts[i].type == "userscript" && exts[i].userDisabled == false) typeScript++;   
    if(aWin.document.getElementById("scriptsView").checked) {
        if(typeScript != typeScript-1 && exts[i].type == "userscript" && exts[i].userDisabled == false) {
        if(typeScript == 1) extList += "\nSCRIPTISH СКРИПТЫ: " + "Всего: " + cntScript + "\u2007" + "Включено: " + cntenabled5 + "\u2007" + "Отключено: " + cntdisabled5 + "\n" + "\u2007\u2007" + typeScript + listStr;
        if(typeScript > 1 && typeScript < 10) extList += "\u2007\u2007" + typeScript + listStr;
        if(typeScript >= 10) extList += "\u2007" + typeScript + listStr;
    } }  
   if(exts[i].type == "userstyle" && exts[i].userDisabled == false) typeStyle++;
    if(aWin.document.getElementById("stylesView").checked) {
        if(typeStyle != typeStyle-1 && exts[i].type == "userstyle" && exts[i].userDisabled == false) {
        if(typeStyle == 1) extList += "\nСТИЛИ: " + "Всего: " + cntStyle + "\u2007" + "Включено: " + cntenabled6 + "\u2007" + "Отключено: " + cntdisabled6 + "\n" + "\u2007\u2007" + typeStyle + listStr;
        if(typeStyle > 1 && typeStyle < 10) extList += "\u2007\u2007" + typeStyle + listStr;
        if(typeStyle >= 10) extList += "\u2007" + typeStyle + listStr;
   } } 
      if(exts[i].type == "custombuttons" && !button == false) typeCustombuttons++;  
   if(aWin.document.getElementById("custombuttonsView").checked) {
        if(typeCustombuttons != typeCustombuttons-1 && exts[i].type == "custombuttons" && !button == false) {
        if(typeCustombuttons == 1) extList += "\nСВ кнопки: " + "Всего: " + cntCustombuttons + "\u2007" + "Включено: " + cntenabled7 + "\u2007" + "Отключено: " + cntdisabled7 + "\n" + "\u2007\u2007" + typeCustombuttons + listStr;
        if(typeCustombuttons > 1 && typeCustombuttons < 10) extList += "\u2007\u2007" + typeCustombuttons + listStr;
        if(typeCustombuttons >= 10) extList += "\u2007" + typeCustombuttons + listStr;
    } } 
  } 

// ===== Показывать все (в т.ч. отключенные) расширения===   
  if(pref("extBox") == false ){
  
   if(exts[i].type == "extension") typeExt++;
     if(aWin.document.getElementById("extensionsView").checked) {
       if(typeExt != typeExt-1 && exts[i].type == "extension") {
       if(typeExt == 1) extList += "\nРАСШИРЕНИЯ: " + "Всего: " + cntExt + "\u2007" + "Включено: " + cntenabled1 + "\u2007" + "Отключено: " + cntdisabled1 + "\n" + "\u2007\u2007" + typeExt + listStr;
       if(typeExt > 1 && typeExt < 10) extList += "\u2007\u2007" + typeExt + listStr;
       if(typeExt >= 10) extList += "\u2007" + typeExt + listStr;
  } }

   if(exts[i].type == "plugin") typePlug++;    
     if(aWin.document.getElementById("pluginsView").checked) {
        if(typePlug != typePlug-1 && exts[i].type == "plugin") {
        if(typePlug == 1) extList += "\nПЛАГИНЫ: " + "Всего: " + cntPlug + "\u2007" + "Включено: " + cntenabled2 + "\u2007" + "Отключено: " + cntdisabled2 + "\n" + "\u2007\u2007" + typePlug + listStr;
        if(typePlug > 1 && typePlug < 10) extList += "\u2007\u2007" + typePlug + listStr;
        if(typePlug >= 10) extList += "\u2007" + typePlug + listStr;
    } }
   if(exts[i].type == "theme") typeTheme++;  
    if(aWin.document.getElementById("themesView").checked) {
        if(typeTheme != typeTheme-1 && exts[i].type == "theme") {
        if(typeTheme == 1) extList += "\nТЕМЫ: " + "Всего: " + cntTheme + "\u2007" + "Включено: " + cntenabled3 + "\u2007" + "Отключено: " + cntdisabled3 + "\n" + "\u2007\u2007" + typeTheme + listStr;
        if(typeTheme > 1 && typeTheme < 10) extList += "\u2007\u2007" + typeTheme + listStr;
        if(typeTheme >= 10) extList += "\u2007" + typeTheme + listStr;
    } }
   if(exts[i].type == "greasemonkey-user-script") typeGm++;   
    if(aWin.document.getElementById("scriptView").checked) {
        if(typeGm != typeGm-1 && exts[i].type == "greasemonkey-user-script") {
        if(typeGm == 1) extList += "\nGM СРИПТЫ: " + "Всего: " + cntGm + "\u2007" + "Включено: " + cntenabled4 + "\u2007" + "Отключено: " + cntdisabled4 + "\n" + "\u2007\u2007" + typeGm + listStr;
        if(typeGm > 1 && typeGm < 10) extList += "\u2007\u2007" + typeGm + listStr;
        if(typeGm >= 10) extList += "\u2007" + typeGm + listStr;
    } } 
   if(exts[i].type == "userscript") typeScript++;   
    if(aWin.document.getElementById("scriptsView").checked) {
        if(typeScript != typeScript-1 && exts[i].type == "userscript") {
        if(typeScript == 1) extList += "\nSCRIPTISH СКРИПТЫ: " + "Всего: " + cntScript + "\u2007" + "Включено: " + cntenabled5 + "\u2007" + "Отключено: " + cntdisabled5 + "\n" + "\u2007\u2007" + typeScript + listStr;
        if(typeScript > 1 && typeScript < 10) extList += "\u2007\u2007" + typeScript + listStr;
        if(typeScript >= 10) extList += "\u2007" + typeScript + listStr;
    } } 
   if(exts[i].type == "userstyle") typeStyle++;
    if(aWin.document.getElementById("stylesView").checked) {
        if(typeStyle != typeStyle-1 && exts[i].type == "userstyle") {
        if(typeStyle == 1) extList += "\nСТИЛИ: " + "Всего: " + cntStyle + "\u2007" + "Включено: " + cntenabled6 + "\u2007" + "Отключено: " + cntdisabled6 + "\n" + "\u2007\u2007" + typeStyle + listStr;
        if(typeStyle > 1 && typeStyle < 10) extList += "\u2007\u2007" + typeStyle + listStr;
        if(typeStyle >= 10) extList += "\u2007" + typeStyle + listStr;
    } }  
   if(exts[i].type == "custombuttons") typeCustombuttons++;
   if(aWin.document.getElementById("custombuttonsView").checked) {
        if(typeCustombuttons != typeCustombuttons-1 && exts[i].type == "custombuttons") {
        if(typeCustombuttons == 1) extList += "\nСВ кнопки: " + "Всего: " + cntCustombuttons + "\u2007" + "Включено: " + cntenabled7 + "\u2007" + "Отключено: " + cntdisabled7 + "\n" + "\u2007\u2007" + typeCustombuttons + listStr;
        if(typeCustombuttons > 1 && typeCustombuttons < 10) extList += "\u2007\u2007" + typeCustombuttons + listStr;
        if(typeCustombuttons >= 10) extList += "\u2007" + typeCustombuttons + listStr;
    } } 
    }
}
 
    aWin.document.title = "Addon List Genenerator";
    var textbox = aWin.document.getElementById("listBox");
    textbox.value = extList;
    textbox.selectionStart = 0;
    textbox.selectionEnd = 0;
   
    var mrd = Services.wm.getMostRecentWindow("addonlist:gen");
    if(aWin.document.getElementById("editList").checked) {
    mrd.document.getElementById("listBox").style.MozUserInput = "";
    mrd.document.getElementById("listBox").style.MozUserSelect = "";
    mrd.document.getElementById("listBox").style.MozUserFocus = "";
  } else {
    mrd.document.getElementById("listBox").style.MozUserInput = "none";
    mrd.document.getElementById("listBox").style.MozUserSelect = "none";
    mrd.document.getElementById("listBox").style.MozUserFocus = "ignore";
  }


}


this.load = function(aWin) {
  try {
    var aView = aWin.document.getElementsByClassName("checkBox");
    for(var i = 0; i < aView.length; i++) aView[i].checked = pref(aView[i].id);
    showExtensionList(aWin, Application.extensions.all);
  } catch(e) {AddonManager.getAllAddons(function(extensions) {showExtensionList(aWin, extensions);})}
  try {
     if(pref("editList")) {
      aWin.document.getElementById("listBox").style.MozUserInput = "";
      aWin.document.getElementById("listBox").style.MozUserSelect = "";
      aWin.document.getElementById("listBox").style.MozUserFocus = "";
    } else {
      aWin.document.getElementById("listBox").style.MozUserInput = "none";
      aWin.document.getElementById("listBox").style.MozUserSelect = "none";
      aWin.document.getElementById("listBox").style.MozUserFocus = "ignore";
  }
   } catch(ex) {}
}

  
    this.copy = function() {
  var mrd = Services.wm.getMostRecentWindow("addonlist:gen");
  var lb = mrd.document.getElementById("listBox").value.replace(/\u2007/g, " ");  
  if(navigator.platform.indexOf("Win")) gClipboard.write(lb);
  else gClipboard.write(lb.replace(/\n/g, "\r\n"));
  }

     
  this.archiveHTML = function() {
  var mrd = Services.wm.getMostRecentWindow("addonlist:gen");
  var lb = mrd.document.getElementById("listBox").value.replace(/\u2007/g, " ");
  var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
  uc. charset = "utf-8";
  lb = uc. ConvertFromUnicode (lb);
  var head = "<html>\n<head>\n<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n</head>\n<body>\n<pre>\n";
  var fileend = "\n</pre>\n</body>\n</html>"
  var htmlSource = head + lb + fileend;
  var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream);
  var nsIFilePicker = Components.interfaces.nsIFilePicker;
  
  var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  fp.appendFilters(fp.filterHTML);
  fp.appendFilters(fp.filterAll);
  fp.defaultExtension = ".html";
  fp.init(window, "", fp.modeSave);
  fp.defaultString = "Addons " + aDate().replace(/:/g, ".");
  if(fp.show() != fp.returnCancel){ 
  stream.init(fp.file, 0x02|0x20|0x08, 0x1B6, 0);
  stream.write(htmlSource, htmlSource.length);
  stream.close();} else {aWin.focus(); return;}
  mrd.close();
}

  this.archiveTXT = function() {
  var mrd = Services.wm.getMostRecentWindow("addonlist:gen");
  var lb = mrd.document.getElementById("listBox").value.replace(/\u2007/g, " ");
  var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
  var stream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
  var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream);
   
  fp.appendFilters(fp.filterText); 
  fp.defaultExtension = ".txt"; 
  fp.init(window, "Сохранить как Text", 1);
  fp.defaultString = "Addons " + aDate().replace(/:/g, ".");
  if(fp.show() != fp.returnCancel) {
    if(fp.file.exists()) fp.file.remove(true);
    fp.file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 420); 
    stream.init(fp.file, 0x02|0x08|0x20, 0x1B6, 0);
    converter.init(stream, "UTF-8", 0, 0x0000);
    converter.writeString(lb, lb.length);
    converter.close();
    stream.close();
  } else {
    aWin.focus();
    return;
  }
  mrd.close();
 }

 this.check = function(id) {
  var enable = pref(id) != false ? false : true, mrd = Services.wm.getMostRecentWindow("addonlist:gen");
  gRoot.setBoolPref(id, enable);
  try {
    showExtensionList(mrd, Application.extensions.all);
  } catch(e) {AddonManager.getAllAddons(function(extensions) {showExtensionList(mrd, extensions);})}
 }


Посмотрите пожалуйста как можно оптимизировать код? Хотел обхватить много, а получилось много строк. Может есть, что лишнее убрать ? Или может что нехватает?

Отредактировано Andrey_Krropotkin (10-02-2013 22:56:17)

Отсутствует

 

Board footer

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