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

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№65106-07-2008 13:14:18

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Vvld

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETranslateButton%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21window.%20cbTranslateButton%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09window.%20cbTranslateButtonX%20%3D%20event.%20screenX%3B%0A%09%09%09window.%20cbTranslateButtonY%20%3D%20event.%20screenY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3Evar%20text%20%3D%20getBrowser%20%28%29.%20contentDocument.%20defaultView.%20getSelection%20%28%29%3B%0Aif%20%28text%20%3D%3D%20%22%22%29%0A%7B%0A%09var%20lng%20%3D%20%28getBrowser%20%28%29.%20contentDocument.%20defaultView.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09var%20url%20%3D%20%22http%3A//translate.google.com/translate%3Fu%3D%22%20+%0A%09%09%09%20%20escape%20%28getBrowser%20%28%29.%20contentDocument.%20location.%20href%29%20+%0A%09%09%09%20%20%22%26amp%3Bhl%3D%22%20+%0A%09%09%09%20%20lng%20+%0A%09%09%09%20%20%22%26amp%3Blangpair%3Dauto%7Cru%26amp%3Btbb%3D1%22%20+%0A%09%09%09%20%20%28getBrowser%20%28%29.%20contentDocument.%20charset%3F%0A%09%09%09%20%20%09%22%26amp%3Bie%3D%22%20+%20getBrowser%20%28%29.%20contentDocument.%20charset%3A%0A%09%09%09%09%20%20%22%22%29%3B%0A%09%09%20%20getBrowser%20%28%29.%20addTab%20%28url%2C%20null%2C%20null%29%3B%0A%09return%3B%0A%7D%0Avar%20x%20%3D%20window.%20cbTranslateButtonX%3B%0Avar%20y%20%3D%20window.%20cbTranslateButtonY%3B%0Aif%20%28%21x%20%7C%7C%20%21y%29%0A%09x%20%3D%20y%20%3D%200%3B%0AXML.%20ignoreProcessingInstructions%20%3D%20false%3B%0Avar%20dialog%20%3D%20%26lt%3B%26gt%3B%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0A%26lt%3Bwindow%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09xmlns%3Ahtml%3D%22http%3A//www.w3.org/1999/xhtml%22%0A%09%09id%3D%22dlg01%22%0A%09%09width%3D%22300%22%20height%3D%2250%22%0A%09%09screenX%3D%7Bx%7D%20screenY%3D%7By%7D%0A%09%09title%3D%22Google%20Translate%22%0A%09%09onload%3D%22f%28%29%22%0A%09%09onunload%3D%22f2%28%29%22%26gt%3B%0A%09%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%0A%09%09%26lt%3B%21%5BCDATA%5B%0A%09%09%09function%20f%20%28%29%0A%09%09%09%7B%0A%09%09%09%09var%20text%20%3D%20document.%20getElementById%20%28%22lbl01%22%29.%20getAttribute%20%28%22value%22%29%3B%0A%09%09%09%09window.%20addEventListener%20%28%22DOMContentLoaded%22%2C%20f3%2C%20true%29%3B%0A%09%09%09%09var%20src%3D%22http%3A//translate.google.com/translate_t%3Ftext%3D%22%20+%0A%09%09%09%09%09%09text%20+%20%22%26amp%3Bamp%3Bhl%3Dru%26amp%3Bamp%3Blangpair%3Dauto%7Cauto%26amp%3Bamp%3Btbb%3D1%26amp%3Bamp%3Bujs%3Dgtt%22%3B%0A%09%09%09%09document.%20getElementById%20%28%22ifr01%22%29.%20setAttribute%20%28%22src%22%2C%20src%29%3B%0A%09%09%09%09window.%20sizeToContent%20%28%29%3B%0A%09%09%09%7D%0A%09%09%09function%20f2%20%28%29%0A%09%09%09%7B%0A%09%09%09%09window.%20removeEventListener%20%28%22DOMContentLoaded%22%2C%20f3%2C%20true%29%3B%0A%09%09%09%7D%0A%09%09%09function%20f3%20%28%29%0A%09%09%09%7B%0A%09%09%09%09var%20doc%20%3D%20window.%20frames%20%5B0%5D.%20document%3B%0A%09%09%09%09var%20body%20%3D%20doc.%20body%3B%0A%09%09%09%09var%20t%20%3D%20%28body%20%26amp%3B%26amp%3B%20%21/%23808080/.%20test%20%28body.%20innerHTML%29%29%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20body.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%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%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.%20title%20+%3D%20%22%20-%20%22%20+%20t%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20r%20%3D%20doc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.%20getElementById%20%28%22desc01%22%29.%20textContent%20%3D%20r%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.%20sizeToContent%20%28%29%3B%0A%09%09%09%7D%0A%09%09%5D%5D%26gt%3B%0A%09%26lt%3B/script%26gt%3B%0A%09%26lt%3Bdescription%20id%3D%22desc01%22%26gt%3B%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u043C...%26lt%3B/description%26gt%3B%0A%09%26lt%3Blabel%20id%3D%22lbl01%22%20style%3D%22visibility%3Ahidden%3B%22%20value%3D%7Btext%7D/%26gt%3B%0A%09%26lt%3Bhtml%3Aiframe%20id%3D%22ifr01%22%20style%3D%22width%3A0px%3Bheight%3A0px%3Bvisibility%3Ahidden%3B%22/%26gt%3B%0A%26lt%3B/window%26gt%3B%26lt%3B/%26gt%3B%3B%0Awindow.%20openDialog%20%28%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20dialog.%20toXMLString%20%28%29%2C%20btoa%20%28escape%20%28text%29%29%2C%20%22chrome%2Cdependent%2Cminimizable%2Cdialog%3Dno%22%29%3B%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%3C/custombutton%3E

Хотя, работает не абсолютно точно как оперный скрипт.

А как с переводом страниц https через Google?

Похоже, это особенность переводчика.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№65206-07-2008 16:28:06

Vvld
Участник
 
Группа: Members
Зарегистрирован: 03-07-2008
Сообщений: 16
UA: Foxware 0.0

Re: Custom Buttons

Anton пишет:

Vvld

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETranslateButton%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21window.%20cbTranslateButton%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09window.%20cbTranslateButtonX%20%3D%20event.%20screenX%3B%0A%09%09%09window.%20cbTranslateButtonY%20%3D%20event.%20screenY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3Evar%20text%20%3D%20getBrowser%20%28%29.%20contentDocument.%20defaultView.%20getSelection%20%28%29%3B%0Aif%20%28text%20%3D%3D%20%22%22%29%0A%7B%0A%09var%20lng%20%3D%20%28getBrowser%20%28%29.%20contentDocument.%20defaultView.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09var%20url%20%3D%20%22http%3A//translate.google.com/translate%3Fu%3D%22%20+%0A%09%09%09%20%20escape%20%28getBrowser%20%28%29.%20contentDocument.%20location.%20href%29%20+%0A%09%09%09%20%20%22%26amp%3Bhl%3D%22%20+%0A%09%09%09%20%20lng%20+%0A%09%09%09%20%20%22%26amp%3Blangpair%3Dauto%7Cru%26amp%3Btbb%3D1%22%20+%0A%09%09%09%20%20%28getBrowser%20%28%29.%20contentDocument.%20charset%3F%0A%09%09%09%20%20%09%22%26amp%3Bie%3D%22%20+%20getBrowser%20%28%29.%20contentDocument.%20charset%3A%0A%09%09%09%09%20%20%22%22%29%3B%0A%09%09%20%20getBrowser%20%28%29.%20addTab%20%28url%2C%20null%2C%20null%29%3B%0A%09return%3B%0A%7D%0Avar%20x%20%3D%20window.%20cbTranslateButtonX%3B%0Avar%20y%20%3D%20window.%20cbTranslateButtonY%3B%0Aif%20%28%21x%20%7C%7C%20%21y%29%0A%09x%20%3D%20y%20%3D%200%3B%0AXML.%20ignoreProcessingInstructions%20%3D%20false%3B%0Avar%20dialog%20%3D%20%26lt%3B%26gt%3B%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0A%26lt%3Bwindow%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09xmlns%3Ahtml%3D%22http%3A//www.w3.org/1999/xhtml%22%0A%09%09id%3D%22dlg01%22%0A%09%09width%3D%22300%22%20height%3D%2250%22%0A%09%09screenX%3D%7Bx%7D%20screenY%3D%7By%7D%0A%09%09title%3D%22Google%20Translate%22%0A%09%09onload%3D%22f%28%29%22%0A%09%09onunload%3D%22f2%28%29%22%26gt%3B%0A%09%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%0A%09%09%26lt%3B%21%5BCDATA%5B%0A%09%09%09function%20f%20%28%29%0A%09%09%09%7B%0A%09%09%09%09var%20text%20%3D%20document.%20getElementById%20%28%22lbl01%22%29.%20getAttribute%20%28%22value%22%29%3B%0A%09%09%09%09window.%20addEventListener%20%28%22DOMContentLoaded%22%2C%20f3%2C%20true%29%3B%0A%09%09%09%09var%20src%3D%22http%3A//translate.google.com/translate_t%3Ftext%3D%22%20+%0A%09%09%09%09%09%09text%20+%20%22%26amp%3Bamp%3Bhl%3Dru%26amp%3Bamp%3Blangpair%3Dauto%7Cauto%26amp%3Bamp%3Btbb%3D1%26amp%3Bamp%3Bujs%3Dgtt%22%3B%0A%09%09%09%09document.%20getElementById%20%28%22ifr01%22%29.%20setAttribute%20%28%22src%22%2C%20src%29%3B%0A%09%09%09%09window.%20sizeToContent%20%28%29%3B%0A%09%09%09%7D%0A%09%09%09function%20f2%20%28%29%0A%09%09%09%7B%0A%09%09%09%09window.%20removeEventListener%20%28%22DOMContentLoaded%22%2C%20f3%2C%20true%29%3B%0A%09%09%09%7D%0A%09%09%09function%20f3%20%28%29%0A%09%09%09%7B%0A%09%09%09%09var%20doc%20%3D%20window.%20frames%20%5B0%5D.%20document%3B%0A%09%09%09%09var%20body%20%3D%20doc.%20body%3B%0A%09%09%09%09var%20t%20%3D%20%28body%20%26amp%3B%26amp%3B%20%21/%23808080/.%20test%20%28body.%20innerHTML%29%29%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20body.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%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%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.%20title%20+%3D%20%22%20-%20%22%20+%20t%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20r%20%3D%20doc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.%20getElementById%20%28%22desc01%22%29.%20textContent%20%3D%20r%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.%20sizeToContent%20%28%29%3B%0A%09%09%09%7D%0A%09%09%5D%5D%26gt%3B%0A%09%26lt%3B/script%26gt%3B%0A%09%26lt%3Bdescription%20id%3D%22desc01%22%26gt%3B%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u043C...%26lt%3B/description%26gt%3B%0A%09%26lt%3Blabel%20id%3D%22lbl01%22%20style%3D%22visibility%3Ahidden%3B%22%20value%3D%7Btext%7D/%26gt%3B%0A%09%26lt%3Bhtml%3Aiframe%20id%3D%22ifr01%22%20style%3D%22width%3A0px%3Bheight%3A0px%3Bvisibility%3Ahidden%3B%22/%26gt%3B%0A%26lt%3B/window%26gt%3B%26lt%3B/%26gt%3B%3B%0Awindow.%20openDialog%20%28%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20dialog.%20toXMLString%20%28%29%2C%20btoa%20%28escape%20%28text%29%29%2C%20%22chrome%2Cdependent%2Cminimizable%2Cdialog%3Dno%22%29%3B%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%3C/custombutton%3E

Хотя, работает не абсолютно точно как оперный скрипт.

А как с переводом страниц https через Google?

Похоже, это особенность переводчика.

КЛАСС!!! ;) Основное у Вас получилось!
Есть несколько просьб:
1. чем больше символов в выделенном тексте, тем шире всплывающее окошко и при количестве символов больше, чем помещается на странице, окошко становится шире границ основного окна. И это все при практически неизменной высоте всплывающего окошка.
Можно зафиксировать ширину всплывающего окошка, а по высоте, при достижении определенной высоты, чтобы появилась прокрутка текста?
2. во всплывающем окошке не сохраняется форматирование выделенного текста, и весь текст идет в одну трудночитаемую строчку со всеми символами. Это не относится к переводу страницы полностью - там форматирование полностью сохраняется.
Поправить можно?
3. было бы неплохо, чтобы текст во всплывающем окошке можно было бы выделить и скопировать.
Это возможно?

Ну а https прийдется как и раньше либо копировать в блокнот и переводить, либо (при не сложных текстах) с помощью словаря. Хотя, если текст не сложный, то я его понимаю и без словаря (конечно только английский, но никак не китайский.

Добавлено Sun Jul  6 16:43:44 2008 :
Anton
Где - то на форуме (я не запомнил эту страницу и сейчас не могу найти) обсуждалась кнопка с меню. Может быть легче сделать, чтобы в меню кнопки перевода было несколько строк (?):
страница
выделенный текст
............... (для нуждающихся в каких-либо дополнительных функциях перевода)

Отредактировано Vvld (06-07-2008 16:32:17)

Отсутствует

 

№65306-07-2008 18:00:39

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Vvld
Я попробую исправить кнопку с учётом сделанных замечаний.

На следующей неделе намечаются разъезды, так что, скорее всего я не смогу этим заняться раньше выходных.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№65406-07-2008 18:08:12

Vvld
Участник
 
Группа: Members
Зарегистрирован: 03-07-2008
Сообщений: 16
UA: Foxware 0.0

Re: Custom Buttons

Anton пишет:

Vvld
Я попробую исправить кнопку с учётом сделанных замечаний.

На следующей неделе намечаются разъезды, так что, скорее всего я не смогу этим заняться раньше выходных.

Конечно.
Я и так уже блаженствую. Иметь под рукой такую кнопочку...;)

Отсутствует

 

№65506-07-2008 18:25:32

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Anton
Хотелось бы то же обратиться к Вам с несколькими вопросами:
Если брать именно оригинальный Гугловский скрипт, можно ли сделать что бы он запускался в новой вкладке, а не как через getBrowser (). contentDocument. location. href = "", в текущей?
Можно попросить кнопку, для Get File Size, что то не соображу какие аргументы прописать, хотелось бы брать текстовые ссылки и если возможно урлы из выделенных.
Сделал кнопку для Promt-X из Promt 7, через goDoCommand ("cmd_copy");, но подозреваю что много лишнего, как приблизительно должен выглядеть код? (Promt-X, сам берёт из буфера выделенное, при запуске).
И последний вопрос - возможно ли сделать проверку орфографии с помощью MS Office, через известный скрипт Spell.vbs.

Отсутствует

 

№65607-07-2008 06:37:38

Vvld
Участник
 
Группа: Members
Зарегистрирован: 03-07-2008
Сообщений: 16
UA: Foxware 0.0

Re: Custom Buttons

Deim0s

...оригинальный Гугловский скрипт...

Если для Google Translate, то пост 651 (еще не полностью сделана) или пост 567 - работает

Отсутствует

 

№65707-07-2008 11:54:01

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Vvld
Под оригинальным, я имею ввиду тот который отдаёт сам Google, меня он вполне устраивает, хотелось только что бы срабатывал в новой вкладке. В посте № 567 перевод только с английского на руский, надо править en|ru, на auto|ru. К тому же,  при изменении Googl'ом скрипта, случись такое, оба придётся править, в оригинальном варианте - только заменить сам скрипт в " ".

Отсутствует

 

№65808-07-2008 00:46:58

Vvld
Участник
 
Группа: Members
Зарегистрирован: 03-07-2008
Сообщений: 16
UA: Foxware 0.0

Re: Custom Buttons

Deim0s
Кнопка поста 567 переводит на другой странице. Исправить en|ru на auto|ru большой проблемы нет.
От изменения скрипта Google никто не застрахован и кнопка перестанет работать.
Мысль

только заменить сам скрипт в " "

- это был бы хороший вариант. Но как это программно сделать - надо с Антоном обсуждать. Дождемся его...
Мне кажется, что такой вариант может получиться в кнопке с выпадающим меню, когда основная часть (перевод) один - первое нажатие кнопки, а где сделать этот перевод - нажатие пункта выпадающего меню. Но это, наверное, сложно.

Отсутствует

 

№65908-07-2008 02:00:18

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Vvld

Но как это программно сделать - надо с Антоном обсуждать.

Я к нему с просьбой и обратился. Т.к. скрипт Googl'а сам прекрасно "различает" перевод текста, от перевода страницы, зачем меню? Кому хочется на текущей вкладке и так с оригиналом работает. ИМХО смысл кнопки в удобстве перевода одним нажатием, а если через меню, так это и через закладку можно переводить.

Отсутствует

 

№66008-07-2008 09:17:52

Vvld
Участник
 
Группа: Members
Зарегистрирован: 03-07-2008
Сообщений: 16
UA: Foxware 0.0

Re: Custom Buttons

Deim0s

ИМХО смысл кнопки в удобстве перевода одним нажатием, а если через меню, так это и через закладку можно переводить.

Да я не спорю, но мысль и для себя работает - помимо перевода на другой странице (это то работает) я просил Антона сделать перевод выделенного текста во всплывающем окошке и он это уже сделал, только надо чуть-чуть поправить. Но в простой кнопке вставить в " " скрипт Google, при его изменении, не получится и прийдется всю кнопку переделывать.

Отсутствует

 

№66112-07-2008 18:14:48

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Vvld

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETranslateButton%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21window.%20cbTranslateButton%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09window.%20cbTranslateButtonX%20%3D%20event.%20screenX%3B%0A%09%09%09window.%20cbTranslateButtonY%20%3D%20event.%20screenY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3Evar%20text%20%3D%20getBrowser%20%28%29.%20contentDocument.%20defaultView.%20getSelection%20%28%29%3B%0Aif%20%28text%20%3D%3D%20%22%22%29%0A%7B%0A%09var%20lng%20%3D%20%28getBrowser%20%28%29.%20contentDocument.%20defaultView.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09var%20url%20%3D%20%22http%3A//translate.google.com/translate%3Fu%3D%22%20+%0A%09%09%09%20%20escape%20%28getBrowser%20%28%29.%20contentDocument.%20location.%20href%29%20+%0A%09%09%09%20%20%22%26amp%3Bhl%3D%22%20+%0A%09%09%09%20%20lng%20+%0A%09%09%09%20%20%22%26amp%3Blangpair%3Dauto%7Cru%26amp%3Btbb%3D1%22%20+%0A%09%09%09%20%20%28getBrowser%20%28%29.%20contentDocument.%20charset%3F%0A%09%09%09%20%20%09%22%26amp%3Bie%3D%22%20+%20getBrowser%20%28%29.%20contentDocument.%20charset%3A%0A%09%09%09%09%20%20%22%22%29%3B%0A%09%09%20%20getBrowser%20%28%29.%20addTab%20%28url%2C%20null%2C%20null%29%3B%0A%09return%3B%0A%7D%0Avar%20x%20%3D%20window.%20cbTranslateButtonX%3B%0Avar%20y%20%3D%20window.%20cbTranslateButtonY%3B%0Aif%20%28%21x%20%7C%7C%20%21y%29%0A%09x%20%3D%20y%20%3D%200%3B%0AXML.%20ignoreProcessingInstructions%20%3D%20false%3B%0Avar%20dialog%20%3D%20%26lt%3B%26gt%3B%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22resource%3A//gre/res/html.css%22%3F%26gt%3B%0A%26lt%3Bwindow%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09xmlns%3Ahtml%3D%22http%3A//www.w3.org/1999/xhtml%22%0A%09%09id%3D%22dlg01%22%0A%09%09screenX%3D%7Bx%7D%20screenY%3D%7By%7D%0A%09%09title%3D%22Google%20Translate%22%0A%09%09onload%3D%22f%28%29%22%0A%09%09onunload%3D%22f2%28%29%22%26gt%3B%0A%09%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%0A%09%09%26lt%3B%21%5BCDATA%5B%0A%09%09%09function%20f%20%28%29%0A%09%09%09%7B%0A%09%09%09%09var%20text%20%3D%20document.%20getElementById%20%28%22lbl01%22%29.%20getAttribute%20%28%22value%22%29%3B%0A%09%09%09%09window.%20addEventListener%20%28%22DOMContentLoaded%22%2C%20f3%2C%20true%29%3B%0A%09%09%09%09var%20src%3D%22http%3A//translate.google.com/translate_t%3Ftext%3D%22%20+%0A%09%09%09%09%09%09text%20+%20%22%26amp%3Bamp%3Bhl%3Dru%26amp%3Bamp%3Blangpair%3Dauto%7Cauto%26amp%3Bamp%3Btbb%3D1%26amp%3Bamp%3Bujs%3Dgtt%22%3B%0A%09%09%09%09document.%20getElementById%20%28%22ifr01%22%29.%20setAttribute%20%28%22src%22%2C%20src%29%3B%0A%09%09%09%09window.%20sizeToContent%20%28%29%3B%0A%09%09%09%7D%0A%09%09%09function%20f2%20%28%29%0A%09%09%09%7B%0A%09%09%09%09window.%20removeEventListener%20%28%22DOMContentLoaded%22%2C%20f3%2C%20true%29%3B%0A%09%09%09%7D%0A%09%09%09function%20f3%20%28%29%0A%09%09%09%7B%0A%09%09%09%09var%20doc%20%3D%20window.%20frames%20%5B0%5D.%20document%3B%0A%09%09%09%09var%20body%20%3D%20doc.%20body%3B%0A%09%09%09%09var%20t%20%3D%20%28body%20%26amp%3B%26amp%3B%20%21/%23808080/.%20test%20%28body.%20innerHTML%29%29%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20body.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%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%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.%20title%20+%3D%20%22%20-%20%22%20+%20t%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20r%20%3D%20doc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.%20getElementById%20%28%22desc01%22%29.%20innerHTML%20%3D%20r%3B%0A%09%09var%20ifr%20%3D%20document.%20getElementById%20%28%22ifr01%22%29%3B%0A%09%09ifr.%20parentNode.%20removeChild%20%28ifr%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.%20sizeToContent%20%28%29%3B%0A%09%09%09%7D%0A%09%09%5D%5D%26gt%3B%0A%09%26lt%3B/script%26gt%3B%0A%09%26lt%3Bbox%20width%3D%22350%22%26gt%3B%0A%09%09%26lt%3Blabel%20id%3D%22lbl01%22%20hidden%3D%22true%22%20value%3D%7Btext%7D/%26gt%3B%0A%09%09%26lt%3Bhtml%3Ahtml%20flex%3D%221%22%26gt%3B%0A%09%09%09%26lt%3Bhtml%3Ahead%26gt%3B%0A%09%09%09%09%26lt%3Bhtml%3Astyle%20type%3D%22text/css%22%26gt%3B%0A%09%09%09%09%09%26lt%3B%21%5BCDATA%5B%0A%09%09%09%09%09%09iframe%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09visibility%3A%20hidden%3B%0A%09%09%09%09%09%09%09width%3A%200px%3B%0A%09%09%09%09%09%09%09height%3A%200px%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%0A%09%09%09%09%09%09%23div1%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09left%3A%200%3B%0A%09%09%09%09%09%09%09top%3A%200%3B%0A%09%09%09%09%09%09%09font%3A%2016px%20Times%20New%20Roman%3B%0A%09%09%09%09%09%09%09border%3A%201px%20solid%20gray%3B%0A%09%09%09%09%09%09%09padding%3A%203px%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%0A%09%09%09%09%09%09%23desc01%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09border%3A%201px%20solid%20%23aaaaaa%3B%0A%09%09%09%09%09%09%09margin%3A%202px%200%200%200%3B%0A%09%09%09%09%09%09%09padding%3A%204px%3B%0A%09%09%09%09%09%09%09background-color%3A%20%23fafcfe%3B%0A%09%09%09%09%09%09%09font%3A%2014px%20Times%20New%20Roman%3B%0A%09%09%09%09%09%09%09-moz-user-select%3A%20text%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%5D%5D%26gt%3B%0A%09%09%09%09%26lt%3B/html%3Astyle%26gt%3B%0A%09%09%09%26lt%3B/html%3Ahead%26gt%3B%0A%09%09%09%26lt%3Bhtml%3Abody%26gt%3B%0A%09%09%09%09%26lt%3Bhtml%3Adiv%20id%3D%22div1%22%26gt%3B%0A%09%09%09%09%09%26lt%3Bhtml%3Adiv%20id%3D%22desc01%22%26gt%3B%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u043C...%26lt%3B/html%3Adiv%26gt%3B%0A%09%09%09%09%26lt%3B/html%3Adiv%26gt%3B%0A%09%09%09%09%26lt%3Bhtml%3Aiframe%20id%3D%22ifr01%22/%26gt%3B%0A%09%09%09%26lt%3B/html%3Abody%26gt%3B%0A%09%09%26lt%3B/html%3Ahtml%26gt%3B%0A%09%26lt%3B/box%26gt%3B%0A%26lt%3B/window%26gt%3B%26lt%3B/%26gt%3B%3B%0Awindow.%20openDialog%20%28%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20dialog.%20toXMLString%20%28%29%2C%20btoa%20%28escape%20%28text%29%29%2C%20%22chrome%2Cdependent%2Cminimizable%2Cdialog%3Dno%22%29%3B%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%3C/custombutton%3E

с меню:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETranslateButton%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3Eif%20%28%21window.%20cbTranslateButton%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09window.%20cbTranslateButtonX%20%3D%20event.%20screenX%3B%0A%09%09%09window.%20cbTranslateButtonY%20%3D%20event.%20screenY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%0A%7D%0A%0Avar%20menu%20%3D%20%26lt%3Bmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%20%20%20%20%0Aoncommand%3D%22this.parentNode.cbButtonDoMenuCommand%28event%29%22%26gt%3B%0A%09%26lt%3Bmenuitem%20value%3D%22Selection%22%20label%3D%22%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%22/%26gt%3B%0A%09%26lt%3Bmenuitem%20value%3D%22Page%22%20label%3D%22%u0421%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22/%26gt%3B%0A%26lt%3B/menupopup%26gt%3B%3B%0Amenu%20%3D%20new%20DOMParser%20%28%29.%20parseFromString%20%28menu.%20toXMLString%20%28%29%2C%20%22application/xml%22%29.%20documentElement%3B%0Amenu.%20setAttribute%20%28%22id%22%2C%20this.%20id%20+%20%22-menu%22%29%3B%0Athis.%20appendChild%20%28menu%29%3B%0Athis.%20setAttribute%20%28%22popup%22%2C%20this.%20id%20+%20%22-menu%22%29%3B%0Athis.%20cbButtonDoMenuCommand%20%3D%20function%20%28event%29%0A%7B%0A%09var%20itemNum%20%3D%20event.%20target.%20getAttribute%20%28%22value%22%29%3B%0A%09switch%20%28itemNum%29%0A%09%7B%0A%09%09case%20%22Selection%22%3A%0A%09%09%09this.%20cbTranslateSelection%20%28%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22Page%22%3A%0A%09%09%09this.%20cbTranslatePage%20%28%29%3B%0A%09%09%09break%3B%0A%09%7D%0A%7D%3B%0Athis.%20cbTranslateSelection%20%3D%20function%20%28%29%0A%7B%0A%09var%20text%20%3D%20getBrowser%20%28%29.%20contentDocument.%20defaultView.%20getSelection%20%28%29%3B%0A%09var%20x%20%3D%20window.%20cbTranslateButtonX%3B%0A%09var%20y%20%3D%20window.%20cbTranslateButtonY%3B%0A%09if%20%28%21x%20%7C%7C%20%21y%29%0A%09%09x%20%3D%20y%20%3D%200%3B%0A%09XML.%20ignoreProcessingInstructions%20%3D%20false%3B%0A%09var%20dialog%20%3D%20%26lt%3B%26gt%3B%0A%09%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0A%09%26lt%3B%3Fxml-stylesheet%20href%3D%22resource%3A//gre/res/html.css%22%3F%26gt%3B%0A%09%26lt%3Bwindow%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09xmlns%3Ahtml%3D%22http%3A//www.w3.org/1999/xhtml%22%0A%09%09%09id%3D%22dlg01%22%0A%09%09%09screenX%3D%7Bx%7D%20screenY%3D%7By%7D%0A%09%09%09title%3D%22Google%20Translate%22%0A%09%09%09onload%3D%22f%28%29%22%0A%09%09%09onunload%3D%22f2%28%29%22%26gt%3B%0A%09%09%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%0A%09%09%09%26lt%3B%21%5BCDATA%5B%0A%09%09%09%09function%20f%20%28%29%0A%09%09%09%09%7B%0A%09%09%09%09%09var%20text%20%3D%20document.%20getElementById%20%28%22lbl01%22%29.%20getAttribute%20%28%22value%22%29%3B%0A%09%09%09%09%09window.%20addEventListener%20%28%22DOMContentLoaded%22%2C%20f3%2C%20true%29%3B%0A%09%09%09%09%09var%20src%3D%22http%3A//translate.google.com/translate_t%3Ftext%3D%22%20+%0A%09%09%09%09%09%09%09text%20+%20%22%26amp%3Bamp%3Bhl%3Dru%26amp%3Bamp%3Blangpair%3Dauto%7Cauto%26amp%3Bamp%3Btbb%3D1%26amp%3Bamp%3Bujs%3Dgtt%22%3B%0A%09%09%09%09%09document.%20getElementById%20%28%22ifr01%22%29.%20setAttribute%20%28%22src%22%2C%20src%29%3B%0A%09%09%09%09%09window.%20sizeToContent%20%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09function%20f2%20%28%29%0A%09%09%09%09%7B%0A%09%09%09%09%09window.%20removeEventListener%20%28%22DOMContentLoaded%22%2C%20f3%2C%20true%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09function%20f3%20%28%29%0A%09%09%09%09%7B%0A%09%09%09%09%09var%20doc%20%3D%20window.%20frames%20%5B0%5D.%20document%3B%0A%09%09%09%09%09var%20body%20%3D%20doc.%20body%3B%0A%09%09%09%09%09var%20t%20%3D%20%28body%20%26amp%3B%26amp%3B%20%21/%23808080/.%20test%20%28body.%20innerHTML%29%29%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20body.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%27%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.%20title%20+%3D%20%22%20-%20%22%20+%20t%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20r%20%3D%20doc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.%20getElementById%20%28%22desc01%22%29.%20innerHTML%20%3D%20r%3B%0A%09%09%09var%20ifr%20%3D%20document.%20getElementById%20%28%22ifr01%22%29%3B%0A%09%09%09ifr.%20parentNode.%20removeChild%20%28ifr%29%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.%20sizeToContent%20%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%5D%5D%26gt%3B%0A%09%09%26lt%3B/script%26gt%3B%0A%09%09%26lt%3Bbox%20width%3D%22350%22%26gt%3B%0A%09%09%09%26lt%3Blabel%20id%3D%22lbl01%22%20hidden%3D%22true%22%20value%3D%7Btext%7D/%26gt%3B%0A%09%09%09%26lt%3Bhtml%3Ahtml%20flex%3D%221%22%26gt%3B%0A%09%09%09%09%26lt%3Bhtml%3Ahead%26gt%3B%0A%09%09%09%09%09%26lt%3Bhtml%3Astyle%20type%3D%22text/css%22%26gt%3B%0A%09%09%09%09%09%09%26lt%3B%21%5BCDATA%5B%0A%09%09%09%09%09%09%09iframe%0A%09%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%09visibility%3A%20hidden%3B%0A%09%09%09%09%09%09%09%09width%3A%200px%3B%0A%09%09%09%09%09%09%09%09height%3A%200px%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%0A%09%09%09%09%09%09%09%23div1%0A%09%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%09left%3A%200%3B%0A%09%09%09%09%09%09%09%09top%3A%200%3B%0A%09%09%09%09%09%09%09%09font%3A%2016px%20Times%20New%20Roman%3B%0A%09%09%09%09%09%09%09%09border%3A%201px%20solid%20gray%3B%0A%09%09%09%09%09%09%09%09padding%3A%203px%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%0A%09%09%09%09%09%09%09%23desc01%0A%09%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%09border%3A%201px%20solid%20%23aaaaaa%3B%0A%09%09%09%09%09%09%09%09margin%3A%202px%200%200%200%3B%0A%09%09%09%09%09%09%09%09padding%3A%204px%3B%0A%09%09%09%09%09%09%09%09background-color%3A%20%23fafcfe%3B%0A%09%09%09%09%09%09%09%09font%3A%2014px%20Times%20New%20Roman%3B%0A%09%09%09%09%09%09%09%09-moz-user-select%3A%20text%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%5D%5D%26gt%3B%0A%09%09%09%09%09%26lt%3B/html%3Astyle%26gt%3B%0A%09%09%09%09%26lt%3B/html%3Ahead%26gt%3B%0A%09%09%09%09%26lt%3Bhtml%3Abody%26gt%3B%0A%09%09%09%09%09%26lt%3Bhtml%3Adiv%20id%3D%22div1%22%26gt%3B%0A%09%09%09%09%09%09%26lt%3Bhtml%3Adiv%20id%3D%22desc01%22%26gt%3B%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u043C...%26lt%3B/html%3Adiv%26gt%3B%0A%09%09%09%09%09%26lt%3B/html%3Adiv%26gt%3B%0A%09%09%09%09%09%26lt%3Bhtml%3Aiframe%20id%3D%22ifr01%22/%26gt%3B%0A%09%09%09%09%26lt%3B/html%3Abody%26gt%3B%0A%09%09%09%26lt%3B/html%3Ahtml%26gt%3B%0A%09%09%26lt%3B/box%26gt%3B%0A%09%26lt%3B/window%26gt%3B%26lt%3B/%26gt%3B%3B%0A%09window.%20openDialog%20%28%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20dialog.%20toXMLString%20%28%29%2C%20btoa%20%28escape%20%28text%29%29%2C%20%22chrome%2Cdependent%2Cminimizable%2Cdialog%3Dno%22%29%3B%0A%7D%3B%0Athis.%20cbTranslatePage%20%3D%20function%20%28%29%0A%7B%0A%09var%20lng%20%3D%20%28getBrowser%20%28%29.%20contentDocument.%20defaultView.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09var%20url%20%3D%20%22http%3A//translate.google.com/translate%3Fu%3D%22%20+%0A%09%09%09%20%20escape%20%28getBrowser%20%28%29.%20contentDocument.%20location.%20href%29%20+%0A%09%09%09%20%20%22%26amp%3Bhl%3D%22%20+%0A%09%09%09%20%20lng%20+%0A%09%09%09%20%20%22%26amp%3Blangpair%3Dauto%7Cru%26amp%3Btbb%3D1%22%20+%0A%09%09%09%20%20%28getBrowser%20%28%29.%20contentDocument.%20charset%3F%0A%09%09%09%20%20%09%22%26amp%3Bie%3D%22%20+%20getBrowser%20%28%29.%20contentDocument.%20charset%3A%0A%09%09%09%09%20%20%22%22%29%3B%0A%09%09%20%20getBrowser%20%28%29.%20addTab%20%28url%2C%20null%2C%20null%29%3B%0A%09return%3B%0A%7D%3B%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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%3C/custombutton%3E

Deim0s

Если брать именно оригинальный Гугловский скрипт, можно ли сделать что бы он запускался в новой вкладке, а не как через getBrowser (). contentDocument. location. href = "", в текущей?

У меня на этот счёт пока что нет никаких обещающих идей, к сожалению.

Можно попросить кнопку, для Get File Size, что то не соображу какие аргументы прописать, хотелось бы брать текстовые ссылки и если возможно урлы из выделенных.

Попросить, разумеется можно. В свою очередь, хотелось бы попросить излагать мысли более детально - я после нескольких прочтений всё ещё не могу понять о чём здесь идёт речь.

Сделал кнопку для Promt-X из Promt 7, через goDoCommand ("cmd_copy");, но подозреваю что много лишнего, как приблизительно должен выглядеть код? (Promt-X, сам берёт из буфера выделенное, при запуске).

Сложно сказать, не видя кода.

И последний вопрос - возможно ли сделать проверку орфографии с помощью MS Office, через известный скрипт Spell.vbs.

Я нашёл в google код для запуска spell.vbs:

Выделить код

Код:

Item, "проверка орфографии" = Select all & Copy & Execute Program, "Spell.vbs","%c"

по аналогии, должно быть что-то вроде

Выделить код

Код:

goDoCommand ("cmd_selectAll");
goDoCommand ("cmd_copy");
function startProcess (path, arg1, arg2)
{
    var file = Components. classes["@mozilla.org/file/local;1"].
           createInstance (Components.interfaces.nsILocalFile);
    var process = Components. classes ["@mozilla.org/process/util;1"].
              getService (Components. interfaces. nsIProcess);
    file. initWithPath (path);
    process. init (file);
    process. run (false, [arg1, arg2], 2); 
}
startProcess ("c:\\winxp\\system32\\wscript.exe", "c:\\path\\to\\vbsspell\\spell.vbs", "\"" + getBrowser (). contentDocument. defaultView. getSelection () + "\"");

Но проверить не могу, MSO у меня сейчас нет (как и Promt'а)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№66212-07-2008 19:26:15

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Anton
По скрипту для spell.vbs:
Спасибо большое, работает отлично, я правда (и в опере то же) убрал "selectAll", что бы проверять только выделенный текст, в том скрипте, что Вы написали, все функции работают как надо - проверяет любой выделенный текст (если убрать "cmd_selectAll"), предлагает замену ошибочных слов, в форме ответа автоматически заменяет выбранное, ещё раз спасибо, неплохое дополнение к стандартной проверке FF.
По Promt-X из Promt 7:
Запускаю скриптом, который нашёл в начале топика, у меня выглядит так:

Выделить код

Код:

goDoCommand ("cmd_copy");
var path='D:\\Soft\\PRMT6\\PRMTX\\prmtx.exe';  var arguments=['']; var file = Components.classes['@mozilla.org/file/local;1']     .createInstance(Components.interfaces.nsILocalFile); var process = Components.classes['@mozilla.org/process/util;1']     .getService(Components.interfaces.nsIProcess);  file.initWithPath(path);   process.init(file);  process.run(false,arguments,arguments.length);

всё работает, но хотел спросить, может лишнее что то?
По Get File Size:
Есть такая не плохая утилита Get-File-Size, у меня стоит расширение Extended Link Properties, с аналогичными функциями, но он не берёт текстовые ссылки вида _http://www.ru/программа.exe, хотелось бы кнопку для Get-File-Size. Для оперы выглядит так:

Выделить код

Код:

Execute Program,"C:\Program Files\UnH Solutions\Get File Size\GetFileSize.exe","/url:%t"

.

Отсутствует

 

№66312-07-2008 20:18:27

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

всё работает, но хотел спросить, может лишнее что то?

По-моему, ничего лишнего. Разве что, наверное можно через file. launch (), раз без аргументов, но это, не особенно важно, я думаю.

Для Get-File-Size, кажется, так:

Выделить код

Код:

function startProcess (path, arg1)
{
    var file = Components. classes["@mozilla.org/file/local;1"].
           createInstance (Components.interfaces.nsILocalFile);
    var process = Components. classes ["@mozilla.org/process/util;1"].
              getService (Components. interfaces. nsIProcess);
    file. initWithPath (path);
    process. init (file);
    process. run (false, [arg1], 1); 
}
startProcess ("c:\\program files\\UnH Solutions\\Get File Size\\GetFileSize.exe", "/url:" + getBrowser (). contentDocument. defaultView. getSelection ());

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№66412-07-2008 20:24:49

Z&N
Участник
 
Группа: Members
Зарегистрирован: 01-04-2008
Сообщений: 2401
UA: Firefox 3.0

Re: Custom Buttons

Deim0s не проще ли поставить Get File Size ;)

Отсутствует

 

№66512-07-2008 20:59:20

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Anton

Для Get-File-Size, кажется, так:

Не много не получается, если взять любую текстовую ссылку, к примеру ту же: _http://www.ru/программа.exe, выделить всё после _, то в опере получается нормально:
http://i016.radikal.ru/0807/3a/2fe395f81d7b.png
В FF, через код который Вы написали, получается так:
http://i082.radikal.ru/0807/79/984b2f150621.png
и почему то не берёт ссылки из полей ввода.
Z&N
Спасибо, но я расширениями не увлекаюсь, стоят несколько штук, только самые необходимые, без которых ни как, всё остальное стараюсь делать через: userChrome.css и userContent.css, ещё и познавательно к тому же :). Да и Get-File-Size всё равно установлен, почему б не попользоваться.

Отсутствует

 

№66612-07-2008 21:36:41

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Deim0s
Тогда так:

Выделить код

Код:

function startProcess (path, arg1)
{
    var file = Components. classes["@mozilla.org/file/local;1"].
           createInstance (Components.interfaces.nsILocalFile);
    var process = Components. classes ["@mozilla.org/process/util;1"].
              getService (Components. interfaces. nsIProcess);
    file. initWithPath (path);
    process. init (file);
    process. run (false, [arg1], 1); 
}
var sel = document. commandDispatcher. focusedWindow. getSelection (). toString () ||
      document. commandDispatcher. focusedElement. value;
var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
suc. charset = "windows-1251";
sel = suc. ConvertFromUnicode (sel);
startProcess ("c:\\program files\\UnH Solutions\\Get File Size\\GetFileSize.exe", "/url:" + sel);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№66712-07-2008 22:34:02

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Anton
Спасибо, так работает как надо, осталось маленькое но (если я Вам не надоел ещё, с этим GetFileSize'oм :)), в поле ответа копирует не только выделенное, а всё. Выглядит так, если к примеру в поле ответа ссылка вида: Скачать_http://www.ru/программа.exe
и я выделяю всё что после "Скачать_", то получается так:
http://i012.radikal.ru/0807/22/1c3fc906b5f7.png
И отсюда ещё вопрос: вот Вы написали скрипт для GetFileSize, он берёт выделенное ото всюду и из полей ввода в том числе, а вот скрипт Google-translate, не может брать не из полей ввода, не из полей ответа, можно это исправить? (для скрипта из поста № 567, к примеру, он попроще вроде).

Отсутствует

 

№66813-07-2008 09:20:21

Vvld
Участник
 
Группа: Members
Зарегистрирован: 03-07-2008
Сообщений: 16
UA: Foxware 0.0

Re: Custom Buttons

Anton
СПАСИБО!!!
Релиз кнопок состоялся. Замечательные кнопочки получились!!!

Погонял кнопочки по сайтам и обнаружились некоторые неудобства касательно всплывающего окошка:
1. Переведенный текст теряет исходный формат. Трудно читать и сравнивать с оригиналом.
2. Выделить мышкой текст во всплывающем окошке можно, а скопировать через контекстое меню в буфер обмена не получается - само меню не появляется. А хотелось бы.
3. Размер всплывающего окошка.
Ширина хорошая, больше не надо.
В зависимости от знаков в тексте окошко меняет свою высоту.
Для эксперимента (хотя это скорее всего не понадобится) попробовал перевод большого текста. Получилась большая высота окошка и стало неудобно сравнивать перевод с оригиналом.
Оптимально - соотношение ширины и высоты - 1 : 1,0...1,1 с прокруткой текста.
Можно поправить?

Отсутствует

 

№66913-07-2008 15:06:23

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Deim0s
Надо заменить

Выделить код

Код:

var sel = document. commandDispatcher. focusedWindow. getSelection (). toString () ||
      document. commandDispatcher. focusedElement. value;

на

Выделить код

Код:

var sel = document. commandDispatcher. focusedWindow. getSelection (). toString ();
if (!sel)
{
    var el = document. commandDispatcher. focusedElement;
    sel = el. value. substring (el. selectionStart, el. selectionEnd);
}

То же самое и для google-трансляторов

Vvld

1. Переведенный текст теряет исходный формат. Трудно читать и сравнивать с оригиналом.

Поскольку мне неочевидно, как это сделать в реализации с всплывающим окошком, пришлось сделать реализацию, копирующую поведение (и код) скрипта для Opera более точно. После чего все последующие замечания отпадают.
кнопка без меню:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETranslateButton%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21window.%20cbTranslateButton2%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09window.%20cbTranslateButton2X%20%3D%20event.%20clientX%3B%0A%09%09%09window.%20cbTranslateButton2Y%20%3D%20event.%20clientY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%3B%0A%09window.%20cbTranslateButton2%20%3D%20true%3B%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*%09original%20script%20is%20operajs%20Google-Translate%20v%201.6.12%0A%09opera%20ujs%20is%20http%3A//lexi.ucoz.ru/google-translate.js%0A%09original%20author%3A%20Lex1%0A%09modified%20by%20Anton%0A*/%0A%0Aconst%20UJS_TOOLBAR_ID%20%3D%20%22ujs_toolbar%22%3B%0Aconst%20UJS_GOOGLE_TRANSLATE_FRAME_ID%20%3D%20%22ujs_googletranslateframe%22%3B%0A%0Afunction%20ujs_createWindow%20%28txt%29%0A%7B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09var%20win%20%3D%20doc.%20defaultView%3B%0A%09var%20h%2C%20w%3B%0A%20%20%20%20var%20txtLen%20%3D%20txt.%20length%3B%0A%20%20%20%20var%20tbId%20%3D%20UJS_TOOLBAR_ID%3B%0A%20%20%20%20if%20%28arguments.%20length%20%3E%202%29%0A%20%20%20%20%20%20%20%20tbId%20+%3D%20arguments%20%5B2%5D%3B%0A%09var%20toolbar%20%3D%20doc.%20getElementById%20%28tbId%29%3B%0A%20%20%20%20if%20%28toolbar%29%0A%20%20%20%20%20%20%20%20toolbar.%20parentNode.%20removeChild%20%28toolbar%29%3B%0A%20%20%20%20toolbar%20%3D%20doc.%20createElement%20%28%27div%27%29%3B%0A%20%20%20%20toolbar.%20id%20%3D%20tbId%3B%0A%09if%20%28arguments.%20length%20%3D%3D%205%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20w%20%3D%20arguments%20%5B3%5D%3B%0A%20%20%20%20%20%20%20%20h%20%3D%20arguments%20%5B4%5D%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20h%20%3D%2015%3B%0A%20%20%20%20%20%20%20%20w%20%3D%2020%3B%0A%20%20%20%20%20%20%20%20if%20%28txtLen%20%3E%202000%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2050%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2066%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20%28txtLen%20%3E%20250%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2025%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2033%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20h%20%3D%20parseInt%20%28h%20*%20win.%20innerHeight%20/%20100%29%3B%0A%20%20%20%20%20%20%20%20w%20%3D%20parseInt%20%28w%20*%20win.%20innerWidth%20/%20100%29%0A%20%20%20%20%7D%3B%0A%09var%20title%20%3D%20%28arguments.%20length%20%3E%201%29%20%3Farguments%20%5B1%5D%3A%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%3B%0A%09toolbar.%20innerHTML%20%3D%20%27%3Cimg%20src%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAStJREFUOE+1k9tqhDAQhtOHqO37P4E3IlQFQQSvBBVEl1TBVVi1B+1C8XAx3QmNqIVqhBV+DEPmy8z8ycPX9Ruq6kLqqiRHvkfpiUjSMyGUJtB1HfR9D8MwCAlz6voNkEGCIGDJeZ5DURTCatoWNE0D4nk+jOMoDMBD8fDPpoGXu4OyLAPUutV1/N+KcPPNPaY4jidYktwG+hunlLL4ZmsI4EloxhxiGAY4jgNpmm6D8DQEcBj/I8SyrKnSzYr4bDzPm2CKoiwgu1rDTfN2eEWu6y4M2KxoPRNVVRcz4xXvdm0+k/nMwjDc5xraa9v2n5kgwDRNMdfQXtT6Us7jy9Z8n738Iw82O5/hUpag6zqQ0+kVmqZld0NUURSxl48M8v5xZQtZlg8Jc5HxA5fIE73hTda3AAAAAElFTkSuQmCC%22%20title%3D%22Close%22%20width%3D%2218%22%20height%3D%2218%22%3E%26nbsp%3B%27%20+%20title%20+%20%27%3Cdiv%3E%3C/div%3E%27%3B%0A%09toolbar.%20setAttribute%28%27style%27%2C%20%27position%3Afixed%3Bbackground%3Awhite%3Bdisplay%3Ablock%3Bvisibility%3Ahidden%3Bleft%3A0%3Btop%3A0%3Bheight%3Aauto%3Bwidth%3A%27%20+%20w%20+%20%27px%3Bfont%3A16px%20Times%20New%20Roman%3Bborder%3A1px%20solid%20gray%3Bpadding%3A3px%3Bz-index%3A9997%3Boverflow%3Avisible%3Bcursor%3Amove%3B%27%29%3B%0A%09toolbar.%20addEventListener%0A%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%27mousedown%27%2C%0A%20%20%20%20%20%20%20%20function%20%28e%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28e.%20target%20%3D%3D%20toolbar%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.%20preventDefault%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20toolbar.%20style.%20zIndex%20%3D%209998%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20grabX%20%3D%20e.%20clientX%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20grabY%20%3D%20e.%20clientY%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20origX%20%3D%20parseInt%20%28toolbar.%20style.%20left%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20origY%20%3D%20parseInt%20%28toolbar.%20style.%20top%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20dnd%20%3D%20function%20%28e%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%09%09%09%09%20%20%20%20toolbar.%20style.%20left%20%3D%20origX%20+%20e.%20clientX%20-%20grabX%20+%20%27px%27%3B%0A%09%09%09%09%20%20%20%20toolbar.%20style.%20top%20%3D%20origY%20+%20e.%20clientY%20-%20grabY%20+%20%27px%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20addEventListener%20%28%27mousemove%27%2C%20dnd%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20addEventListener%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27mouseup%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20%28e%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20removeEventListener%20%28%27mousemove%27%2C%20dnd%2C%20false%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%20toolbar.%20style.%20zIndex%20%3D%209997%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20false%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20false%0A%20%20%20%20%29%3B%0A%09var%20clse%20%3D%20toolbar.%20firstChild%3B%0A%20%20%20%20clse.%20setAttribute%20%28%27style%27%2C%20%27float%3Aright%3Bbackground%3Awhite%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3Anone%3Bcursor%3Apointer%3B%27%29%3B%0A%09clse.%20addEventListener%0A%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%27click%27%2C%20function%20%28%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20toolbar.%20parentNode.%20removeChild%20%28toolbar%29%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20false%0A%20%20%20%20%29%3B%0A%09var%20textbar%20%3D%20toolbar.%20lastChild%3B%0A%20%20%20%20textbar.%20innerHTML%20%3D%20txt%3B%0A%09textbar.%20setAttribute%20%28%27style%27%2C%20%27display%3Ablock%3Bborder%3A1px%20solid%20%23aaaaaa%3Bmargin%3A2px%200%200%200%3Bpadding%3A4px%3Bbackground-color%3A%23fafcfe%3Bfont%3A14px%20Times%20New%20Roman%3Bheight%3A%27%20+%20h%20+%20%27px%3Bwidth%3Aauto%3Boverflow%3Aauto%3Bcursor%3Atext%3B%27%29%3B%0A%09doc.%20documentElement.%20appendChild%20%28toolbar%29%3B%0A%09var%20halfWidth%20%3D%20parseInt%20%28toolbar.%20offsetWidth%20/%202%29%3B%0A%09var%20strict%20%3D%20doc.%20compatMode%20%3D%3D%20%27CSS1Compat%27%3B%0A%09var%20mX%20%3D%20%28strict%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientWidth%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientWidth%29%20-%20toolbar.%20offsetWidth%3B%0A%09var%20mY%20%3D%20%28strict%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientHeight%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientHeight%29%20-%20toolbar.%20offsetHeight%3B%0A%20%20%20%20var%20lastClickX%20%3D%20window.%20cbTranslateButton2X%3B%0A%20%20%20%20var%20lastClickY%20%3D%20window.%20cbTranslateButton2Y%3B%0A%09toolbar.%20style.%20left%20%3D%20%28%28lastClickX%20%3C%20mX%20+%20halfWidth%29%3F%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%20%20%20%20%20%20%20%28lastClickX%20%3E%20halfWidth%3F%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%20%20%20%20%20%20%20%20%20%20%20%28lastClickX%20-%20halfWidth%29%3A%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%20%20%20%20%20%20%20%20%20%20%200%29%3A%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%20%20%20%20%20%20%20%20%20%20%20mX%29%20+%20%22px%22%3B%0A%09toolbar.%20style.%20top%20%3D%20%28%28lastClickY%20%3C%20mY%29%3F%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%20%20%20lastClickY%3A%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%20%20%20mY%29%20+%20%22px%22%3B%0A%09toolbar.%20style.%20visibility%20%3D%20%27visible%27%3B%0A%20%20%20%20return%20textbar%3B%0A%7D%0A%0Afunction%20frameOnLoad%20%28event%29%0A%7B%0A%09var%20fr%20%3D%20event.%20currentTarget%3B%0A%09var%20tbId%20%3D%20fr.%20id.%20substring%20%28UJS_GOOGLE_TRANSLATE_FRAME_ID.%20length%29%3B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09var%20toolbar%20%3D%20doc.%20getElementById%20%28UJS_TOOLBAR_ID%20+%20tbId%29%3B%0A%09var%20frdoc%20%3D%20fr.%20contentDocument%3B%0A%09var%20a%20%3D%20frdoc.%20getElementById%20%28%27autotrans%27%29%3B%0A%09var%20title%20%3D%20%28a%20%26%26%20%21/%23808080/.%20test%20%28a.%20innerHTML%29%29%3F%0A%09%09%09%09%09%27%26nbsp%3B-%26nbsp%3B%27%20+%20a.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%0A%09%09%09%09%09%27%27%3B%0A%09var%20result%20%3D%20frdoc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%09var%20ancor%20%3D%20toolbar.%20getElementsByTagName%20%28%22a%22%29%20%5B0%5D%3B%0A%09ancor.%20innerHTML%20+%3D%20title%3B%0A%09ancor.%20nextSibling.%20innerHTML%20%3D%20result%3B%0A%09setTimeout%0A%09%28%0A%09%09function%20%28%29%0A%09%09%7B%0A%09%09%09fr.%20parentNode.%20removeChild%20%28fr%29%3B%0A%09%09%7D%2C%0A%09%090%0A%09%29%3B%0A%7D%0A%0Afunction%20google_translate%20%28language%29%0A%7B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09var%20win%20%3D%20doc.%20defaultView%3B%0A%09var%20t%20%3D%20document.%20commandDispatcher.%20focusedWindow.%20getSelection%20%28%29.%20toString%20%28%29%3B%0A%09var%20lng%20%3D%20%28win.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%20%20%20%20if%20%28t%20%26%26%20location.%20hostname%20%21%3D%20%27translate.google.com%27%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20ujs_createWindow%0A%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%28lng%20%3D%3D%20%27ru%27%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu041F%5Cu0435%5Cu0440%5Cu0435%5Cu0432%5Cu043E%5Cu0434%5Cu0438%5Cu043C%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27Translating%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%29%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu2026%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20btoa%20%28escape%20%28t%29%29%0A%20%20%20%20%20%20%20%20%29%3B%0A%09%09var%20gtfId%20%3D%20UJS_GOOGLE_TRANSLATE_FRAME_ID%3B%0A%09%09var%20fr%20%3D%20doc.%20getElementById%20%28gtfId%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21fr%29%0A%20%20%20%20%20%20%20%20%20%20%20%20fr%20%3D%20doc.%20createElement%20%28%27iframe%27%29%3B%0A%09%09fr.%20setAttribute%20%28%27id%27%2C%20gtfId%20+%20btoa%20%28escape%20%28t%29%29%29%3B%0A%20%20%20%20%20%20%20%20fr.%20setAttribute%20%28%27frameborder%27%2C%20%270%27%29%3B%0A%09%09fr.%20setAttribute%20%28%27style%27%2C%20%27width%3A0px%3Bheight%3A0px%3Bvisibility%3Ahidden%3Bposition%3Aabsolute%3Bleft%3A-999em%3B%27%29%3B%0A%09%09fr.%20setAttribute%0A%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%27src%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate_t%3Ftext%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%20%28t%29%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%26ujs%3Dgtt%27%0A%20%20%20%20%20%20%20%20%29%3B%0A%09%09fr.%20addEventListener%0A%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%27load%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20frameOnLoad%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20false%0A%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20doc.%20documentElement.%20appendChild%20%28fr%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%7B%0A%20%20%20%20%09getBrowser%20%28%29.%20addTab%0A%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate%3Fu%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20escape%20%28doc.%20location.%20href%29%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%28doc.%20charset%3F%20%27%26ie%3D%27%20+%20doc.%20charset%3A%20%27%27%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20null%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20null%0A%20%20%20%20%20%20%20%20%29%3B%0A%09%7D%0A%7D%0A%0Agoogle_translate%20%28%22auto%7Cru%22%29%3B%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%3C/custombutton%3E

кнопка с меню:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETranslateButton%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21window.%20cbTranslateButton2%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09window.%20cbTranslateButton2X%20%3D%20event.%20clientX%3B%0A%09%09%09window.%20cbTranslateButton2Y%20%3D%20event.%20clientY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%3B%0A%09window.%20cbTranslateButton2%20%3D%20true%3B%0A%7D%0Avar%20menu%20%3D%20%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%20%20%20%20%0Aoncommand%3D%22this.parentNode.cbButtonDoMenuCommand%28event%29%22%3E%0A%09%3Cmenuitem%20value%3D%22Selection%22%20label%3D%22%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%22/%3E%0A%09%3Cmenuitem%20value%3D%22Page%22%20label%3D%22%u0421%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22/%3E%0A%3C/menupopup%3E%3B%0Amenu%20%3D%20new%20DOMParser%20%28%29.%20parseFromString%20%28menu.%20toXMLString%20%28%29%2C%20%22application/xml%22%29.%20documentElement%3B%0Amenu.%20setAttribute%20%28%22id%22%2C%20this.%20id%20+%20%22-menu%22%29%3B%0Athis.%20appendChild%20%28menu%29%3B%0Athis.%20setAttribute%20%28%22popup%22%2C%20this.%20id%20+%20%22-menu%22%29%3B%0Athis.%20cbButtonDoMenuCommand%20%3D%20function%20%28event%29%0A%7B%0A%09var%20itemNum%20%3D%20event.%20target.%20getAttribute%20%28%22value%22%29%3B%0A%09switch%20%28itemNum%29%0A%09%7B%0A%09%09case%20%22Selection%22%3A%0A%09%09%09google_translate%20%28%22auto%7Cru%22%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22Page%22%3A%0A%09%09%09this.%20cbTranslatePage%20%28%22auto%7Cru%22%29%3B%0A%09%09%09break%3B%0A%09%7D%0A%7D%3B%0A%0Athis.%20cbTranslatePage%20%3D%20function%20%28language%29%0A%7B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09var%20win%20%3D%20doc.%20defaultView%3B%0A%09var%20t%20%3D%20document.%20commandDispatcher.%20focusedWindow.%20getSelection%20%28%29.%20toString%20%28%29%3B%0A%09var%20lng%20%3D%20%28win.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09getBrowser%20%28%29.%20addTab%0A%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate%3Fu%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20escape%20%28doc.%20location.%20href%29%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%28doc.%20charset%3F%20%27%26ie%3D%27%20+%20doc.%20charset%3A%20%27%27%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20null%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20null%0A%20%20%20%20%20%20%20%20%29%3B%0A%7D%3B%0A%0Aconst%20UJS_TOOLBAR_ID%20%3D%20%22ujs_toolbar%22%3B%0Aconst%20UJS_GOOGLE_TRANSLATE_FRAME_ID%20%3D%20%22ujs_googletranslateframe%22%3B%0A%0Afunction%20ujs_createWindow%20%28txt%29%0A%7B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09var%20win%20%3D%20doc.%20defaultView%3B%0A%09var%20h%2C%20w%3B%0A%20%20%20%20var%20txtLen%20%3D%20txt.%20length%3B%0A%20%20%20%20var%20tbId%20%3D%20UJS_TOOLBAR_ID%3B%0A%20%20%20%20if%20%28arguments.%20length%20%3E%202%29%0A%20%20%20%20%20%20%20%20tbId%20+%3D%20arguments%20%5B2%5D%3B%0A%09var%20toolbar%20%3D%20doc.%20getElementById%20%28tbId%29%3B%0A%20%20%20%20if%20%28toolbar%29%0A%20%20%20%20%20%20%20%20toolbar.%20parentNode.%20removeChild%20%28toolbar%29%3B%0A%20%20%20%20toolbar%20%3D%20doc.%20createElement%20%28%27div%27%29%3B%0A%20%20%20%20toolbar.%20id%20%3D%20tbId%3B%0A%09if%20%28arguments.%20length%20%3D%3D%205%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20w%20%3D%20arguments%20%5B3%5D%3B%0A%20%20%20%20%20%20%20%20h%20%3D%20arguments%20%5B4%5D%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20h%20%3D%2015%3B%0A%20%20%20%20%20%20%20%20w%20%3D%2020%3B%0A%20%20%20%20%20%20%20%20if%20%28txtLen%20%3E%202000%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2050%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2066%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20%28txtLen%20%3E%20250%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2025%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2033%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20h%20%3D%20parseInt%20%28h%20*%20win.%20innerHeight%20/%20100%29%3B%0A%20%20%20%20%20%20%20%20w%20%3D%20parseInt%20%28w%20*%20win.%20innerWidth%20/%20100%29%0A%20%20%20%20%7D%3B%0A%09var%20title%20%3D%20%28arguments.%20length%20%3E%201%29%20%3Farguments%20%5B1%5D%3A%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%3B%0A%09toolbar.%20innerHTML%20%3D%20%27%3Cimg%20src%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAStJREFUOE+1k9tqhDAQhtOHqO37P4E3IlQFQQSvBBVEl1TBVVi1B+1C8XAx3QmNqIVqhBV+DEPmy8z8ycPX9Ruq6kLqqiRHvkfpiUjSMyGUJtB1HfR9D8MwCAlz6voNkEGCIGDJeZ5DURTCatoWNE0D4nk+jOMoDMBD8fDPpoGXu4OyLAPUutV1/N+KcPPNPaY4jidYktwG+hunlLL4ZmsI4EloxhxiGAY4jgNpmm6D8DQEcBj/I8SyrKnSzYr4bDzPm2CKoiwgu1rDTfN2eEWu6y4M2KxoPRNVVRcz4xXvdm0+k/nMwjDc5xraa9v2n5kgwDRNMdfQXtT6Us7jy9Z8n738Iw82O5/hUpag6zqQ0+kVmqZld0NUURSxl48M8v5xZQtZlg8Jc5HxA5fIE73hTda3AAAAAElFTkSuQmCC%22%20title%3D%22Close%22%20width%3D%2218%22%20height%3D%2218%22%3E%26nbsp%3B%27%20+%20title%20+%20%27%3Cdiv%3E%3C/div%3E%27%3B%0A%09toolbar.%20setAttribute%28%27style%27%2C%20%27position%3Afixed%3Bbackground%3Awhite%3Bdisplay%3Ablock%3Bvisibility%3Ahidden%3Bleft%3A0%3Btop%3A0%3Bheight%3Aauto%3Bwidth%3A%27%20+%20w%20+%20%27px%3Bfont%3A16px%20Times%20New%20Roman%3Bborder%3A1px%20solid%20gray%3Bpadding%3A3px%3Bz-index%3A9997%3Boverflow%3Avisible%3Bcursor%3Amove%3B%27%29%3B%0A%09toolbar.%20addEventListener%0A%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%27mousedown%27%2C%0A%20%20%20%20%20%20%20%20function%20%28e%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28e.%20target%20%3D%3D%20toolbar%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.%20preventDefault%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20toolbar.%20style.%20zIndex%20%3D%209998%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20grabX%20%3D%20e.%20clientX%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20grabY%20%3D%20e.%20clientY%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20origX%20%3D%20parseInt%20%28toolbar.%20style.%20left%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20origY%20%3D%20parseInt%20%28toolbar.%20style.%20top%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20dnd%20%3D%20function%20%28e%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%09%09%09%09%20%20%20%20toolbar.%20style.%20left%20%3D%20origX%20+%20e.%20clientX%20-%20grabX%20+%20%27px%27%3B%0A%09%09%09%09%20%20%20%20toolbar.%20style.%20top%20%3D%20origY%20+%20e.%20clientY%20-%20grabY%20+%20%27px%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20addEventListener%20%28%27mousemove%27%2C%20dnd%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20addEventListener%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27mouseup%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20%28e%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20removeEventListener%20%28%27mousemove%27%2C%20dnd%2C%20false%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%20toolbar.%20style.%20zIndex%20%3D%209997%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20false%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20false%0A%20%20%20%20%29%3B%0A%09var%20clse%20%3D%20toolbar.%20firstChild%3B%0A%20%20%20%20clse.%20setAttribute%20%28%27style%27%2C%20%27float%3Aright%3Bbackground%3Awhite%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3Anone%3Bcursor%3Apointer%3B%27%29%3B%0A%09clse.%20addEventListener%0A%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%27click%27%2C%20function%20%28%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20toolbar.%20parentNode.%20removeChild%20%28toolbar%29%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20false%0A%20%20%20%20%29%3B%0A%09var%20textbar%20%3D%20toolbar.%20lastChild%3B%0A%20%20%20%20textbar.%20innerHTML%20%3D%20txt%3B%0A%09textbar.%20setAttribute%20%28%27style%27%2C%20%27display%3Ablock%3Bborder%3A1px%20solid%20%23aaaaaa%3Bmargin%3A2px%200%200%200%3Bpadding%3A4px%3Bbackground-color%3A%23fafcfe%3Bfont%3A14px%20Times%20New%20Roman%3Bheight%3A%27%20+%20h%20+%20%27px%3Bwidth%3Aauto%3Boverflow%3Aauto%3Bcursor%3Atext%3B%27%29%3B%0A%09doc.%20documentElement.%20appendChild%20%28toolbar%29%3B%0A%09var%20halfWidth%20%3D%20parseInt%20%28toolbar.%20offsetWidth%20/%202%29%3B%0A%09var%20strict%20%3D%20doc.%20compatMode%20%3D%3D%20%27CSS1Compat%27%3B%0A%09var%20mX%20%3D%20%28strict%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientWidth%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientWidth%29%20-%20toolbar.%20offsetWidth%3B%0A%09var%20mY%20%3D%20%28strict%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientHeight%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientHeight%29%20-%20toolbar.%20offsetHeight%3B%0A%20%20%20%20var%20lastClickX%20%3D%20window.%20cbTranslateButton2X%3B%0A%20%20%20%20var%20lastClickY%20%3D%20window.%20cbTranslateButton2Y%3B%0A%09toolbar.%20style.%20left%20%3D%20%28%28lastClickX%20%3C%20mX%20+%20halfWidth%29%3F%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%20%20%20%20%20%20%20%28lastClickX%20%3E%20halfWidth%3F%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%20%20%20%20%20%20%20%20%20%20%20%28lastClickX%20-%20halfWidth%29%3A%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%20%20%20%20%20%20%20%20%20%20%200%29%3A%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%20%20%20%20%20%20%20%20%20%20%20mX%29%20+%20%22px%22%3B%0A%09toolbar.%20style.%20top%20%3D%20%28%28lastClickY%20%3C%20mY%29%3F%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%20%20%20lastClickY%3A%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%20%20%20mY%29%20+%20%22px%22%3B%0A%09toolbar.%20style.%20visibility%20%3D%20%27visible%27%3B%0A%20%20%20%20return%20textbar%3B%0A%7D%0A%0Afunction%20frameOnLoad%20%28event%29%0A%7B%0A%09var%20fr%20%3D%20event.%20currentTarget%3B%0A%09var%20tbId%20%3D%20fr.%20id.%20substring%20%28UJS_GOOGLE_TRANSLATE_FRAME_ID.%20length%29%3B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09var%20toolbar%20%3D%20doc.%20getElementById%20%28UJS_TOOLBAR_ID%20+%20tbId%29%3B%0A%09var%20frdoc%20%3D%20fr.%20contentDocument%3B%0A%09var%20a%20%3D%20frdoc.%20getElementById%20%28%27autotrans%27%29%3B%0A%09var%20title%20%3D%20%28a%20%26%26%20%21/%23808080/.%20test%20%28a.%20innerHTML%29%29%3F%0A%09%09%09%09%09%27%26nbsp%3B-%26nbsp%3B%27%20+%20a.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%0A%09%09%09%09%09%27%27%3B%0A%09var%20result%20%3D%20frdoc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%09var%20ancor%20%3D%20toolbar.%20getElementsByTagName%20%28%22a%22%29%20%5B0%5D%3B%0A%09ancor.%20innerHTML%20+%3D%20title%3B%0A%09ancor.%20nextSibling.%20innerHTML%20%3D%20result%3B%0A%09setTimeout%0A%09%28%0A%09%09function%20%28%29%0A%09%09%7B%0A%09%09%09fr.%20parentNode.%20removeChild%20%28fr%29%3B%0A%09%09%7D%2C%0A%09%090%0A%09%29%3B%0A%7D%0A%0Afunction%20google_translate%20%28language%29%0A%7B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09var%20win%20%3D%20doc.%20defaultView%3B%0A%09var%20t%20%3D%20document.%20commandDispatcher.%20focusedWindow.%20getSelection%20%28%29.%20toString%20%28%29%3B%0A%09var%20lng%20%3D%20%28win.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%20%20%20%20if%20%28t%20%26%26%20location.%20hostname%20%21%3D%20%27translate.google.com%27%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20ujs_createWindow%0A%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%28lng%20%3D%3D%20%27ru%27%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu041F%5Cu0435%5Cu0440%5Cu0435%5Cu0432%5Cu043E%5Cu0434%5Cu0438%5Cu043C%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27Translating%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%29%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu2026%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20btoa%20%28escape%20%28t%29%29%0A%20%20%20%20%20%20%20%20%29%3B%0A%09%09var%20gtfId%20%3D%20UJS_GOOGLE_TRANSLATE_FRAME_ID%3B%0A%09%09var%20fr%20%3D%20doc.%20getElementById%20%28gtfId%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21fr%29%0A%20%20%20%20%20%20%20%20%20%20%20%20fr%20%3D%20doc.%20createElement%20%28%27iframe%27%29%3B%0A%09%09fr.%20setAttribute%20%28%27id%27%2C%20gtfId%20+%20btoa%20%28escape%20%28t%29%29%29%3B%0A%20%20%20%20%20%20%20%20fr.%20setAttribute%20%28%27frameborder%27%2C%20%270%27%29%3B%0A%09%09fr.%20setAttribute%20%28%27style%27%2C%20%27width%3A0px%3Bheight%3A0px%3Bvisibility%3Ahidden%3Bposition%3Aabsolute%3Bleft%3A-999em%3B%27%29%3B%0A%09%09fr.%20setAttribute%0A%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%27src%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate_t%3Ftext%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%20%28t%29%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%26ujs%3Dgtt%27%0A%20%20%20%20%20%20%20%20%29%3B%0A%09%09fr.%20addEventListener%0A%20%20%20%20%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%27load%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20frameOnLoad%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20false%0A%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20doc.%20documentElement.%20appendChild%20%28fr%29%3B%0A%20%20%20%20%7D%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*%09original%20script%20is%20operajs%20Google-Translate%20v%201.6.12%0A%09opera%20ujs%20is%20http%3A//lexi.ucoz.ru/google-translate.js%0A%09original%20author%3A%20Lex1%0A%09modified%20by%20Anton%0A*/%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%3C/custombutton%3E

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№67013-07-2008 16:08:09

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Anton

Надо заменить... на...

Спасибо, для GetFileSize, всё работает отлично, берёт текстовые ссылки от куда угодно и правильно.

То же самое и для google-трансляторов

Покрутил я извилинами, но безрезультатно, помогите если не трудно, пользую такой скрипт (как из поста № 567):

Выделить код

Код:

var t = content.getSelection().toString();
var c = content.document.characterSet;
var loc = content.location.href;
getBrowser().loadOneTab(
    t
        ? "http://translate.google.ru/translate_t?text=" + t + "&hl=ru&langpair=auto|ru&tbb=1&ie=" + c
        : /^https?:\/\//i.test(loc)
            ? "http://translate.google.ru/translate?u=" + escape(loc) + "&hl=ru&langpair=auto|ru&tbb=1&ie=" + c
            : "http://translate.google.ru/translate_t?hl=ru",
    null, null, null, false /* load in background */, false
);

Ещё к Вам, как к разработчику, такой вопрос: если в сторонних установленных расширениях не указан собственный адрес "Страницы поддержки", они все берут его от Custom Buttons, примеры:
http://i005.radikal.ru/0807/6e/f6e9b1bcb0d7.png
http://i069.radikal.ru/0807/e7/af57dcddc968.png
абсолютно ни чему не мешает, просто любопытство.

Отсутствует

 

№67113-07-2008 17:02:46

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Покрутил я извилинами, но безрезультатно, помогите если не трудно, пользую такой скрипт (как из поста № 567):

Выделить код

Код:

var t = document. commandDispatcher. focusedWindow. getSelection (). toString ();
if (!t)
{
    var el = document. commandDispatcher. focusedElement;
    t = el. value. substring (el. selectionStart, el. selectionEnd);
}

Далее без изменений:

Выделить код

Код:

var c = content.document.characterSet;
var loc = content.location.href;
getBrowser().loadOneTab(
    t
        ? "http://translate.google.ru/translate_t?text=" + t + "&hl=ru&langpair=auto|ru&tbb=1&ie=" + c
        : /^https?:\/\//i.test(loc)
            ? "http://translate.google.ru/translate?u=" + escape(loc) + "&hl=ru&langpair=auto|ru&tbb=1&ie=" + c
            : "http://translate.google.ru/translate_t?hl=ru",
    null, null, null, false /* load in background */, false
);

если в сторонних установленных расширениях не указан собственный адрес "Страницы поддержки", они все берут его от Custom Buttons, примеры:

Это нехорошо, будет исправлено. Спасибо за информацию об ошибке.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№67213-07-2008 17:46:34

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Anton
Всё, что Вы написали - отлично работает, спасибо большое!
P.S. Чуть поторопился. В таком варианте, выделенный текст берёт отовсюду и переводит, а страницу перестал переводить. В Консоли ошибок, ссылается на эту строку:

Выделить код

Код:

t = el. value. substring (el. selectionStart, el. selectionEnd);

Отредактировано Deim0s (13-07-2008 18:07:03)

Отсутствует

 

№67314-07-2008 20:23:00

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Исправил ошибку для предыдущего варианта кнопок перевода, связанную с переключением вкладок в момент перевода:
без меню:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETranslateButton%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21window.%20cbTranslateButton2%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09getBrowser%20%28%29.%20contentDocument.%20defaultView.%20cbTranslateButton2X%20%3D%20event.%20clientX%3B%0A%09%09%09getBrowser%20%28%29.%20contentDocument.%20defaultView.%20cbTranslateButton2Y%20%3D%20event.%20clientY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%3B%0A%09window.%20cbTranslateButton2%20%3D%20true%3B%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*%09original%20script%20is%20operajs%20Google-Translate%20v%201.6.12%0A%09opera%20ujs%20is%20http%3A//lexi.ucoz.ru/google-translate.js%0A%09original%20author%3A%20Lex1%0A%09modified%20by%20Anton%0A*/%0A%0Aconst%20UJS_TOOLBAR_ID%20%3D%20%22ujs_toolbar%22%3B%0Aconst%20UJS_GOOGLE_TRANSLATE_FRAME_ID%20%3D%20%22ujs_googletranslateframe%22%3B%0A%0Afunction%20cbTranslatorButton%20%28browser%29%0A%7B%0A%09this.%20doc%20%3D%20browser.%20contentDocument%3B%0A%09this.%20win%20%3D%20browser.%20contentDocument.%20defaultView%3B%0A%7D%0AcbTranslatorButton.%20prototype%20%3D%0A%7B%0A%09doc%3A%20null%2C%0A%09win%3A%20null%2C%0A%09toolbar%3A%20null%2C%0A%09clse%3A%20null%2C%0A%09frame%3A%20null%2C%0A%09%0A%09grabX%3A%200%2C%0A%09origX%3A%200%2C%0A%09grabY%3A%200%2C%0A%09origY%3A%200%2C%0A%09%0A%09handleEvent%3A%20function%20%28event%29%0A%09%7B%0A%09%09switch%20%28event.%20type%29%0A%09%09%7B%0A%09%09%09case%20%22mousedown%22%3A%0A%09%09%09%09this.%20tbOnMouseDown%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22mousemove%22%3A%0A%09%09%09%09this.%20tbOnMouseMove%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22mouseup%22%3A%0A%09%09%09%09this.%20tbOnMouseUp%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22click%22%3A%0A%09%09%09%09this.%20clseOnClick%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22load%22%3A%0A%09%09%09%09this.%20frameOnLoad%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09default%3A%3B%0A%09%09%7D%0A%09%7D%2C%0A%09%0A%09tbOnMouseMove%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20toolbar.%20style.%20left%20%3D%20this.%20origX%20+%20event.%20clientX%20-%20this.%20grabX%20+%20%27px%27%3B%0A%09%09this.%20toolbar.%20style.%20top%20%3D%20this.%20origY%20+%20event.%20clientY%20-%20this.%20grabY%20+%20%27px%27%3B%0A%09%7D%2C%0A%09%0A%09tbOnMouseUp%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20doc.%20removeEventListener%20%28%27mousemove%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20this.%20toolbar.%20style.%20zIndex%20%3D%209997%3B%0A%09%7D%2C%0A%09%0A%09tbOnMouseDown%3A%20function%20%28event%29%0A%09%7B%0A%09%09if%20%28event.%20target%20%3D%3D%20this.%20toolbar%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20event.%20preventDefault%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20toolbar.%20style.%20zIndex%20%3D%209998%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20grabX%20%3D%20event.%20clientX%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20grabY%20%3D%20event.%20clientY%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20origX%20%3D%20parseInt%20%28this.%20toolbar.%20style.%20left%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20origY%20%3D%20parseInt%20%28this.%20toolbar.%20style.%20top%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20doc.%20addEventListener%20%28%27mousemove%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20doc.%20addEventListener%20%28%27mouseup%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%09%7D%2C%0A%09%0A%09removeEventListener%3A%20function%20%28element%2C%20eventType%2C%20captureFlag%29%0A%09%7B%0A%09%09try%0A%09%09%7B%0A%09%09%09element.%20removeEventListener%20%28eventType%2C%20this%2C%20captureFlag%29%3B%0A%09%09%7D%0A%09%09catch%20%28err%29%20%7B%7D%0A%09%7D%2C%0A%09%0A%09removeElement%3A%20function%20%28element%29%0A%09%7B%0A%09%09try%0A%09%09%7B%0A%09%09%09element.%20parentNode.%20removeChild%20%28element%29%3B%0A%09%09%7D%0A%09%09catch%20%28err%29%20%7B%7D%0A%09%7D%2C%0A%09%0A%09clseOnClick%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20clse.%20removeEventListener%20%28%27click%27%2C%20this%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20toolbar%2C%20%27mousedown%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20doc%2C%20%27mousemove%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20doc%2C%20%27mouseup%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20frame%2C%20%27load%27%2C%20false%29%3B%0A%09%09this.%20removeElement%20%28this.%20toolbar%29%3B%0A%09%09this.%20removeElement%20%28this.%20frame%29%3B%0A%09%09this.%20frame%20%3D%20null%3B%0A%09%09this.%20clse%20%3D%20null%3B%0A%09%09this.%20toolbar%20%3D%20null%3B%0A%09%09this.%20win%20%3D%20null%3B%0A%09%09this.%20doc%20%3D%20null%3B%0A%09%7D%2C%0A%09%0A%09ujs_createWindow%3A%20function%20%28txt%29%0A%09%7B%0A%09%09var%20doc%20%3D%20this.%20doc%3B%0A%09%09var%20win%20%3D%20this.%20win%3B%0A%09%09var%20h%2C%20w%3B%0A%09%20%20%20%20var%20txtLen%20%3D%20txt.%20length%3B%0A%09%20%20%20%20var%20tbId%20%3D%20UJS_TOOLBAR_ID%3B%0A%09%20%20%20%20if%20%28arguments.%20length%20%3E%202%29%0A%09%20%20%20%20%20%20%20%20tbId%20+%3D%20arguments%20%5B2%5D%3B%0A%09%09var%20toolbar%20%3D%20doc.%20getElementById%20%28tbId%29%3B%0A%09%20%20%20%20if%20%28toolbar%29%0A%09%20%20%20%20%20%20%20%20toolbar.%20parentNode.%20removeChild%20%28toolbar%29%3B%0A%09%20%20%20%20toolbar%20%3D%20doc.%20createElement%20%28%27div%27%29%3B%0A%09%20%20%20%20this.%20toolbar%20%3D%20toolbar%3B%0A%09%20%20%20%20toolbar.%20id%20%3D%20tbId%3B%0A%09%09if%20%28arguments.%20length%20%3D%3D%205%29%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20w%20%3D%20arguments%20%5B3%5D%3B%0A%09%20%20%20%20%20%20%20%20h%20%3D%20arguments%20%5B4%5D%0A%09%20%20%20%20%7D%0A%09%20%20%20%20else%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20h%20%3D%2015%3B%0A%09%20%20%20%20%20%20%20%20w%20%3D%2020%3B%0A%09%20%20%20%20%20%20%20%20if%20%28txtLen%20%3E%202000%29%0A%09%20%20%20%20%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2050%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2066%0A%09%20%20%20%20%20%20%20%20%7D%0A%09%20%20%20%20%20%20%20%20else%20if%20%28txtLen%20%3E%20250%29%0A%09%20%20%20%20%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2025%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2033%0A%09%20%20%20%20%20%20%20%20%7D%3B%0A%09%20%20%20%20%20%20%20%20h%20%3D%20parseInt%20%28h%20*%20win.%20innerHeight%20/%20100%29%3B%0A%09%20%20%20%20%20%20%20%20w%20%3D%20parseInt%20%28w%20*%20win.%20innerWidth%20/%20100%29%0A%09%20%20%20%20%7D%3B%0A%09%09var%20title%20%3D%20%28arguments.%20length%20%3E%201%29%20%3Farguments%20%5B1%5D%3A%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%3B%0A%09%09toolbar.%20innerHTML%20%3D%20%27%3Cimg%20src%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAStJREFUOE+1k9tqhDAQhtOHqO37P4E3IlQFQQSvBBVEl1TBVVi1B+1C8XAx3QmNqIVqhBV+DEPmy8z8ycPX9Ruq6kLqqiRHvkfpiUjSMyGUJtB1HfR9D8MwCAlz6voNkEGCIGDJeZ5DURTCatoWNE0D4nk+jOMoDMBD8fDPpoGXu4OyLAPUutV1/N+KcPPNPaY4jidYktwG+hunlLL4ZmsI4EloxhxiGAY4jgNpmm6D8DQEcBj/I8SyrKnSzYr4bDzPm2CKoiwgu1rDTfN2eEWu6y4M2KxoPRNVVRcz4xXvdm0+k/nMwjDc5xraa9v2n5kgwDRNMdfQXtT6Us7jy9Z8n738Iw82O5/hUpag6zqQ0+kVmqZld0NUURSxl48M8v5xZQtZlg8Jc5HxA5fIE73hTda3AAAAAElFTkSuQmCC%22%20title%3D%22Close%22%20width%3D%2218%22%20height%3D%2218%22%3E%26nbsp%3B%27%20+%20title%20+%20%27%3Cdiv%3E%3C/div%3E%27%3B%0A%09%09toolbar.%20setAttribute%28%27style%27%2C%20%27position%3Afixed%3Bbackground%3Awhite%3Bdisplay%3Ablock%3Bvisibility%3Ahidden%3Bleft%3A0%3Btop%3A0%3Bheight%3Aauto%3Bwidth%3A%27%20+%20w%20+%20%27px%3Bfont%3A16px%20Times%20New%20Roman%3Bborder%3A1px%20solid%20gray%3Bpadding%3A3px%3Bz-index%3A9997%3Boverflow%3Avisible%3Bcursor%3Amove%3B%27%29%3B%0A%09%09toolbar.%20addEventListener%20%28%27mousedown%27%2C%20this%2C%20false%29%3B%0A%09%09var%20clse%20%3D%20toolbar.%20firstChild%3B%0A%09%09this.%20clse%20%3D%20clse%3B%0A%09%20%20%20%20clse.%20setAttribute%20%28%27style%27%2C%20%27float%3Aright%3Bbackground%3Awhite%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3Anone%3Bcursor%3Apointer%3B%27%29%3B%0A%09%09clse.%20addEventListener%20%28%27click%27%2C%20this%2C%20false%29%3B%0A%09%09var%20textbar%20%3D%20toolbar.%20lastChild%3B%0A%09%20%20%20%20textbar.%20innerHTML%20%3D%20txt%3B%0A%09%09textbar.%20setAttribute%20%28%27style%27%2C%20%27display%3Ablock%3Bborder%3A1px%20solid%20%23aaaaaa%3Bmargin%3A2px%200%200%200%3Bpadding%3A4px%3Bbackground-color%3A%23fafcfe%3Bfont%3A14px%20Times%20New%20Roman%3Bheight%3A%27%20+%20h%20+%20%27px%3Bwidth%3Aauto%3Boverflow%3Aauto%3Bcursor%3Atext%3B%27%29%3B%0A%09%09doc.%20documentElement.%20appendChild%20%28toolbar%29%3B%0A%09%09var%20halfWidth%20%3D%20parseInt%20%28toolbar.%20offsetWidth%20/%202%29%3B%0A%09%09var%20strict%20%3D%20doc.%20compatMode%20%3D%3D%20%27CSS1Compat%27%3B%0A%09%09var%20mX%20%3D%20%28strict%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientWidth%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientWidth%29%20-%20toolbar.%20offsetWidth%3B%0A%09%09var%20mY%20%3D%20%28strict%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientHeight%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientHeight%29%20-%20toolbar.%20offsetHeight%3B%0A%09%20%20%20%20var%20lastClickX%20%3D%20win.%20cbTranslateButton2X%3B%0A%09%20%20%20%20var%20lastClickY%20%3D%20win.%20cbTranslateButton2Y%3B%0A%09%09toolbar.%20style.%20left%20%3D%20%28%28lastClickX%20%3C%20mX%20+%20halfWidth%29%3F%0A%09%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%20%20%20%20%20%20%20%28lastClickX%20%3E%20halfWidth%3F%0A%09%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%20%20%20%20%20%20%20%20%20%20%20%28lastClickX%20-%20halfWidth%29%3A%0A%09%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%20%20%20%20%20%20%20%20%20%20%200%29%3A%0A%09%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%20%20%20%20%20%20%20%20%20%20%20mX%29%20+%20%22px%22%3B%0A%09%09toolbar.%20style.%20top%20%3D%20%28%28lastClickY%20%3C%20mY%29%3F%0A%09%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%20%20%20lastClickY%3A%0A%09%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%20%20%20mY%29%20+%20%22px%22%3B%0A%09%09toolbar.%20style.%20visibility%20%3D%20%27visible%27%3B%0A%09%20%20%20%20return%20textbar%3B%0A%09%7D%2C%0A%09%0A%09frameOnLoad%3A%20function%20%28event%29%0A%09%7B%0A%09%09var%20fr%20%3D%20event.%20currentTarget%3B%0A%09%09fr.%20removeEventListener%20%28%27load%27%2C%20this%2C%20false%29%3B%0A%09%09var%20tbId%20%3D%20fr.%20id.%20substring%20%28UJS_GOOGLE_TRANSLATE_FRAME_ID.%20length%29%3B%0A%09%09var%20toolbar%20%3D%20this.%20doc.%20getElementById%20%28UJS_TOOLBAR_ID%20+%20tbId%29%3B%0A%09%09var%20frdoc%20%3D%20fr.%20contentDocument%3B%0A%09%09var%20a%20%3D%20frdoc.%20getElementById%20%28%27autotrans%27%29%3B%0A%09%09var%20title%20%3D%20%28a%20%26%26%20%21/%23808080/.%20test%20%28a.%20innerHTML%29%29%3F%0A%09%09%09%09%09%09%27%26nbsp%3B-%26nbsp%3B%27%20+%20a.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%0A%09%09%09%09%09%09%27%27%3B%0A%09%09var%20result%20%3D%20frdoc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%09%09var%20ancor%20%3D%20toolbar.%20getElementsByTagName%20%28%22a%22%29%20%5B0%5D%3B%0A%09%09ancor.%20innerHTML%20+%3D%20title%3B%0A%09%09ancor.%20nextSibling.%20innerHTML%20%3D%20result%3B%0A%09%09setTimeout%0A%09%09%28%0A%09%09%09function%20%28%29%0A%09%09%09%7B%0A%09%09%09%09fr.%20parentNode.%20removeChild%20%28fr%29%3B%0A%09%09%09%7D%2C%0A%09%09%090%0A%09%09%29%3B%0A%09%7D%2C%0A%09%0A%09google_translate%3A%20function%20%28language%29%0A%09%7B%0A%09%09var%20doc%20%3D%20this.%20doc%3B%0A%09%09var%20win%20%3D%20this.%20win%3B%0A%09%09var%20t%20%3D%20document.%20commandDispatcher.%20focusedWindow.%20getSelection%20%28%29.%20toString%20%28%29%3B%0A%09%09var%20lng%20%3D%20%28win.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09%20%20%20%20if%20%28t%20%26%26%20location.%20hostname%20%21%3D%20%27translate.google.com%27%29%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20this.%20ujs_createWindow%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%28lng%20%3D%3D%20%27ru%27%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu041F%5Cu0435%5Cu0440%5Cu0435%5Cu0432%5Cu043E%5Cu0434%5Cu0438%5Cu043C%27%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27Translating%27%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%29%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu2026%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20btoa%20%28escape%20%28t%29%29%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%09%09var%20gtfId%20%3D%20UJS_GOOGLE_TRANSLATE_FRAME_ID%3B%0A%09%09%09var%20fr%20%3D%20doc.%20getElementById%20%28gtfId%29%3B%0A%09%20%20%20%20%20%20%20%20if%20%28%21fr%29%0A%09%20%20%20%20%20%20%20%20%20%20%20%20fr%20%3D%20doc.%20createElement%20%28%27iframe%27%29%3B%0A%09%20%20%20%20%20%20%20%20this.%20frame%20%3D%20fr%3B%0A%09%09%09fr.%20setAttribute%20%28%27id%27%2C%20gtfId%20+%20btoa%20%28escape%20%28t%29%29%29%3B%0A%09%20%20%20%20%20%20%20%20fr.%20setAttribute%20%28%27frameborder%27%2C%20%270%27%29%3B%0A%09%09%09fr.%20setAttribute%20%28%27style%27%2C%20%27width%3A0px%3Bheight%3A0px%3Bvisibility%3Ahidden%3Bposition%3Aabsolute%3Bleft%3A-999em%3B%27%29%3B%0A%09%09%09fr.%20setAttribute%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27src%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate_t%3Ftext%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%20%28t%29%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%26ujs%3Dgtt%27%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%09%09fr.%20addEventListener%20%28%27load%27%2C%20this%2C%20false%29%3B%0A%09%20%20%20%20%20%20%20%20doc.%20documentElement.%20appendChild%20%28fr%29%3B%0A%09%20%20%20%20%7D%0A%09%20%20%20%20else%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%09getBrowser%20%28%29.%20addTab%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate%3Fu%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20escape%20%28doc.%20location.%20href%29%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%28doc.%20charset%3F%20%27%26ie%3D%27%20+%20doc.%20charset%3A%20%27%27%29%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20null%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20null%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0Avar%20ct%20%3D%20getBrowser%20%28%29.%20selectedTab%3B%0Aif%20%28%21ct.%20cbTranslateButton5%29%0A%09ct.%20cbTranslateButton5%20%3D%20%5B%5D%3B%0Avar%20translator%20%3D%20new%20cbTranslatorButton%20%28getBrowser%20%28%29%29%3B%0Act.%20cbTranslateButton5.%20push%20%28translator%29%3B%0Atranslator.%20google_translate%20%28%22auto%7Cru%22%29%3B%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%3C/custombutton%3E

с меню:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETranslateButton%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21window.%20cbTranslateButton2%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09getBrowser%20%28%29.%20contentDocument.%20defaultView.%20cbTranslateButton2X%20%3D%20event.%20clientX%3B%0A%09%09%09getBrowser%20%28%29.%20contentDocument.%20defaultView.%20cbTranslateButton2Y%20%3D%20event.%20clientY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%3B%0A%09window.%20cbTranslateButton2%20%3D%20true%3B%0A%7D%0Avar%20menu%20%3D%20%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%20%20%20%20%0Aoncommand%3D%22this.parentNode.cbButtonDoMenuCommand%28event%29%22%3E%0A%09%3Cmenuitem%20value%3D%22Selection%22%20label%3D%22%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%22/%3E%0A%09%3Cmenuitem%20value%3D%22Page%22%20label%3D%22%u0421%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22/%3E%0A%3C/menupopup%3E%3B%0Amenu%20%3D%20new%20DOMParser%20%28%29.%20parseFromString%20%28menu.%20toXMLString%20%28%29%2C%20%22application/xml%22%29.%20documentElement%3B%0Amenu.%20setAttribute%20%28%22id%22%2C%20this.%20id%20+%20%22-menu%22%29%3B%0Athis.%20appendChild%20%28menu%29%3B%0Athis.%20setAttribute%20%28%22popup%22%2C%20this.%20id%20+%20%22-menu%22%29%3B%0Athis.%20cbButtonDoMenuCommand%20%3D%20function%20%28event%29%0A%7B%0A%09var%20itemNum%20%3D%20event.%20target.%20getAttribute%20%28%22value%22%29%3B%0A%09switch%20%28itemNum%29%0A%09%7B%0A%09%09case%20%22Selection%22%3A%0A%09%09%09var%20ct%20%3D%20getBrowser%20%28%29.%20selectedTab%3B%0A%09%09%09if%20%28%21ct.%20cbTranslateButton5%29%0A%09%09%09%09ct.%20cbTranslateButton5%20%3D%20%5B%5D%3B%0A%09%09%09var%20translator%20%3D%20new%20cbTranslatorButton%20%28getBrowser%20%28%29%29%3B%0A%09%09%09ct.%20cbTranslateButton5.%20push%20%28translator%29%3B%0A%09%09%09translator.%20google_translate%20%28%22auto%7Cru%22%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22Page%22%3A%0A%09%09%09this.%20cbTranslatePage%20%28%22auto%7Cru%22%29%3B%0A%09%09%09break%3B%0A%09%7D%0A%7D%3B%0A%0Athis.%20cbTranslatePage%20%3D%20function%20%28language%29%0A%7B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09var%20win%20%3D%20doc.%20defaultView%3B%0A%09var%20t%20%3D%20document.%20commandDispatcher.%20focusedWindow.%20getSelection%20%28%29.%20toString%20%28%29%3B%0A%09var%20lng%20%3D%20%28win.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09getBrowser%20%28%29.%20addTab%0A%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate%3Fu%3D%27%20+%0A%20%20%20%20%20%20%20%20escape%20%28doc.%20location.%20href%29%20+%0A%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%20%20%20%20%20%20%20%20lng%20+%0A%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%20%20%20%20%20%20%20%20language%20+%0A%20%20%20%20%20%20%20%20%27%26tbb%3D1%27%20+%0A%20%20%20%20%20%20%20%20%28doc.%20charset%3F%20%27%26ie%3D%27%20+%20doc.%20charset%3A%20%27%27%29%2C%0A%20%20%20%20%20%20%20%20null%2C%0A%20%20%20%20%20%20%20%20null%0A%20%20%20%20%29%3B%0A%7D%3B%0A%0Aconst%20UJS_TOOLBAR_ID%20%3D%20%22ujs_toolbar%22%3B%0Aconst%20UJS_GOOGLE_TRANSLATE_FRAME_ID%20%3D%20%22ujs_googletranslateframe%22%3B%0A%0Afunction%20cbTranslatorButton%20%28browser%29%0A%7B%0A%09this.%20doc%20%3D%20browser.%20contentDocument%3B%0A%09this.%20win%20%3D%20browser.%20contentDocument.%20defaultView%3B%0A%7D%0AcbTranslatorButton.%20prototype%20%3D%0A%7B%0A%09doc%3A%20null%2C%0A%09win%3A%20null%2C%0A%09toolbar%3A%20null%2C%0A%09clse%3A%20null%2C%0A%09frame%3A%20null%2C%0A%09%0A%09grabX%3A%200%2C%0A%09origX%3A%200%2C%0A%09grabY%3A%200%2C%0A%09origY%3A%200%2C%0A%09%0A%09handleEvent%3A%20function%20%28event%29%0A%09%7B%0A%09%09switch%20%28event.%20type%29%0A%09%09%7B%0A%09%09%09case%20%22mousedown%22%3A%0A%09%09%09%09this.%20tbOnMouseDown%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22mousemove%22%3A%0A%09%09%09%09this.%20tbOnMouseMove%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22mouseup%22%3A%0A%09%09%09%09this.%20tbOnMouseUp%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22click%22%3A%0A%09%09%09%09this.%20clseOnClick%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22load%22%3A%0A%09%09%09%09this.%20frameOnLoad%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09default%3A%3B%0A%09%09%7D%0A%09%7D%2C%0A%09%0A%09tbOnMouseMove%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20toolbar.%20style.%20left%20%3D%20this.%20origX%20+%20event.%20clientX%20-%20this.%20grabX%20+%20%27px%27%3B%0A%09%09this.%20toolbar.%20style.%20top%20%3D%20this.%20origY%20+%20event.%20clientY%20-%20this.%20grabY%20+%20%27px%27%3B%0A%09%7D%2C%0A%09%0A%09tbOnMouseUp%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20doc.%20removeEventListener%20%28%27mousemove%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20this.%20toolbar.%20style.%20zIndex%20%3D%209997%3B%0A%09%7D%2C%0A%09%0A%09tbOnMouseDown%3A%20function%20%28event%29%0A%09%7B%0A%09%09if%20%28event.%20target%20%3D%3D%20this.%20toolbar%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20event.%20preventDefault%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20toolbar.%20style.%20zIndex%20%3D%209998%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20grabX%20%3D%20event.%20clientX%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20grabY%20%3D%20event.%20clientY%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20origX%20%3D%20parseInt%20%28this.%20toolbar.%20style.%20left%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20origY%20%3D%20parseInt%20%28this.%20toolbar.%20style.%20top%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20doc.%20addEventListener%20%28%27mousemove%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20doc.%20addEventListener%20%28%27mouseup%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%09%7D%2C%0A%09%0A%09removeEventListener%3A%20function%20%28element%2C%20eventType%2C%20captureFlag%29%0A%09%7B%0A%09%09try%0A%09%09%7B%0A%09%09%09element.%20removeEventListener%20%28eventType%2C%20this%2C%20captureFlag%29%3B%0A%09%09%7D%0A%09%09catch%20%28err%29%20%7B%7D%0A%09%7D%2C%0A%09%0A%09removeElement%3A%20function%20%28element%29%0A%09%7B%0A%09%09try%0A%09%09%7B%0A%09%09%09element.%20parentNode.%20removeChild%20%28element%29%3B%0A%09%09%7D%0A%09%09catch%20%28err%29%20%7B%7D%0A%09%7D%2C%0A%09%0A%09clseOnClick%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20clse.%20removeEventListener%20%28%27click%27%2C%20this%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20toolbar%2C%20%27mousedown%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20doc%2C%20%27mousemove%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20doc%2C%20%27mouseup%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20frame%2C%20%27load%27%2C%20false%29%3B%0A%09%09this.%20removeElement%20%28this.%20toolbar%29%3B%0A%09%09this.%20removeElement%20%28this.%20frame%29%3B%0A%09%09this.%20frame%20%3D%20null%3B%0A%09%09this.%20clse%20%3D%20null%3B%0A%09%09this.%20toolbar%20%3D%20null%3B%0A%09%09this.%20win%20%3D%20null%3B%0A%09%09this.%20doc%20%3D%20null%3B%0A%09%7D%2C%0A%09%0A%09ujs_createWindow%3A%20function%20%28txt%29%0A%09%7B%0A%09%09var%20doc%20%3D%20this.%20doc%3B%0A%09%09var%20win%20%3D%20this.%20win%3B%0A%09%09var%20h%2C%20w%3B%0A%09%20%20%20%20var%20txtLen%20%3D%20txt.%20length%3B%0A%09%20%20%20%20var%20tbId%20%3D%20UJS_TOOLBAR_ID%3B%0A%09%20%20%20%20if%20%28arguments.%20length%20%3E%202%29%0A%09%20%20%20%20%20%20%20%20tbId%20+%3D%20arguments%20%5B2%5D%3B%0A%09%09var%20toolbar%20%3D%20doc.%20getElementById%20%28tbId%29%3B%0A%09%20%20%20%20if%20%28toolbar%29%0A%09%20%20%20%20%20%20%20%20toolbar.%20parentNode.%20removeChild%20%28toolbar%29%3B%0A%09%20%20%20%20toolbar%20%3D%20doc.%20createElement%20%28%27div%27%29%3B%0A%09%20%20%20%20this.%20toolbar%20%3D%20toolbar%3B%0A%09%20%20%20%20toolbar.%20id%20%3D%20tbId%3B%0A%09%09if%20%28arguments.%20length%20%3D%3D%205%29%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20w%20%3D%20arguments%20%5B3%5D%3B%0A%09%20%20%20%20%20%20%20%20h%20%3D%20arguments%20%5B4%5D%0A%09%20%20%20%20%7D%0A%09%20%20%20%20else%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20h%20%3D%2015%3B%0A%09%20%20%20%20%20%20%20%20w%20%3D%2020%3B%0A%09%20%20%20%20%20%20%20%20if%20%28txtLen%20%3E%202000%29%0A%09%20%20%20%20%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2050%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2066%0A%09%20%20%20%20%20%20%20%20%7D%0A%09%20%20%20%20%20%20%20%20else%20if%20%28txtLen%20%3E%20250%29%0A%09%20%20%20%20%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2025%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2033%0A%09%20%20%20%20%20%20%20%20%7D%3B%0A%09%20%20%20%20%20%20%20%20h%20%3D%20parseInt%20%28h%20*%20win.%20innerHeight%20/%20100%29%3B%0A%09%20%20%20%20%20%20%20%20w%20%3D%20parseInt%20%28w%20*%20win.%20innerWidth%20/%20100%29%0A%09%20%20%20%20%7D%3B%0A%09%09var%20title%20%3D%20%28arguments.%20length%20%3E%201%29%20%3Farguments%20%5B1%5D%3A%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%3B%0A%09%09toolbar.%20innerHTML%20%3D%20%27%3Cimg%20src%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAStJREFUOE+1k9tqhDAQhtOHqO37P4E3IlQFQQSvBBVEl1TBVVi1B+1C8XAx3QmNqIVqhBV+DEPmy8z8ycPX9Ruq6kLqqiRHvkfpiUjSMyGUJtB1HfR9D8MwCAlz6voNkEGCIGDJeZ5DURTCatoWNE0D4nk+jOMoDMBD8fDPpoGXu4OyLAPUutV1/N+KcPPNPaY4jidYktwG+hunlLL4ZmsI4EloxhxiGAY4jgNpmm6D8DQEcBj/I8SyrKnSzYr4bDzPm2CKoiwgu1rDTfN2eEWu6y4M2KxoPRNVVRcz4xXvdm0+k/nMwjDc5xraa9v2n5kgwDRNMdfQXtT6Us7jy9Z8n738Iw82O5/hUpag6zqQ0+kVmqZld0NUURSxl48M8v5xZQtZlg8Jc5HxA5fIE73hTda3AAAAAElFTkSuQmCC%22%20title%3D%22Close%22%20width%3D%2218%22%20height%3D%2218%22%3E%26nbsp%3B%27%20+%20title%20+%20%27%3Cdiv%3E%3C/div%3E%27%3B%0A%09%09toolbar.%20setAttribute%28%27style%27%2C%20%27position%3Afixed%3Bbackground%3Awhite%3Bdisplay%3Ablock%3Bvisibility%3Ahidden%3Bleft%3A0%3Btop%3A0%3Bheight%3Aauto%3Bwidth%3A%27%20+%20w%20+%20%27px%3Bfont%3A16px%20Times%20New%20Roman%3Bborder%3A1px%20solid%20gray%3Bpadding%3A3px%3Bz-index%3A9997%3Boverflow%3Avisible%3Bcursor%3Amove%3B%27%29%3B%0A%09%09toolbar.%20addEventListener%20%28%27mousedown%27%2C%20this%2C%20false%29%3B%0A%09%09var%20clse%20%3D%20toolbar.%20firstChild%3B%0A%09%09this.%20clse%20%3D%20clse%3B%0A%09%20%20%20%20clse.%20setAttribute%20%28%27style%27%2C%20%27float%3Aright%3Bbackground%3Awhite%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3Anone%3Bcursor%3Apointer%3B%27%29%3B%0A%09%09clse.%20addEventListener%20%28%27click%27%2C%20this%2C%20false%29%3B%0A%09%09var%20textbar%20%3D%20toolbar.%20lastChild%3B%0A%09%20%20%20%20textbar.%20innerHTML%20%3D%20txt%3B%0A%09%09textbar.%20setAttribute%20%28%27style%27%2C%20%27display%3Ablock%3Bborder%3A1px%20solid%20%23aaaaaa%3Bmargin%3A2px%200%200%200%3Bpadding%3A4px%3Bbackground-color%3A%23fafcfe%3Bfont%3A14px%20Times%20New%20Roman%3Bheight%3A%27%20+%20h%20+%20%27px%3Bwidth%3Aauto%3Boverflow%3Aauto%3Bcursor%3Atext%3B%27%29%3B%0A%09%09doc.%20documentElement.%20appendChild%20%28toolbar%29%3B%0A%09%09var%20halfWidth%20%3D%20parseInt%20%28toolbar.%20offsetWidth%20/%202%29%3B%0A%09%09var%20strict%20%3D%20doc.%20compatMode%20%3D%3D%20%27CSS1Compat%27%3B%0A%09%09var%20mX%20%3D%20%28strict%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientWidth%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientWidth%29%20-%20toolbar.%20offsetWidth%3B%0A%09%09var%20mY%20%3D%20%28strict%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientHeight%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientHeight%29%20-%20toolbar.%20offsetHeight%3B%0A%09%20%20%20%20var%20lastClickX%20%3D%20win.%20cbTranslateButton2X%3B%0A%09%20%20%20%20var%20lastClickY%20%3D%20win.%20cbTranslateButton2Y%3B%0A%09%09toolbar.%20style.%20left%20%3D%20%28%28lastClickX%20%3C%20mX%20+%20halfWidth%29%3F%0A%09%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%20%20%20%20%20%20%20%28lastClickX%20%3E%20halfWidth%3F%0A%09%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%20%20%20%20%20%20%20%20%20%20%20%28lastClickX%20-%20halfWidth%29%3A%0A%09%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%20%20%20%20%20%20%20%20%20%20%200%29%3A%0A%09%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%20%20%20%20%20%20%20%20%20%20%20mX%29%20+%20%22px%22%3B%0A%09%09toolbar.%20style.%20top%20%3D%20%28%28lastClickY%20%3C%20mY%29%3F%0A%09%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%20%20%20lastClickY%3A%0A%09%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%20%20%20mY%29%20+%20%22px%22%3B%0A%09%09toolbar.%20style.%20visibility%20%3D%20%27visible%27%3B%0A%09%20%20%20%20return%20textbar%3B%0A%09%7D%2C%0A%09%0A%09frameOnLoad%3A%20function%20%28event%29%0A%09%7B%0A%09%09var%20fr%20%3D%20event.%20currentTarget%3B%0A%09%09fr.%20removeEventListener%20%28%27load%27%2C%20this%2C%20false%29%3B%0A%09%09var%20tbId%20%3D%20fr.%20id.%20substring%20%28UJS_GOOGLE_TRANSLATE_FRAME_ID.%20length%29%3B%0A%09%09var%20toolbar%20%3D%20this.%20doc.%20getElementById%20%28UJS_TOOLBAR_ID%20+%20tbId%29%3B%0A%09%09var%20frdoc%20%3D%20fr.%20contentDocument%3B%0A%09%09var%20a%20%3D%20frdoc.%20getElementById%20%28%27autotrans%27%29%3B%0A%09%09var%20title%20%3D%20%28a%20%26%26%20%21/%23808080/.%20test%20%28a.%20innerHTML%29%29%3F%0A%09%09%09%09%09%09%27%26nbsp%3B-%26nbsp%3B%27%20+%20a.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%0A%09%09%09%09%09%09%27%27%3B%0A%09%09var%20result%20%3D%20frdoc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%09%09var%20ancor%20%3D%20toolbar.%20getElementsByTagName%20%28%22a%22%29%20%5B0%5D%3B%0A%09%09ancor.%20innerHTML%20+%3D%20title%3B%0A%09%09ancor.%20nextSibling.%20innerHTML%20%3D%20result%3B%0A%09%09setTimeout%0A%09%09%28%0A%09%09%09function%20%28%29%0A%09%09%09%7B%0A%09%09%09%09fr.%20parentNode.%20removeChild%20%28fr%29%3B%0A%09%09%09%7D%2C%0A%09%09%090%0A%09%09%29%3B%0A%09%7D%2C%0A%09%0A%09google_translate%3A%20function%20%28language%29%0A%09%7B%0A%09%09var%20doc%20%3D%20this.%20doc%3B%0A%09%09var%20win%20%3D%20this.%20win%3B%0A%09%09var%20t%20%3D%20document.%20commandDispatcher.%20focusedWindow.%20getSelection%20%28%29.%20toString%20%28%29%3B%0A%09%09var%20lng%20%3D%20%28win.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09%20%20%20%20if%20%28t%20%26%26%20location.%20hostname%20%21%3D%20%27translate.google.com%27%29%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20this.%20ujs_createWindow%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%28lng%20%3D%3D%20%27ru%27%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu041F%5Cu0435%5Cu0440%5Cu0435%5Cu0432%5Cu043E%5Cu0434%5Cu0438%5Cu043C%27%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27Translating%27%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%29%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu2026%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20btoa%20%28escape%20%28t%29%29%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%09%09var%20gtfId%20%3D%20UJS_GOOGLE_TRANSLATE_FRAME_ID%3B%0A%09%09%09var%20fr%20%3D%20doc.%20getElementById%20%28gtfId%29%3B%0A%09%20%20%20%20%20%20%20%20if%20%28%21fr%29%0A%09%20%20%20%20%20%20%20%20%20%20%20%20fr%20%3D%20doc.%20createElement%20%28%27iframe%27%29%3B%0A%09%20%20%20%20%20%20%20%20this.%20frame%20%3D%20fr%3B%0A%09%09%09fr.%20setAttribute%20%28%27id%27%2C%20gtfId%20+%20btoa%20%28escape%20%28t%29%29%29%3B%0A%09%20%20%20%20%20%20%20%20fr.%20setAttribute%20%28%27frameborder%27%2C%20%270%27%29%3B%0A%09%09%09fr.%20setAttribute%20%28%27style%27%2C%20%27width%3A0px%3Bheight%3A0px%3Bvisibility%3Ahidden%3Bposition%3Aabsolute%3Bleft%3A-999em%3B%27%29%3B%0A%09%09%09fr.%20setAttribute%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27src%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate_t%3Ftext%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%20%28t%29%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%26ujs%3Dgtt%27%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%09%09fr.%20addEventListener%20%28%27load%27%2C%20this%2C%20false%29%3B%0A%09%20%20%20%20%20%20%20%20doc.%20documentElement.%20appendChild%20%28fr%29%3B%0A%09%20%20%20%20%7D%0A%09%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*%09original%20script%20is%20operajs%20Google-Translate%20v%201.6.12%0A%09opera%20ujs%20is%20http%3A//lexi.ucoz.ru/google-translate.js%0A%09original%20author%3A%20Lex1%0A%09modified%20by%20Anton%0A*/%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%3C/custombutton%3E

Deim0s

В таком варианте, выделенный текст берёт отовсюду и переводит, а страницу перестал переводить.

Ну тогда

Выделить код

Код:

    if (el)
        t = el. value. substring (el. selectionStart, el. selectionEnd);

или

Выделить код

Код:

t = el && el. value. substring (el. selectionStart, el. selectionEnd) || "";

вместо

Выделить код

Код:

t = el. value. substring (el. selectionStart, el. selectionEnd);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№67414-07-2008 22:20:22

Deim0s
Участник
 
Группа: Members
Зарегистрирован: 09-04-2008
Сообщений: 220
UA: Firefox 3.0

Re: Custom Buttons

Anton
Да, в таком, общем, виде:

Выделить код

Код:

var t = document. commandDispatcher. focusedWindow. getSelection (). toString ();
if (!t)
{
    var el = document. commandDispatcher. focusedElement;
    t = el && el. value. substring (el. selectionStart, el. selectionEnd) || "";
}
var c = content.document.characterSet;
var loc = content.location.href;
getBrowser().loadOneTab(
    t
        ? "http://translate.google.ru/translate_t?text=" + t + "&hl=ru&langpair=auto|ru&tbb=1&ie=" + c
        : /^https?:\/\//i.test(loc)
            ? "http://translate.google.ru/translate?u=" + escape(loc) + "&hl=ru&langpair=auto|ru&tbb=1&ie=" + c
            : "http://translate.google.ru/translate_t?hl=ru",
    null, null, null, false /* load in background */, false
);

всё заработало, как хотелось. Проверил где только возможно - всё работает.
Остался один вопрос - сделал я простенькую кнопочку "Закрыть все вкладки, кроме активной", можно ли какой-нибудь хитростью (с помощью Custom Buttons и скриптов) перенести её в tabs-alltabs-box, заменив tabs-alltabs-button? Скрин как хотелось:
http://ipicture.ru/uploads/080714/gto00MZ2PR.png
Или только Overlay писать?

Отсутствует

 

№67515-07-2008 14:37:59

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

можно ли какой-нибудь хитростью (с помощью Custom Buttons и скриптов) перенести её в tabs-alltabs-box, заменив tabs-alltabs-button?

Вот код:

Выделить код

Код:

var tbr = document. getElementById ("content");
var tbx = document. getAnonymousNodes (tbr). item (1);
var an = tbx. firstChild. nextSibling. firstChild. nextSibling. nextSibling;
var atb = document. getAnonymousElementByAttribute (an, "anonid", "alltabs-button");
atb. parentNode. insertBefore (this, atb);
atb. setAttribute ("hidden", "true");

Но поддерживать я его не буду. Хотите - пользуйтесь, если что-нибудь не устроит - просьба не беспокоить.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

Board footer

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