>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >Custom Buttons http://forum.mozilla-russia.org/viewtopic.php?id=9591 |
Yan > 11-04-2006 16:47:23 | ||||||||
Custom Buttons Автор: Anton | ||||||||
Крыска > 11-04-2006 22:14:31 | ||||||||
Давно мечтал о ББ-тулбаре....
это как то жостко. | ||||||||
Bananas > 12-04-2006 02:30:52 | ||||||||
буду внимательно следить за разработкой) | ||||||||
Крыска > 15-04-2006 11:35:03 | ||||||||
Yan | ||||||||
Merlyel > 15-04-2006 12:19:48 | ||||||||
Хм... а чем Customizable Toolbar Buttons не подходил? | ||||||||
Крыска > 15-04-2006 14:54:28 | ||||||||
Lynxx | ||||||||
Merlyel > 16-04-2006 02:24:47 | ||||||||
Крыска | ||||||||
Крыска > 16-04-2006 11:11:52 | ||||||||
Lynxx | ||||||||
hex > 16-04-2006 13:17:11 | ||||||||
Yan молодец! Поздравляю (я то наверное могу это сделать со знанием темы)! Очень классный код и перспективный! Я кстати также твое участие в своем расширении всех версий обязательно позиционирую (как и обещал!). Если ты сам считаешь что код нормальный, то может можно его на международный уровень выводить? Если что я помогу чем смогу (в т.ч. и могу поставить расширение в свой сайт по расширениям) Да еще! Если не против, могу предложить интеграцию части того что ты сделал в мое расширение. Тем более, что мы с тобой работаем в схожем направлении. Я тоже нечто подобное для своего сделал и думал через месяцок выпустить. Но откровенно, твой код по прямее будет. Короче если есть желание опять скооперироваться пиши в личку, - я обрисую конфигурацию. | ||||||||
Крыска > 16-04-2006 16:13:15 | ||||||||
Yan | ||||||||
Yan > 16-04-2006 20:49:37 | ||||||||
Крыска
Пока нет.. Не было меня в городе, ничего не делал. Расширение можно тестить - кнопки удаляются через about:config сбрасыванием параметра custombuttons.button*.
Тем, что все создаваемые кнопки находятся в одном месте - их не распихать по нужным углам. | ||||||||
hex > 16-04-2006 21:35:54 | ||||||||
Yan пишет
Понял! Спасибо за добрые слова и в мой адрес и в адрес моего расширения! Дальновидная политика, молодец! | ||||||||
Yan > 16-04-2006 21:49:06 | ||||||||
hex | ||||||||
Крыска > 16-04-2006 23:43:54 | ||||||||
| ||||||||
Крыска > 19-04-2006 15:04:43 | ||||||||
| ||||||||
Yan > 19-04-2006 22:09:39 | ||||||||
Крыска
Статусная строка по умолчанию не предназначена для кнопок, вот и слетают. | ||||||||
Крыска > 19-04-2006 22:14:27 | ||||||||
Yan | ||||||||
Yan > 19-04-2006 22:32:39 | ||||||||
А я подписи отключил.
У меня тоже. Поэтому редкие кнопки (bbcode, например) я вынес на панель закладок, которую открываю только по необходимости (тоже кнопкой). Собственно, для того и расширение написал. | ||||||||
Крыска > 20-04-2006 00:27:13 | ||||||||
т.е. в панель АИОС? кстати на основной панели работает. | ||||||||
Yan > 20-04-2006 00:41:04 | ||||||||
Крыска
Нет, именно Панель закладок. | ||||||||
Yan > 26-04-2006 16:40:23 | ||||||||
Сделал alpha2. Изменения: Вроде всё. | ||||||||
BraVo123 > 26-04-2006 19:34:06 | ||||||||
А можно как нибудь по простому объяснить, что нужно вставлять в поле Code? Например если я хочу создать кнопку для вызова расширения FireFTP ... | ||||||||
Philip > 26-04-2006 20:12:30 | ||||||||
Было бы ещё шоколадно сделать плавающую (float) панель для размещения на ней кнопок. | ||||||||
Крыска > 26-04-2006 20:41:45 | ||||||||
Ура! ПОлная поддержка ББкод! Теперь я доволен | ||||||||
Yan > 26-04-2006 20:54:32 | ||||||||
BraVo123
Код тот же, что и для настройки горячих клавиш в keyconfig.
Вместо MenuManipulator можно воспользоваться DOM Inspector. Правда, это порядком сложнее. | ||||||||
BraVo123 > 27-04-2006 00:30:26 | ||||||||
Yan, спасибо за исчерпывающий ответ | ||||||||
BraVo123 > 27-04-2006 01:41:01 | ||||||||
Yan , я конечно уже извращаюсь, но всётаки, картинка для кнопки, может быть только одна или можно несколько втавить (отжатая кнопк, нажатая кнопка, неактивная кнопка) | ||||||||
Yan > 27-04-2006 02:03:57 | ||||||||
BraVo123 Выделить код Код:if (!this.checked){ this.checked=true; this.image="file:///F:/knopki/variant1.png"; }else{ this.checked=false; this.image="file:///F:/knopki/variant2.png"; } this в коде указывает на саму кнопку. Пока у этого способа много недостатков (например, теряется состояние кнопки при перезагрузке браузера), но в alpha3 я планировал что-то с этим сделать. | ||||||||
Dark-Demon > 28-04-2006 10:43:33 | ||||||||
Yan, не стоит использовать абсолютных путей... | ||||||||
Yan > 28-04-2006 12:57:20 | ||||||||
Dark-Demon
Где? В коде для смены картинки? Если да, то почему? | ||||||||
BraVo123 > 28-04-2006 17:08:06 | ||||||||
Ну например, я использую PortableFireFox .... | ||||||||
Yan > 28-04-2006 23:52:54 | ||||||||
BraVo123
Ну это уже от желания пользователя зависит.. Если надо - придется конвертить. | ||||||||
INFOMAN > 29-04-2006 03:23:08 | ||||||||
Лучше в профиле создавать папку и кидать туда картинки. | ||||||||
Yan > 29-04-2006 03:35:00 | ||||||||
Ну так для юникс-подобных систем свой путь и вводить. Типа file:///home/yan/...... Кстати, можно вообще хоть из нета картинки использовать. Типа http://forum.mozilla.ru/favicon.ico. Повторюсь, это уже как пользователю удобнее будет. От меня тут мало что зависит. Что человек напишет в полях Image и Code, такая кнопка у него и получится. | ||||||||
Yan > 14-05-2006 00:08:55 | ||||||||
Anton прислал мне код для конвертации картинок в base64, так что проблемы с абсолютными путями отпадают. Кроме этого, в alpha3 я добавил поле Initialization. В него вписывается код, который будет выполнен один раз при загрузке браузера. Например, это может быть код, устанавливающий начальное состояние кнопки, меняющий её тип, её свойства. На этом добавление новых функций, пожалуй, заканчиваю. В дальнейшем планирую сделать нормальную локализацию, и улучшить пользовательский интерфейс. Ну и баги исправлять буду по мере нахождения, естественно. | ||||||||
Крыска > 14-05-2006 01:03:57 | ||||||||
что-то с часами я не понял. они у меня звёздочкой отображаются. | ||||||||
Yan > 14-05-2006 01:07:02 | ||||||||
Крыска | ||||||||
INFOMAN > 14-05-2006 02:42:52 | ||||||||
Интересная иконка: | ||||||||
Крыска > 14-05-2006 12:10:02 | ||||||||
раз 20 щёлкал. у меня не работает. | ||||||||
Крыска > 14-05-2006 12:16:49 | ||||||||
А можно сделать кнопку scrapbook'a "захватить"? | ||||||||
Крыска > 14-05-2006 12:19:31 | ||||||||
INFOMAN пишет
ага. так и работает | ||||||||
Anton > 14-05-2006 13:09:04 | ||||||||
Yan пишет
Устанавливаются почему-то только при отключенном JavaScript - мол, кнопка недоступна, установите необходимое расширение. Но работают без этого расширения. | ||||||||
Yan > 14-05-2006 17:10:06 | ||||||||
INFOMAN
Не знал, какое время для примера взять.
Странно.
Да:
Anton
Это я перемудрил со скриптом. | ||||||||
Крыска > 14-05-2006 17:33:48 | ||||||||
Yan | ||||||||
Yan > 14-05-2006 18:03:37 | ||||||||
Крыска
В общем случае как и в keyconfig. Выделить код Код:var ar=document.getElementsByAttribute('label','Захватить как...'); alert(ar[0].id); Ну и потом вписать этот ID в код:
| ||||||||
Yan > 15-05-2006 01:45:54 | ||||||||
Сделал для себя кнопку Proxy On/Off, а заодно и Offline Button. Если кому понадобится - установка там же. | ||||||||
Dimanish > 15-05-2006 12:06:57 | ||||||||
Yan | ||||||||
Крыска > 15-05-2006 20:33:51 | ||||||||
прально... пора выходить на мировой уровень | ||||||||
INFOMAN > 16-05-2006 01:54:03 | ||||||||
Предполагаю, что прямо в кнопку в виде data:image/png;base64..... | ||||||||
Anton > 16-05-2006 13:07:22 | ||||||||
Dimanish пишет
А чтобы "умельцам" было проще, пусть само расширение компонует ссылки для установки кнопок. | ||||||||
Yan > 16-05-2006 13:34:57 | ||||||||
Dimanish
INFOMAN правильно сказал. Конвертация в base64 позволяет хранить картинку в самом коде кнопки.
Обязательно сделаю.
Никаких нововведений и не требуется. Всё это можно сделать и сейчас в коде инициализации.
А вот правую кнопку лучше не обрабатывать, а то тогда контекстное меню не отроешь, и кнопку отредактировать можно будет только через about:config.
Про рабочее состояние говорить рано. Например, вчера нашел баг, из-за которого кнопки могли пропадать, или наоборот, появляться лишние. P.S. base64 | ||||||||
Yan > 16-05-2006 17:58:39 | ||||||||
Anton
Так контекстное меню -> Copy URI копирует в буфер ссылку. | ||||||||
Anton > 16-05-2006 18:21:28 | ||||||||
Yan пишет
| ||||||||
INFOMAN > 17-05-2006 10:51:43 | ||||||||
Бесплатных хостингов, на которых можно повесить страницу с кнопками, пока хватает. | ||||||||
Anton > 17-05-2006 19:10:23 | ||||||||
Хотелось бы, чтобы диалог редактирования кнопки был немодальным - когда нужно копировать скрипты с разных веб страниц, приходится его постоянно закрывать и открывать. | ||||||||
Yan > 17-05-2006 19:39:48 | ||||||||
Anton
Да, пожалуй так лучше будет. Сделаю. | ||||||||
Крыска > 17-05-2006 20:23:59 | ||||||||
да. будет получше., а то у меня кнопка получилась гибридная | ||||||||
Yan > 17-05-2006 22:00:47 | ||||||||
Я сделаю так, чтоб окно всё равно было поверх других, но при этом была возможность копировать текст со страниц, и вообще работать с браузером. (как в Adblock Plus 0.7 отсоединённая панель со списком элементов). Так удобно будет? | ||||||||
Крыска > 17-05-2006 22:12:29 | ||||||||
Yan | ||||||||
Anton > 18-05-2006 14:30:53 | ||||||||
Yan пишет
Конечно, будет удобней, если окно будет всегда наверху. | ||||||||
Yan > 20-05-2006 02:50:43 | ||||||||
Изменения: | ||||||||
Dark-Demon > 20-05-2006 03:12:01 | ||||||||
Сварганил парочку кнопок: Выделить код Код:custombutton://ara%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAABcMAAAXDABsIpz7QAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAACqklEQVR4nG3TzWucVRTH8e/v3HOfecvLZGqGaQKmllKmWg1J1cyibu2ioihuXCjWnYSi/4Euu9KquJGCoqWKIMZUMBErKhGCaLrRLiy+QtugdKCDGZOZeeZxkUwI6tncxeVzzrlcfqrc9Th7ah9QAVaAEQBJg7uWBT+OaLrHm8EjSPgeXAM+BBogZIYkzAQIID+UpT8W+ulak3gSWAewPZPfBzVkthHcCTHiMW55zG3FfJ5yDJxrX+WN9tXZar+7lMHooEEN+BjpATMjeGzJ7JFg9nxSKPaTYik3qfTF5ea3V6a7Leq9Dd669f3BPNmnkI0bUAYaZoaFQHB3T5LFwvDoZ0mhWNiv9MwnN74+MZJ27xy8tUz6QlYsmSe5SQe+lAxZ2F47yZmFEJJiaWg47fHOLyuPAYcH+PWJ2eZ7+w7Ne6cz1KO77KCyzAjueEyI2w2Y7rSG56+vMdbb3MXnJmd+/qB29KD3+xVJyNRxSX0LRghOSBJCkrN3f/18dLy3+fJQ2tn9oi8qB968sP+eZySdQXowSDNZRuoy9c1sw9xL7rE7KrIDW60lwdEBfmWqwWK1fkrwF3AReFtm50Pwu02yTSlcErp/LOstn/39q7LgvgF+darRX6zWU2ATOA08K3FF4geZuQOrSKcvX7t0az0WZ2vd9u7a5yem1z6q1p8E/gSWds4nQA6MSGq5pOeGSX+75oX1yW67NsCvTc11FqpH7gAuA08Dp4AMOATMAw8DdTf3dqHf++5vhWMDfPb2OS5WjwCMAV3gAv+tVZm1DLj+h8UT8+Mz3/yUG+GliWMs3HYYyJLtgcT/wSvAQ8AN1e59CknEfLFWir6Q5YtznuSw4MiE0L/xKvAoO2Ham8b1juykZ1kl7fVWQCNGQAY7aWwBx4EmcHOA/gEb272+WkeOLAAAAABJRU5ErkJggg%3D%3D%5D%5Bswitch%28this.PS.getBoolPref%28this.pref%29%29%7B%0A%09case%20true%3A%20this.PS.setBoolPref%28this.pref%2C0%29%3Bbreak%3B%0A%09case%20false%3A%20this.PS.setBoolPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%5D%5Bthis.pref%3D%27javascript.enabled%27%3B%0Athis.setState%3Dfunction%28%29%7B%0A%20var%20state%3Dthis.PS.getBoolPref%28this.pref%29%3B%0A%20if%20%28state%3D%3D1%29%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAABcMAAAXDABsIpz7QAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAACUklEQVR4nG2TsWueVRjFf+c8z/u++ZIQQoqiCIIgIhRRUUrQboJTRJAK2sm1lA4KiquTOul/IEipYAfBdslQREgh1MUlHXS3WVrwk2jSfO99HL4vpWIP3OVefudcnnOvNk6f4yGdAjaAHWANQNLJ2dSRZxH3Mru7kR1I5EPwE8APwCYI2UjCFiCApYLfoG4BbwP7wAODU8D3oE1ZB3asKAJLR3ag8FCt5j7FmWrtesEbgj/zQbK0aRlnToHzYT/TLU0+d+SkjbNP+8nyrWrlw4O/VmVflLQN9VYC68CmbewgMlP2j0vLq6ed+XVVfZbD0pfZ9d+JutMNw0dV9dPx0T832jg+lcDPkpGD6DqyH+yI6JdXVjWfxZ4jAJ6j6j3gndbGWbVhdcbxdoLWZROZZNfTzQ3oul4g3MWrwlfbOHtF8k3gNbdAErLup6TmMBFJ9D3RD54PLkFC8AkgR/5aVa9L+gLpzZBermJMWc32gTNXMrvjyK7Z1rw+ADXg48Wb2ASuAd/KvhyRL1jyoRQ3hM7IcT3C67YBHS/6b8AIHAKXgAsStyX2ZKeBXaRLOQy/ROYeaF/SDHgauAq8CDwJ3Aa2gfdBCVqTNNXjL51/Nvvh934y+WqYrHzT9QPR9Y/JvgYcASvAB8AeUIsbXQQuVGvPpzP/rqpd4MPFOtF9YBk4Bq7wf+3Knhr4A2qrtXaztZGqolUB1c8D6R4B7wBbwB0vNu6CzrVx3B3HGdVGWqs5/ohk4N05w39+4z6wVVUb42y2A1ozgQyLNqbAWeDeCQzwL0hNudpWhtFVAAAAAElFTkSuQmCC%27%3B%0A//%20%20this.checked%3Dtrue%3B%0A%20%7Delse%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAABcMAAAXDABsIpz7QAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAACqklEQVR4nG3TzWucVRTH8e/v3HOfecvLZGqGaQKmllKmWg1J1cyibu2ioihuXCjWnYSi/4Euu9KquJGCoqWKIMZUMBErKhGCaLrRLiy+QtugdKCDGZOZeeZxkUwI6tncxeVzzrlcfqrc9Th7ah9QAVaAEQBJg7uWBT+OaLrHm8EjSPgeXAM+BBogZIYkzAQIID+UpT8W+ulak3gSWAewPZPfBzVkthHcCTHiMW55zG3FfJ5yDJxrX+WN9tXZar+7lMHooEEN+BjpATMjeGzJ7JFg9nxSKPaTYik3qfTF5ea3V6a7Leq9Dd669f3BPNmnkI0bUAYaZoaFQHB3T5LFwvDoZ0mhWNiv9MwnN74+MZJ27xy8tUz6QlYsmSe5SQe+lAxZ2F47yZmFEJJiaWg47fHOLyuPAYcH+PWJ2eZ7+w7Ne6cz1KO77KCyzAjueEyI2w2Y7rSG56+vMdbb3MXnJmd+/qB29KD3+xVJyNRxSX0LRghOSBJCkrN3f/18dLy3+fJQ2tn9oi8qB968sP+eZySdQXowSDNZRuoy9c1sw9xL7rE7KrIDW60lwdEBfmWqwWK1fkrwF3AReFtm50Pwu02yTSlcErp/LOstn/39q7LgvgF+darRX6zWU2ATOA08K3FF4geZuQOrSKcvX7t0az0WZ2vd9u7a5yem1z6q1p8E/gSWds4nQA6MSGq5pOeGSX+75oX1yW67NsCvTc11FqpH7gAuA08Dp4AMOATMAw8DdTf3dqHf++5vhWMDfPb2OS5WjwCMAV3gAv+tVZm1DLj+h8UT8+Mz3/yUG+GliWMs3HYYyJLtgcT/wSvAQ8AN1e59CknEfLFWir6Q5YtznuSw4MiE0L/xKvAoO2Ham8b1juykZ1kl7fVWQCNGQAY7aWwBx4EmcHOA/gEb272+WkeOLAAAAABJRU5ErkJggg%3D%3D%27%3B%0A//%20%20this.checked%3Dfalse%3B%0A%20%7D%0A//alert%28%27jh%27%29%3B%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B toggle Java Выделить код Код:custombutton://ara%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAABcMAAAXDABsIpz7QAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAACpElEQVR4nF2TT2icdRCGn/n3+751t38SMBQMxNZGm0qhFMEepA20tqVG8FDwIIgRBCke1JpehB5KLx68Si+Siwfx4EmC4KX0YoVKhRKCJLVNirUU026arGSz+fbnIVltOjC3eeYdZt6R/pfP8ETUgSPAl8AIsCYiAElgRtTOichVi2ghgpqjT8BDwA/AFMiIqCLuSS2SRkIjjWA6lTdqhnqQbuYgcBkYRRVzJzyIiCpSWomUHkcqVs90l/LZ9QejiFxW80FArTawfxvwHXBc3VFzzAIrEqkoK1QnVe3rd9oPXv28+fuOw50m4r7317TzkIh878CBDWXDVDEPLAoiBR4pOuvrV67fnqp3kUElA3Csvcg3fXtHV7MecGBSRFAz1BOeCqIo8ZQwDy4sXj8BjCtZAGZrfXy8+yjdrFi7Pemgw6KKmWMRRFHgZYFFwVjzDqce/vH+5p6Ye6afc8Ov07IgqgrJeVhFaKsb5o6nwKPAPTHWnGdi4RqyCd8td7Q+e+kkrVRiaqg6nlJbUUFVUXfME+rOG8073YmFn9Gce9f67ZN9p6aXvQAEEVAVVB1VkQLRjSZqnbcfzc2dX7j2H/wwaveAY4+itvK/ZQRRQVQLB2ZVZFhUeevx3fZH92/s6Y39Z7l9+Yvdr52dbgwosJMtIYjIrIroOAhvrtzL5+/faPTgZU+3L+05+uF0Y6ANfAXsB/LWHjLuanazzOtXP1i6daR351u1vjyx72R9ycuLQAk8C6StE3BFRG5a47mDnY7oT780dh0aXf37+b9Sg09fPCHLqawD/SDbAXsK/hEYBxZl1yvvEkWJqA69oNW3rbJx+J/aNswcUQGEp5WB94B5egZh42XnF7x+fEnjdLeqZqqqInfzGuS1TXAGOA2M9WCAfwFy6bThwAwC4wAAAABJRU5ErkJggg%3D%3D%5D%5Bswitch%28this.PS.getBoolPref%28this.pref%29%29%7B%0A%09case%20true%3A%20this.PS.setBoolPref%28this.pref%2C0%29%3Bbreak%3B%0A%09case%20false%3A%20this.PS.setBoolPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%5D%5Bthis.pref%3D%27security.enable_java%27%3B%0Athis.setState%3Dfunction%28%29%7B%0A%20var%20state%3Dthis.PS.getBoolPref%28this.pref%29%3B%0A%20if%20%28state%3D%3D1%29%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAABcMAAAXDABsIpz7QAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAACKUlEQVR4nHWSMYudRRSGn/c9Z+a7axBENAYsopgVdyUggq1skSoEbGy3SBdrf4eFCBaCbK9oIbKkvLGws0qxxVaB/ALZSPbu/eZY3Lt4FXybaeZ5Zt45o9c//Jyd3AA+Bb4CDoCVJIAuOJPjS0m/RWsvkHAk3oFvA78Cp6AD2SizO1p367j1A8Kntdlz+xqKvZuHBt4GvgPuYRORZCSROWe2vyLzZUSWM23Hu4gPHPkEuIi9m4evAj8A95yJI4loxNTp02LGPrHj+5wW72frt9walu4AH0v6OYG7wBEOwiayEW2i9Ua23q7W66XDP7a+OIZi1KD6mvXq6qhG3U3gRBKOwNnJPtGmBdk7kY1+I/dkq8ZYbARQY0bRmC8vTxK8r23vaI02TeRiItpEOlDYIHAUgKqoCuxAVfspcemMKTLJ3sg2kdmJSGyDVLtzDkFVMEpk75fGwjbOJLKzechY214hAK4Ful4ksIWd2NKEvJE4rhTxuxyfIX29Zd7aSl7+cw8hC9lTAueW9mUjx5+yfxI6Bc6Bj4A/gDeA1/hXhKRzS364OUkFvAL1BfDLdrzfAB34FjjcqbN16GE64umgllXjqJj3atSdinpH6BPgBbAA3tyKdrOU9NRIF1QdV/G4RlFVVFVC3YJ6b/vN/ws/Bo6BCwOj9ek51KMaY1nzmhozNYr/yRJ4BDwHhrddAJ5RPKiq+2Oez+Z5pkatoFZb8Ay4DzwAnl3b/gZOa6bN/Lu7HAAAAABJRU5ErkJggg%3D%3D%27%3B%0A//%20%20this.checked%3Dtrue%3B%0A%20%7Delse%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAABcMAAAXDABsIpz7QAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAACpElEQVR4nF2TT2icdRCGn/n3+751t38SMBQMxNZGm0qhFMEepA20tqVG8FDwIIgRBCke1JpehB5KLx68Si+Siwfx4EmC4KX0YoVKhRKCJLVNirUU026arGSz+fbnIVltOjC3eeYdZt6R/pfP8ETUgSPAl8AIsCYiAElgRtTOichVi2ghgpqjT8BDwA/AFMiIqCLuSS2SRkIjjWA6lTdqhnqQbuYgcBkYRRVzJzyIiCpSWomUHkcqVs90l/LZ9QejiFxW80FArTawfxvwHXBc3VFzzAIrEqkoK1QnVe3rd9oPXv28+fuOw50m4r7317TzkIh878CBDWXDVDEPLAoiBR4pOuvrV67fnqp3kUElA3Csvcg3fXtHV7MecGBSRFAz1BOeCqIo8ZQwDy4sXj8BjCtZAGZrfXy8+yjdrFi7Pemgw6KKmWMRRFHgZYFFwVjzDqce/vH+5p6Ye6afc8Ov07IgqgrJeVhFaKsb5o6nwKPAPTHWnGdi4RqyCd8td7Q+e+kkrVRiaqg6nlJbUUFVUXfME+rOG8073YmFn9Gce9f67ZN9p6aXvQAEEVAVVB1VkQLRjSZqnbcfzc2dX7j2H/wwaveAY4+itvK/ZQRRQVQLB2ZVZFhUeevx3fZH92/s6Y39Z7l9+Yvdr52dbgwosJMtIYjIrIroOAhvrtzL5+/faPTgZU+3L+05+uF0Y6ANfAXsB/LWHjLuanazzOtXP1i6daR351u1vjyx72R9ycuLQAk8C6StE3BFRG5a47mDnY7oT780dh0aXf37+b9Sg09fPCHLqawD/SDbAXsK/hEYBxZl1yvvEkWJqA69oNW3rbJx+J/aNswcUQGEp5WB94B5egZh42XnF7x+fEnjdLeqZqqqInfzGuS1TXAGOA2M9WCAfwFy6bThwAwC4wAAAABJRU5ErkJggg%3D%3D%27%3B%0A//%20%20this.checked%3Dfalse%3B%0A%20%7D%0A//alert%28%27jh%27%29%3B%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B] Yan, поправь переключалку прокси, а то у тебя там отладочный алярм по клику выскакивает | ||||||||
Dark-Demon > 20-05-2006 03:23:03 | ||||||||
ссылка в последнем посте у тебя битая... | ||||||||
Yan > 20-05-2006 04:35:42 | ||||||||
Dark-Demon
Ой. Какой кошмар!
Есть такое. Подправить скорее всего не удастся, это связано в реализацией этих панелей в AIOS.
А это вроде как раз тот баг, что я в бете исправил. Но возможно и нет, надо будет последить еще...
Я изначально думал так сделать, но потом отказался в пользу нынешнего решения по нескольким причинам: Как вариант, думаю в окно создания кнопки добавить галку "открыть настройку панелей", и выбор панели, куда сразу поместить кнопку.
А вот это считаю излишним. Всё-таки суть расширения не в наборе кнопок, а в возможности добавлять их самому. P.S. Большое спасибо за bug-reports, побежал исправлять. | ||||||||
Yan > 20-05-2006 04:58:55 | ||||||||
Dark-Demon А чем тебе в кнопках this.checked не угодили? Удобней ведь с ними? | ||||||||
Dark-Demon > 20-05-2006 05:12:31 | ||||||||
Как устанавливать приведенные мной кнопки: трижды щелкните по урлу (он должен весь выделиться), скопируйте его в строку адресса и нажмите "перейти". Yan, и еще один нюанс, когда ставишь несколько кнопок подряд несколько напрягает читать сообщения, что новая кнопка теперь доступна для юзания (сразу после установки). Для этого лучше юзать ненавязчивые всплывающие окошки в правом нижнем углу экрана (например, как при завершении всех загрузок). А еще весьма полезной была бы функция бекапа всех кнопок в одну html страничку... >А чем тебе в кнопках this.checked не угодили? Удобней ведь с ними? | ||||||||
Yan > 20-05-2006 05:22:29 | ||||||||
Dark-Demon
Я поставлю галочку "Не показывать больше".
Разумно. Пожалуй, сделаю. P.S. Кнопки всё-таки пропадают из строки состояния.. ( Буду искать.. | ||||||||
Yan > 20-05-2006 05:31:58 | ||||||||
Пока вот что нашел: если после кнопок в статусбаре поставить разделитель (separator), то кнопки пропадать не будут... | ||||||||
Dark-Demon > 20-05-2006 05:50:00 | ||||||||
>Да, и если в кнопке обе картинки задаются в коде, то заполнение Image получается излишним Я себе, кстати, сделал в firefox/chrome/ директорию local и добавил вот такой вот простенький манифест: И теперь ее содержимое доступно по chrome://local/content/* >надёжнее добавить кнопку в браузер ДО открытия окна настройки. >В окне настройки у всех кнопок отсутствуют котнекстные меню. >Всё-таки суть расширения не в наборе кнопок, а в возможности добавлять их самому. >Но возможно и нет, надо будет последить еще... | ||||||||
Dark-Demon > 20-05-2006 05:51:43 | ||||||||
>если после кнопок в статусбаре поставить разделитель (separator), то кнопки пропадать не будут | ||||||||
Крыска > 20-05-2006 10:16:27 | ||||||||
я страничку с кнопками сохранил в СкрапБуке. теперь при необходимости достать могу | ||||||||
Yan > 20-05-2006 12:14:20 | ||||||||
Dark-Demon
Это уже как автор кнопки напишет - так и будет. Можно и так.
А формат тогда какой применять? rdf? Что-то я не вижу преимуществ. Кнопки-то не по шаблону создаются, а через DOM.
Эх.. Если бы всё так просто было... Там совсем другая система. Потом, еще много вопросов появится с инициализацией кнопок - их нельзя будет инициализировать в окне настройки, потому что потом, при добавлении кнопки на тулбар, браузером используется метод cloneNode, а при его использовании пропадают все свойства (не атрибуты) кнопок. Получится, что человек в окне настройки кнопку создал, а отлаживать её всё равно только на панели можно.. Я все эти варианты уже рассматривал, ковырялся в browser.js, customizeToolbar.js, в AIOS, потом посмотрел на все эти хитрости, решил, что затраченные усилия результат не окупят, и сделал так, как есть сейчас.
А по мне, так наоборот, контекстное меню - самый удобный способ управления кнопками. Кнопку можно отредактировать в пару кликов, и тут же проверить работоспособность.
Это да, для того я собственно, и расширение писал. Но реализовывать в расширении свой собственный механизм обновлений - это уж слишком будет, IMHO. | ||||||||
Philip > 20-05-2006 15:25:54 | ||||||||
А если не секрет, чем преобразовывать ссылки custombuttons? | ||||||||
Yan > 20-05-2006 16:27:49 | ||||||||
Philip | ||||||||
Anton > 20-05-2006 16:50:38 | ||||||||
Окно - то, что надо. Даже свернуть/развернуть кнопочки появились (я хотел попросить, но забыл). | ||||||||
Philip > 20-05-2006 16:57:26 | ||||||||
Yan, нет, я про то, что если я захочу сделать подобную ссылку, как можно конвертировать например кириллицу в ASCII символы. | ||||||||
Yan > 20-05-2006 17:07:01 | ||||||||
Anton | ||||||||
Philip > 20-05-2006 20:43:02 | ||||||||
Yan, точно! я как-то и не заметил. Извиняюсь. Очень удобно! | ||||||||
Dark-Demon > 21-05-2006 00:39:55 | ||||||||
>Кнопки все хранятся в document.getElementById("navigator-toolbox").palette главного окна браузера.
проблема в том, что созданные тобой кнопки приходится добавлять на нее самостоятельно... ps: рулез, BBкодные кнопки работают в QuickNote! | ||||||||
Dark-Demon > 21-05-2006 01:49:07 | ||||||||
Кстати, иконки для кнопок я взял из QuickJava... | ||||||||
Yan > 21-05-2006 02:14:35 | ||||||||
Dark-Demon P.S. Сейчас выложу новую версию. | ||||||||
Yan > 21-05-2006 02:24:19 | ||||||||
Новая версия: Fixed: Dark-Demon
Ага, даже в адресной строке. | ||||||||
Крыска > 21-05-2006 11:52:26 | ||||||||
Yan | ||||||||
Yan > 21-05-2006 14:19:06 | ||||||||
Опять новая версия: Fixed: Крыска
Доделаю версию 0.0.1, и сделаю. А то мне пока тоже лень заморачиваться с новыми номерами для каждой версии и править update.rdf. | ||||||||
Крыска > 21-05-2006 14:49:16 | ||||||||
Yan
ну это понятно, но с такимми частыми апдейтами - автоапдейт будет лучшим способом обновления. | ||||||||
Yan > 21-05-2006 15:32:47 | ||||||||
Крыска | ||||||||
Dimanish > 21-05-2006 15:37:28 | ||||||||
Yan | ||||||||
Yan > 21-05-2006 15:46:04 | ||||||||
Dimanish Выделить код Код:var focusedWindow = content; var reference = focusedWindow.getSelection(); if (!reference.isCollapsed){ alert('выделения нет'); }else{ alert('выделение есть'); } | ||||||||
Yan > 21-05-2006 16:08:51 | ||||||||
Dimanish
Brrrr... Тут была дикая опечатка. Исправил. Извиняюсь... | ||||||||
Dark-Demon > 21-05-2006 16:26:29 | ||||||||
Dimanish, а что, дрегондроп не рулит? | ||||||||
Yan > 21-05-2006 16:36:16 | ||||||||
Dimanish | ||||||||
Dimanish > 21-05-2006 16:39:30 | ||||||||
Yan Выделить код Код:/*Initialization Code*/ this.onclick=function(event){ /*левая кнопка мыши*/ if (event.button==0){ var focusedWindow = content; var reference = focusedWindow.getSelection(); if (!reference.isCollapsed){ sbBrowserOverlay.execCapture(true, true, false, event.originalTarget.id); /*выделение есть*/ }else{ sbBrowserOverlay.execCapture(false,false,false, event.originalTarget.id); /*выделения нет*/ }} /*средняя кнопка мыши*/ if (event.button==1){ var focusedWindow = content; var reference = focusedWindow.getSelection(); if (!reference.isCollapsed){ sbBrowserOverlay.execCapture(true, true, true , event.originalTarget.id); }else{ sbBrowserOverlay.execCapture(false,false,true , event.originalTarget.id); }}} Все работает. | ||||||||
Крыска > 21-05-2006 16:42:25 | ||||||||
Dark-Demon ни капельки не рулит | ||||||||
Dimanish > 21-05-2006 16:45:54 | ||||||||
Dark-Demon | ||||||||
Крыска > 21-05-2006 16:47:33 | ||||||||
Так. я что-то не доехал. Вроде же сделали, что б окно можно было свернуть при создании кнопки... а не пашет. | ||||||||
Dimanish > 21-05-2006 16:55:02 | ||||||||
Крыска | ||||||||
Yan > 21-05-2006 17:08:01 | ||||||||
Dimanish
Ну я в такие дебри не полез. Выделить код Код:this.onclick=function(event){ if (event.button<=1){ var sel=!content.getSelection().isCollapsed; sbBrowserOverlay.execCapture(sel,sel,(event.button==1),event.originalTarget.id); } } Крыска
Ой, а про создание я и забыл... | ||||||||
Yan > 21-05-2006 17:14:57 | ||||||||
| ||||||||
Крыска > 21-05-2006 23:05:16 | ||||||||
Так. столько кнопок для скрапбук наворатили. Теперь объясните действие каждой, в чём отличия? | ||||||||
Yan > 21-05-2006 23:26:03 | ||||||||
Крыска Dimanish пишет
А различия в реализации. | ||||||||
Dimanish > 22-05-2006 10:53:33 | ||||||||
Хм, не уловил момент, но иногда кнопка Scrapbook (оба варианта) отказывается работать, лечится открытием окна редактирования с последующим нажатием "OK". | ||||||||
Yan > 23-05-2006 02:00:15 | ||||||||
Dimanish Тогда может быть станет что-то ясно.. | ||||||||
Dimanish > 23-05-2006 12:30:36 | ||||||||
Yan | ||||||||
Yan > 23-05-2006 21:21:45 | ||||||||
Dimanish
Вчера как раз сделал себе кнопку "External Applications" с выпадающим меню для запуска сторонних приложений: Выделить код Код:custombutton://External%20Applications%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACkElEQVR4XqXNa2jVZQAG8N//nJ3jmbs4l6XZhSGI0sWhQ9CCpKhcWljOYCLZDZEgsA+RFEQWCcEsF8vsy9yHLiKCGxgsVnZZzLm2BV2kYdgWJ7cyN6Zn7nLO8bwh9KmBX/rB8/F5niiE4H/r2qX+xLPaTu4TPt1mvG2LyfYnjaAYcdcQXS1PxBzOZnh4L0bI/M7oKL+ccD6W1Vt7VB1yKMwauPpcvd6m6+7BcWQxByVkphjKcbbd4cfa7MDUf0dilzM2Dg0gzfRl6e//sG84q7Ww0ExZDVVLyOdsbqn1IlKIAEDfHiH0C6FTSO/ViuW4teEFa3/rrSyEv4WZHuHI1lRI7vwod8u2lqeQQASxzBky3chy8002vVHnelw8OPXJK5svNEcqSMb5NXOnxTXriiZnHCqrb0nfsKV5OxKxfNLuzi9cchGlole3+ybT6UC5P28zXkEBw6xeNGDZYJ/b77s/mn/XqoX5bHYDSiMkv3zG5XvvVqQYU5iLxYhjEEmG0rxz7vn+gQdfW1UqGX1+sp++gY4YcoWk/EiCn0bJ1mAMP+MvXKL7K3q+lW7a/97TUTT8VmpJifLVa2QrylfGEKbH7Ow56nTXcQ2nWl2BoTGGKrGCsYvzfLbmyHlMd9RWN5bk4yZGZ4TxTCoCJFCO4o5dTi99VHnPuy4cG1u3oG7FDxpT+5294wk3zg0SybiRqci5HLraRYAIRYg3r7c15NUeiuq/O7Xs8YbUvMpocnkVySpGUYoJ/NguMXAmbTYJzMeiBRvffq7ykaYPyjYc6PX+YPDmSHCwO/g6hKjuwwKqzSZCEZIoRmXZA417vHwsxHd8PD1n7esNsYeapotW7n4JSyPXFiGOJEr/DVxBwOQ/YMb/YyJTjUkAAAAASUVORK5CYII%3D%5D%5B%5D%5Bvar%20apps%3Dnew%20Array%3B%0A//------menu%20items--------%0Aapps.push%28%5B%27Proxomitron%27%2C%27D%3A/Program%20files/ProxN45_nohlp/Proxomitron.exe%27%5D%29%3B%0Aapps.push%28%5B%27Notepad%27%2C%27c%3A/windows/notepad.exe%27%5D%29%3B%0Aapps.push%28%27separator%27%29%3B%0Aapps.push%28%5B%27Opera%27%2C%27D%3A/Program%20files/Opera9/Opera.exe%27%5D%29%3B%0Aapps.push%28%5B%27IE%27%2C%27c%3A/Program%20files/Internet%20Explorer/IEXPLORE.EXE%27%5D%29%3B%0A//------/menu%20items-------%0A%0Avar%20nMItem%3Dfunction%28label%2Cpath%2Cargs%2Cobj%29%7B%0A%20%20var%20m%3Ddocument.createElement%28%27menuitem%27%29%3B%0A%20%20m.setAttribute%28%27label%27%2Clabel%29%3B%0A%20%20m.f%3Dobj.startProcess.bind%28obj%29%3B%0A%20%20m.setAttribute%28%27oncommand%27%2C%27this.f%28%22%27+path+%27%22%2C%22%27+args+%27%22%29%27%29%3B%0A%20%20return%20m%3B%0A%7D%0Athis.startProcess%3Dfunction%28path%2Cargs%29%7B%0Avar%20file%20%3D%20Components.classes%5B%27@mozilla.org/file/local%3B1%27%5D%0A%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0Avar%20process%20%3D%20Components.classes%5B%27@mozilla.org/process/util%3B1%27%5D%0A%20%20%20%20.getService%28Components.interfaces.nsIProcess%29%3B%0A%20file.initWithPath%28path.replace%28/%5C//g%2C%27%5C%5C%5C%5C%27%29%29%3B%20%0A//%20file.launch%28%29%3B%0A%20process.init%28file%29%3B%0A%20process.run%28false%2C%5Bargs%5D%2C1%29%3B%20%0A%7D%0A%0Athis.orient%3D%22vertical%22%3B%0Avar%20mP%3Ddocument.createElement%28%27menupopup%27%29%3B%0Afor%20%28var%20i%3D0%3Bi%3Capps.length%3Bi++%29%7B%0A%20if%20%28apps%5Bi%5D%20%3D%3D%27separator%27%29%7B%0A%20%20mP.appendChild%28document.createElement%28%27menuseparator%27%29%29%3B%0A%20%7Delse%7B%0A%20%20if%20%28%21apps%5Bi%5D%20%5B2%5D%29%20apps%5Bi%5D%20%5B2%5D%3D%27%27%3B%0A%20%20mP.appendChild%28nMItem%28apps%5Bi%5D%20%5B0%5D%2Capps%5Bi%5D%20%5B1%5D%2Capps%5Bi%5D%20%5B2%5D%2Cthis%29%29%3B%0A%20%7D%0A%7D%0Athis.appendChild%28mP%29%3B%0A%0A (Для установки кнопки нужно выделить код и вставить его в адресную строку)
Вряд ли возможно что-то приемлемое. Кнопки на самом деле добавляются не в окно, а в "спец. хранилище", откуда окно их потом "подцепляет". Если писать своё окно с кнопками, то очень многие стандартные функции (типа drag'n'drop, сохранение положения на тулбарах) придется заново переписать. Лишний код, лишнее время, лишние баги.. К тому же совместимость с другими расширениями ухудшится (с тем же AIOS, например). | ||||||||
Dimanish > 23-05-2006 22:40:53 | ||||||||
Yan И еще, кнопка Scrapbook (и видимо остальные также) перестает работать после того, как открываешь окно "Настройка панелей инструментов", в котором находятся все кнопки. Стоит открыть окно редактирования кнопки и нажать "OK" или перезапустить браузер - все становится нормально. | ||||||||
Yan > 23-05-2006 23:09:41 | ||||||||
Dimanish
Выделить код Код:var path='C:\\Program Files\\Proxomitron\\Proxomitron.exe'; var arguments=['Dimanish.cfg']; 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); Также можно в предыдущей кнопке указать аргументы запуска третьим параметром: Выделить код Код:... apps.push(['Opera','D:/Program files/Opera9/Opera.exe','http://forum.mozilla.ru/viewtopic.php?pid=109351#p109351']); ...
Мда... Именно так. | ||||||||
Lain_13 > 24-05-2006 14:26:26 | ||||||||
Хм... отличная идея с плагином для кнопок но есть парочка мелких замечаний и вопросов: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1a2) Gecko/20060513 lolifox/0.2.2 | ||||||||
Lain_13 > 24-05-2006 16:08:47 | ||||||||
Вообщем, плюнул и перевел сам Ж). Выделить код Код:overlay chrome://browser/content/browser.xul chrome://custombuttons/content/overlay.xul content custombuttons chrome/custombuttons/content/custombuttons/ locale custombuttons en-US chrome/custombuttons/locale/en-US/custombuttons/ locale custombuttons ru-RU chrome/custombuttons/locale/ru-RU/custombuttons/ skin custombuttons classic/1.0 chrome/custombuttons/skin/classic/ style chrome://browser/content/browser.xul chrome://custombuttons/skin/custombuttons.css style chrome://global/content/customizeToolbar.xul chrome://custombuttons/skin/custombuttons.css 3. Файл chrome\custombuttons\locale\ru-RU\custombuttons\custombuttons.properties Выделить код Код:RemoveConfirm=Удалить кнопку "%s"? ButtonAddedAlert=Кнопка была успешно создана. Вы можете добавить её на любую панель инструментов через меню "Вид -> Панели инструментов -> Настроить..." InstallConfirm=Установить кнопку "%s"? ButtonErrors=Кнопка не может быть создана, потому что содержит ошибки! 4. Создать папку chrome\custombuttons\locale\en-US Выделить код Код:<!ENTITY custombuttons.viewMenu_Item "Add new button..."> <!ENTITY custombuttons.buttonPopup.edit "Edit..."> <!ENTITY custombuttons.buttonPopup.remove "Delete"> <!ENTITY custombuttons.buttonPopup.clone "Clone"> <!ENTITY custombuttons.buttonPopup.copyURI "Copy code to clipboard"> 7. Так же создать chrome\custombuttons\locale\en-US\custombuttons\custombuttons.properties Выделить код Код:RemoveConfirm=Delete button "%s"? ButtonAddedAlert=The button was successfully created.\nYou can add it to any toolbar via "View -> Toolbars -> Customize..." InstallConfirm=Do you wish to install "%s" button? ButtonErrors=The button can not be created because it contains errors! 8. И еще chrome\custombuttons\locale\en-US\custombuttons\editor.dtd Выделить код Код:<!ENTITY editor.dialog.title "Edit bitton"> <!ENTITY editor.name "Name:"> <!ENTITY editor.name.tooltiptext "Use this to create label and popup help for button"> <!ENTITY editor.image "Image:"> <!ENTITY editor.select "Browse..."> <!ENTITY editor.base64 "⇒ base64"> <!ENTITY editor.base64.tooltiptext "Convert image in base64 format (data:image/png;base64,...)"> <!ENTITY editor.code "Code"> <!ENTITY editor.code.tooltiptext "Executing when button pressed"> <!ENTITY editor.initCode "Initialize"> <!ENTITY editor.initCode.tooltiptext "Executing when browser loaded"> <!ENTITY editor.code.defaultValue "/*CODE*/"> <!ENTITY editor.initCode.defaultValue "/*Initialization Code*/"> Вот так вот примерно Ж). Люблю я длинные посты. Если есть ашЫпки в переводе, то исправьте и отпишите. З.Ы. Спасибо афтару за отличный плагин! Для чего это было??? Вообщем выкинул. | ||||||||
Yan > 24-05-2006 17:18:29 | ||||||||
Lain_13
Так не успел еще. Beta всё-таки. Пока отлов багов считаю более важным.
Попробую.
Наверное, кнопка-то работает, но панель не сохраняет положение. Так? Чтобы сохранялось, надо посложнее код писать..
Окно - вряд ли. Сложно. А вот разные параметры можно в коде кнопки через JS задавать.
Вообще, можно всё. P.S. За перевод спасибо. Я его немного подправлю, и потом добавлю. | ||||||||
stoneflash > 24-05-2006 17:48:43 | ||||||||
Yan | ||||||||
Yan > 24-05-2006 17:54:00 | ||||||||
stoneflash | ||||||||
Lain_13 > 26-05-2006 12:48:33 | ||||||||
При запуске лолифокса (напомню, это бонэхо) в консоли джаваскрипта выдается: Выделить код Код:Warning: Warning: Ignoring unrecognized chrome manifest instruction. Source File: file:///C:/Documents%20and%20Settings/YGolovanyov/Application%20Data/altimit-dev/lolifox/Profiles/yr0p9crz.default/extensions/custombuttons@xsms.org/chrome.manifest Line: 1 Интересно, в оригинальной версии это есть? или это я напортачил 1 строчку добавив. Хотя нет, я строку 1 не правил... значит ашипка где-то в ней... | ||||||||
Lain_13 > 26-05-2006 13:10:07 | ||||||||
Ошибку локализовал и исправил, дело в том, что 1я строка была пустой, а это, видимо, недопустимо. Просто удаляем переход на новую строку в первой строке и все будет нормально работать. установить мою модификацию (версия 0.0.1.1). Так же там изменен стиль оформления данных о плагине. Данные о дате и времени билда перемещены в окно информации о претензии. В окне расширений виден ТОЛЬКО номер билда. Кстати, обычно в названии плагина номер его версии вообще не пишут, для этого есть поле "версия". В дальнейем наверное информацию о версии и билде желательно размещать там и только там (иначе в окне информации о плагине заголовок просто НЕ ВЛЕЗАЕТ в окно). | ||||||||
Крыска > 26-05-2006 19:37:17 | ||||||||
Yan Просьба не путать, это не флейм. | ||||||||
Dark-Demon > 27-05-2006 13:37:33 | ||||||||
Крыска, а какие кнопочки интересуют? | ||||||||
Крыска > 27-05-2006 15:23:40 | ||||||||
Dark-Demon | ||||||||
Dark-Demon > 28-05-2006 01:03:07 | ||||||||
переделанный image show-hide. переключает между тремя режимами. Выделить код Код:custombutton://image%20show-hide%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC%5D%5Bswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0A%09case%201%3A%20this.PS.setIntPref%28this.pref%2C2%29%3Bbreak%3B%0A%09case%202%3A%20this.PS.setIntPref%28this.pref%2C3%29%3Bbreak%3B%0A%09case%203%3A%20this.PS.setIntPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%5D%5Bthis.pref%3D%27permissions.default.image%27%3B%0Athis.setState%3Dfunction%28%29%7B%0Aswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0Acase%201%3A%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg%3D%3D%27%3B%0A%20%7D%3B%20break%3B%0Acase%202%3A%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC%27%3B%0A%20%7D%3B%20break%3B%0Acase%203%3A%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACdklEQVR42mL4//8/g3zm6f8AAcQAYvz69es/QACBeSAOQAAx/Pnz5//Z20/+AwQQWOrHv///n7x89R8kCxBAYIEuXdb/f//+/X/w8oP/AAHEADMFphcggEAc1pdv3vyHCQIEEMPPnz//gwy8dPcpWAAggMCmnzp16v+Rqw/BAgABBDOD9RfQpncf3v1/9RahHSQHEEBwBd+BCh4DnXLv6Yv/Nx89/3/l/jOwIoAAAisAGXv9+vX/MOedvvn4//Frj8AKAAII7keQBAj//v37//M///8/+/0frAAggFD8gYxB4iAMEEBwBR8+vvv/5v1bYJC8/v/733+4IoAAgit4/e7t/+evX/9/9OIVskmsAAEEV/D01ev/D56//H/78Yv/1x48+//uD9gUVoAAYlizZg04pGAYxD8PjIbXUAUAAQRWMMmA9f+VK1f+dwK9CeKfuP7o/0uoAoAAAivo02f9f+7cuf9tOhAFh4DR9BziTVaAAAIrgIUBCIP4IEloOLACBBADzL8gDsixIC+C4uUnFP+AYmxhBMIAAYRhwE9wpL79/wYYLKCIfQEMmofPIUHz6e///2///EcxCCCAMAwA2fYCmKCeATWC0uFDYNDdf/by/50nL/5fBQbf5ftP/7//CzeEFSCAwJpB/iKErwJTz6V7T/9fBCZMJFewAgQQ3ABQAE0BBjcoyCcAQxUUsj16rP///fsHNuAcMG7OAFPZqRuP/79CMgAggOAGgCIRpBEUX6BkCYqWDh1WeMiD4u4oMBeAcsILJAMAAgjFgF6gjSDNII2gOG3RRhhw+MrD/wcvPfi//+J9eFIGGQAQQESHAa4kDxBgAMjdAQviliYiAAAAAElFTkSuQmCC%27%3B%0A%20%7D%3B%20break%3B%0A%7D%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B | ||||||||
Dark-Demon > 28-05-2006 01:56:23 | ||||||||
Крыска, а нафига несколько альбомов? там же можно дерево папок соорудить... Yan, что-то у тебя на сайте оформление полетело... черные буквы на тёмно синем фоне плохо смотрятся... | ||||||||
Крыска > 28-05-2006 12:04:43 | ||||||||
Dark-Demon
кхм... а тормоза не мешают? | ||||||||
Dimanish > 28-05-2006 14:09:29 | ||||||||
Yan
Proxomitron ругается: | ||||||||
petrovich > 28-05-2006 17:10:20 | ||||||||
Можно ещё добавить к сообщению кнопку "настроить сейчас", которая откроет окно с кнопками.
Имхо, скоро появятся странички с большим количеством кнопок, доступных для установки(эта например). И пользователю не придётся делать кнопки самому, только пользоватся ими. После установки, расширение не появляется в менеджере расширений. FF 2.0a3 Отличное расширение. | ||||||||
Cwer > 28-05-2006 23:15:27 | ||||||||
после того как настраиваю тулбар все меню остается серым (не активным) | ||||||||
Dark-Demon > 29-05-2006 00:25:42 | ||||||||
fit to width - выравнивает текущую страницу по ширине окна. Полезно для убирания горизонтального скролла на некоторых сайтах при открытом сайдбаре. Выделить код Код:custombutton://fit%20to%20width%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAFVBMVEX///8AzP8AAAAAzP8Amf8AAMwAAACWs84cAAAAB3RSTlMAd3f/////1grLHQAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA1LzI4LzA2GvIWfQAAAEpJREFUeJxjYMAErKGhgRCGi0uIAJjhbBxiCGO4AIUUgIzQ0AAmhiQgw9gkQI0hTRXECEpDiChAGExgXUAGxEAXlwCIFUDtWOwGAHj3ENTzyS3QAAAAAElFTkSuQmCC%5D%5Bvar%20s%3Dcontent.document.styleSheets%5B0%5D%3B%0As.insertRule%28%27*%20%7Bmin-width%3A0%21important%3B%20white-space%3Anormal%21important%3B%20margin%3A0%21important%3B%20padding%3A0%21important%3B%20float%3Anone%3B%7D%27%2C0%29%3B%0As.insertRule%28%27div%2Ctable%2Ctbody%2Ctr%2Ctd%2Cp%2Col%2Cul%2Ch1%2Ch2%2Ch3%2Chr%20%7Bmax-width%3A99%25%21important%3B%7D%27%2C0%29%3B%0As.insertRule%28%27table%2Ctbody%2Ctr%2Ctd%20%7Bdisplay%3Ablock%21important%7D%27%2C0%29%3B%0A%0Avar%20i%3D%20content.document.images%3B%0Afor%20%28var%20j%3D0%3B%20j%3Ci.length%3B%20j++%29%20%7B%0A%20%20var%20k%3D%20content.window.innerWidth/i%5Bj%5D.width*.95%3B%0A%20%20if%20%28k%3C1%29%20%7Bi%5Bj%5D.width*%3Dk%3B%20i%5Bj%5D.height*%3Dk%3B%7D%3B%0A%7D%0A%0A%0A%5D%5B Код еще довольно сырой, но в некоторых случаях помогает. В общем - тестируем и подкидываем идеи по улучшению | ||||||||
Yan > 29-05-2006 00:40:49 | ||||||||
Lain_13
Гм. Может это, с самодеятельностью чуток поаккуратнее? Dimanish
Мда, не знаю в чем дело. Другие программы нормально запускаются, а с проксомитроном у меня та же штука.. petrovich
Да, я так и хотел сделать.
Идея-то хорошая. Но реализовывать относительно долго. Пока на это время тратить не буду, может в следующих версиях сделаю.
Спасибо, посмотрю, что они там поменяли.. Cwer
Нет, должно быть всё нормально. | ||||||||
Yan > 29-05-2006 00:53:12 | ||||||||
Dimanish
Как исправить баг не знаю, но можно задавать обработчик onclick не через свойство, а через атрибут. Т.е. вместо:
писать надо так:
Так обработка onclick пропадать не будет. | ||||||||
petrovich > 29-05-2006 01:07:37 | ||||||||
Yan Ещё раз: отличная работа.
Подтверждаю. | ||||||||
Anton > 29-05-2006 02:39:39 | ||||||||
Dimanish пишет
Надо указать путь к конфигурационному файлу, т. е., если он в каталоге proxomitron'а, то
| ||||||||
WaRdeN69 > 29-05-2006 10:16:37 | ||||||||
А опишите собствено говоя для чего данное расширение | ||||||||
Yan > 29-05-2006 10:25:47 | ||||||||
Anton
Точно, спасибо. Странно, что из командной строки без пути запускается, а из FF-нет. petrovich
Не подтверждаю. Скачал FF 2.0a3, создал новый профиль - всё успешно установилось. Другие расширения ставятся успешно? WaRdeN69
Yan пишет
Что-то не ясно? | ||||||||
Anton > 29-05-2006 10:52:35 | ||||||||
У меня и из командной строки не запускается без указания пути. p.s. | ||||||||
petrovich > 30-05-2006 01:42:50 | ||||||||
Это мой косяк. Раньше в Firefox расширения сортировались соответственно порядку установки(первым поставил - первым в списке), теперь по алфовиту. Вот не туда и посмотрел. Всё нормально, расширение в списке присутствует. | ||||||||
Крыска > 01-06-2006 01:51:50 | ||||||||
так можно такое сотворить или нет? | ||||||||
Lain_13 > 01-06-2006 10:52:29 | ||||||||
petrovich пишет
Ну вот! Меня разбанили. Сам виноват, много оффтопика... з.ы.: я вообще выкладывал свой первый фикс для тех, кому нужна русско/английская версия... а вот как вышло... | ||||||||
Dark-Demon > 01-06-2006 15:57:42 | ||||||||
хотелось бы, чтобы при нажатии на bb-кнопки средней кнопкой в поле вставлялся текст из буфера обрамленный тегами. так вот, как получить содержимое буфера обмена? | ||||||||
Anton > 02-06-2006 12:37:16 | ||||||||
Dark-Demon пишет
http://forum.mozilla.ru/viewtopic.php?pid=77068#p77068 | ||||||||
Dark-Demon > 03-06-2006 12:11:26 | ||||||||
Спасибо, вот что получилось... Выделить код Код:custombutton://BB%3A%20%u043F%u043E%u043B%u0443%u0436%u0438%u0440%u043D%u044B%u0439%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAg4AAMIHEiwoMGDCBMaBMCwIcOEDQVGPDhx4sKHASwWdKhxI8aOAytivAhA4kiCHEEqXMmypcuBAQEAOw%3D%3D%5D%5B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bb%5D%22%3B%0Avar%20close%3D%22%5B/b%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%0Aif%28event.button%3D%3D1%29%0A%20%20%7B%0Avar%20clip%20%3D%20Components.classes%5B%22@mozilla.org/widget/clipboard%3B1%22%5D.getService%28Components.interfaces.nsIClipboard%29%3B%0Avar%20trans%20%3D%20Components.classes%5B%22@mozilla.org/widget/transferable%3B1%22%5D.createInstance%28Components.interfaces.nsITransferable%29%3B%0Atrans.addDataFlavor%28%22text/unicode%22%29%3B%0Aclip.getData%28trans%2Cclip.kGlobalClipboard%29%3B%0Avar%20str%20%3D%20new%20Object%28%29%3B%0Avar%20strLength%20%3D%20new%20Object%28%29%3B%0Atrans.getTransferData%28%22text/unicode%22%2Cstr%2CstrLength%29%3B%0Aif%20%28str%29%20str%20%3D%20str.value.QueryInterface%28Components.interfaces.nsISupportsString%29%3B%0Aif%20%28str%29%20pastetext%20%3D%20str.data.substring%280%2CstrLength.value%20/%202%29%3B%0A%20%20%7D%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B Выделить код Код:custombutton://BB%3A%20%u043F%u043E%u0434%u0447%u0435%u0440%u043A%u043D%u0443%u0442%u044B%u0439%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAHt7ewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAQABAAAAg+AAUIHEiwoMGDBwEoBCBgIcOEDxtGNKhwYEWEFyUi1CgwI8WIHgtmDElQYQABAUiWdLix5UeHC13KnElTYEAAOw%3D%3D%5D%5B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bu%5D%22%3B%0Avar%20close%3D%22%5B/u%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%0Aif%28event.button%3D%3D1%29%0A%20%20%7B%0Avar%20clip%20%3D%20Components.classes%5B%22@mozilla.org/widget/clipboard%3B1%22%5D.getService%28Components.interfaces.nsIClipboard%29%3B%0Avar%20trans%20%3D%20Components.classes%5B%22@mozilla.org/widget/transferable%3B1%22%5D.createInstance%28Components.interfaces.nsITransferable%29%3B%0Atrans.addDataFlavor%28%22text/unicode%22%29%3B%0Aclip.getData%28trans%2Cclip.kGlobalClipboard%29%3B%0Avar%20str%20%3D%20new%20Object%28%29%3B%0Avar%20strLength%20%3D%20new%20Object%28%29%3B%0Atrans.getTransferData%28%22text/unicode%22%2Cstr%2CstrLength%29%3B%0Aif%20%28str%29%20str%20%3D%20str.value.QueryInterface%28Components.interfaces.nsISupportsString%29%3B%0Aif%20%28str%29%20pastetext%20%3D%20str.data.substring%280%2CstrLength.value%20/%202%29%3B%0A%20%20%7D%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B Выделить код Код:custombutton://BB%3A%20%u043A%u0443%u0440%u0441%u0438%u0432%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAHt7e4SEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAgyAAcIHEiwoMGDCBMqBMCQoUKBDAU8HBDA4USGASZWBDBxAEaNFh9+XNgwZMeTKFMqDAgAOw%3D%3D%5D%5B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bi%5D%22%3B%0Avar%20close%3D%22%5B/i%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%0Aif%28event.button%3D%3D1%29%0A%20%20%7B%0Avar%20clip%20%3D%20Components.classes%5B%22@mozilla.org/widget/clipboard%3B1%22%5D.getService%28Components.interfaces.nsIClipboard%29%3B%0Avar%20trans%20%3D%20Components.classes%5B%22@mozilla.org/widget/transferable%3B1%22%5D.createInstance%28Components.interfaces.nsITransferable%29%3B%0Atrans.addDataFlavor%28%22text/unicode%22%29%3B%0Aclip.getData%28trans%2Cclip.kGlobalClipboard%29%3B%0Avar%20str%20%3D%20new%20Object%28%29%3B%0Avar%20strLength%20%3D%20new%20Object%28%29%3B%0Atrans.getTransferData%28%22text/unicode%22%2Cstr%2CstrLength%29%3B%0Aif%20%28str%29%20str%20%3D%20str.value.QueryInterface%28Components.interfaces.nsISupportsString%29%3B%0Aif%20%28str%29%20pastetext%20%3D%20str.data.substring%280%2CstrLength.value%20/%202%29%3B%0A%20%20%7D%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B Выделить код Код:custombutton://BB%3A%20%u0446%u0438%u0442%u0430%u0442%u0430%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACCklEQVR42mL8//8/AyUAIICYGCgEAAFEsQEAAUSxAQABxAIiurq6OM+cOZPPx8fHaWZm1rp8+fLEDx8+aGVmZrZKSEgwT5s2rRPIFwKyj/38+fPbmzdvvHh5eV/v27cvGiCAwAY8fPgwfvfu3Q3e3t5Vx48fD7hy5UonNzf3opcvX34FSiuePHkyEGgAj6ys7P9v3759fPv2rSsPD88nkF6AAAJ7YceOHbFSUlLb+fn5Jx09ejRORkbmkomJSVVtbe1XZmZmVmBMMYLUsbOzf/n37x9YDysr63cQDRBAYM6TJ09kfv/+fXbz5s18QNO1vn//fnHNmjVfQHKioqLP/fz85ggKCr4DGsAVEhKyXkND4yJQPTtIHiCAGKDp4BnQSYcUFBSagBoeA/k3gC5Ki42N5QXJL1y4kEdVVfWks7PzBhA/NTW1AqjuHYgNEECwWPj79etXWyYmpkigLT+AfHU2NrbYI0eO8IEkga7i//HjhxQQXwfxgeJqwAB9BWIDBBDMAHagZoa/f/8yAp3GBhL4/Pnz36CgoH8LFizgX7Vq1XSggQympqbLBQQEEq5fvx6hq6u7AqQOIIDAsQAMtBPAwBIGmvoAaAsH0GnvhYWFL8rJyf3g5OQUBrrun7q6egGQfQsY1VE6OjozgXITQXoBAoiR0rwAEEAUp0SAAKLYAIAAotgAgAADANuDzfQSUmlqAAAAAElFTkSuQmCC%5D%5B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bquote%5D%22%3B%0Avar%20close%3D%22%5B/quote%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%0Aif%28event.button%3D%3D1%29%0A%20%20%7B%0Avar%20clip%20%3D%20Components.classes%5B%22@mozilla.org/widget/clipboard%3B1%22%5D.getService%28Components.interfaces.nsIClipboard%29%3B%0Avar%20trans%20%3D%20Components.classes%5B%22@mozilla.org/widget/transferable%3B1%22%5D.createInstance%28Components.interfaces.nsITransferable%29%3B%0Atrans.addDataFlavor%28%22text/unicode%22%29%3B%0Aclip.getData%28trans%2Cclip.kGlobalClipboard%29%3B%0Avar%20str%20%3D%20new%20Object%28%29%3B%0Avar%20strLength%20%3D%20new%20Object%28%29%3B%0Atrans.getTransferData%28%22text/unicode%22%2Cstr%2CstrLength%29%3B%0Aif%20%28str%29%20str%20%3D%20str.value.QueryInterface%28Components.interfaces.nsISupportsString%29%3B%0Aif%20%28str%29%20pastetext%20%3D%20str.data.substring%280%2CstrLength.value%20/%202%29%3B%0A%20%20%7D%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B Выделить код Код:custombutton://BB%3A%20%u043A%u043E%u0434%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA60lEQVR42mL8//8/AyUAIICYGCgEAAFEsQEAAYQNKQHxfyieABWrRRJTQlYMEEBYNc9YtR2MoRoYsIjBDQEIIKyavTOb0RWC5ZJrJ2PIAQQQTs2g2EHH2AwBCCCQIIeNkweGzTgMwHAJQACBBLkUdC3BArqOgSDBSAaIE7AZADdk6dYD/+W0Tf8DBBAoGhk5GX+AZbx8A0DUMjwhDRK/C9TMsGzLYYZHV08zAAQQiqkgV5T3LcQV0nCbkb0KEEAYCnAYglMzQABhjUo0QxjwaQYIIEIpMQcqNgFXSgQIIEZKcyNAAFGcmQACDAB0jLqYK4uYbwAAAABJRU5ErkJggg%3D%3D%5D%5B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bcode%5D%22%3B%0Avar%20close%3D%22%5B/code%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%0Aif%28event.button%3D%3D1%29%0A%20%20%7B%0Avar%20clip%20%3D%20Components.classes%5B%22@mozilla.org/widget/clipboard%3B1%22%5D.getService%28Components.interfaces.nsIClipboard%29%3B%0Avar%20trans%20%3D%20Components.classes%5B%22@mozilla.org/widget/transferable%3B1%22%5D.createInstance%28Components.interfaces.nsITransferable%29%3B%0Atrans.addDataFlavor%28%22text/unicode%22%29%3B%0Aclip.getData%28trans%2Cclip.kGlobalClipboard%29%3B%0Avar%20str%20%3D%20new%20Object%28%29%3B%0Avar%20strLength%20%3D%20new%20Object%28%29%3B%0Atrans.getTransferData%28%22text/unicode%22%2Cstr%2CstrLength%29%3B%0Aif%20%28str%29%20str%20%3D%20str.value.QueryInterface%28Components.interfaces.nsISupportsString%29%3B%0Aif%20%28str%29%20pastetext%20%3D%20str.data.substring%280%2CstrLength.value%20/%202%29%3B%0A%20%20%7D%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B Выделить код Код:custombutton://BB%3A%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAABpUlEQVR42p2TP0gbURzHPxebwyEJVBw6aKZAxOUcbYYOpS0IRSgljVBMOLgxZA64SBY30RDp0HuEDraBQodChrQI/UNj3XRRoreYQfo3NF4kSo9ct4dHcsX4pvd77/v9/B7vva8CUKlU3E6nw7DDMAxFMU3TTSQSxGKxocyWZVGv1wkAvmYhBJqmoaoqmqYhhMBxHLrdrvTc8OsghODt6zXq7zZQ1RG6Z39YNPI4jkM6nZa6gB+gWCzy8sUGI73vXPz+SOB8j2crjyiVSh6dPIGqqn2Qm5P3aO0vyzoSHqXRaAwGAHxb0nFOmrKeKG8xNr3MZmmBubtTnNrnxONxf4Bz0uTv8ZFH8OnrLndmZ3j/ymD1+Wey2axnP/C/pyoUCuwc/gQgV/jCw8c5MpnM1QDlZpv780/40bLR8+tEo1F0Xe/T+QJ+PXjKwXELgPFbk9RqNarVap/OcwcT5S05317N8ebDvqz1/DrJZJJ2uz0YcDkLoVCI2zNTV/rSEuC6rly0bXuguNfrARAMBr0Ay7KuFaZIJIICYJqmO2yUw+EwqVRK+QdtIZCYwfQIRQAAAABJRU5ErkJggg%3D%3D%5D%5B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bimg%5D%22%3B%0Avar%20close%3D%22%5B/img%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%0Aif%28event.button%3D%3D1%29%0A%20%20%7B%0Avar%20clip%20%3D%20Components.classes%5B%22@mozilla.org/widget/clipboard%3B1%22%5D.getService%28Components.interfaces.nsIClipboard%29%3B%0Avar%20trans%20%3D%20Components.classes%5B%22@mozilla.org/widget/transferable%3B1%22%5D.createInstance%28Components.interfaces.nsITransferable%29%3B%0Atrans.addDataFlavor%28%22text/unicode%22%29%3B%0Aclip.getData%28trans%2Cclip.kGlobalClipboard%29%3B%0Avar%20str%20%3D%20new%20Object%28%29%3B%0Avar%20strLength%20%3D%20new%20Object%28%29%3B%0Atrans.getTransferData%28%22text/unicode%22%2Cstr%2CstrLength%29%3B%0Aif%20%28str%29%20str%20%3D%20str.value.QueryInterface%28Components.interfaces.nsISupportsString%29%3B%0Aif%20%28str%29%20pastetext%20%3D%20str.data.substring%280%2CstrLength.value%20/%202%29%3B%0A%20%20%7D%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B Выделить код Код:custombutton://BB%3A%20%u0433%u0438%u043F%u0435%u0440%u0441%u0441%u044B%u043B%u043A%u0430%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAKIAAGZmZgAAAP///8zMzP///////////////yH5BAEAAAQALAAAAAAQABAAAAMxSLrc/jBKCYK16lpAqhBDaH3hEHimpoqBEJhkWJkpq17iXFZnaXK8S0bDmRiPyGQyAQA7%5D%5B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Burl%5D%22%3B%0Avar%20close%3D%22%5B/url%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%0Aif%28event.button%3D%3D1%29%0A%20%20%7B%0Avar%20clip%20%3D%20Components.classes%5B%22@mozilla.org/widget/clipboard%3B1%22%5D.getService%28Components.interfaces.nsIClipboard%29%3B%0Avar%20trans%20%3D%20Components.classes%5B%22@mozilla.org/widget/transferable%3B1%22%5D.createInstance%28Components.interfaces.nsITransferable%29%3B%0Atrans.addDataFlavor%28%22text/unicode%22%29%3B%0Aclip.getData%28trans%2Cclip.kGlobalClipboard%29%3B%0Avar%20str%20%3D%20new%20Object%28%29%3B%0Avar%20strLength%20%3D%20new%20Object%28%29%3B%0Atrans.getTransferData%28%22text/unicode%22%2Cstr%2CstrLength%29%3B%0Aif%20%28str%29%20str%20%3D%20str.value.QueryInterface%28Components.interfaces.nsISupportsString%29%3B%0Aif%20%28str%29%20pastetext%20%3D%20str.data.substring%280%2CstrLength.value%20/%202%29%3B%0A%20%20%7D%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B по поводу кнопки запуска внешний приложений - не мешало бы пути к ним брать из реестра... | ||||||||
Anton > 03-06-2006 17:59:30 | ||||||||
Имхо, в расширении необходимо сделать common-секцию для скриптов, т. е., скриптов, общих для всех кнопок. Две кнопки для преобразования текстовых ссылок 'custombutton://' в реальные ссылки: Выделить код Код:custombutton://%u041F%u0440%u0435%u043E%u0431%u0440%u0430%u0437%u043E%u0432%u0430%u0442%u044C%20%u043A%u043E%u0434%u044B%20custombuttons%20%u0432%20%u0441%u0441%u044B%u043B%u043A%u0438%20%28%u0441%u0442%u0440%u043E%u0433%u043E%u0435%20%u043F%u0440%u0435%u043E%u0431%u0440%u0430%u0437%u043E%u0432%u0430%u043D%u0438%u0435%29%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBgMQBxbn9GxKAAAAB3RJTUUH1gYDEBMzV1+MKAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADNQTFRF////mZmZMzMzZmZmzMzM/8yZ/5mZ/8xm/8wA///M/8wz/8zMzJmZ/5kA/5lmZmYz/5kzCyXdoQAAAAF0Uk5TAEDm2GYAAAB6SURBVHjaTc5bFsIgDATQCZOIJdZ2/6t1oNHKRwj3kAcaeZAVDACRXdcWAfiEI/rogT5GFCg9E3kqLGDu+1slmVXCiHwBNvMLsA7d/IY5QEO9YNMYNdRCVj/6c24iaQURD1xCB5qZ2uEWPVevryj+ARvXOj+oxBrrCD73jALvj0npfgAAAABJRU5ErkJggg%3D%3D%5D%5Bvar%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0Avar%20cbcodes%20%3D%20doc.%20evaluate%0A%28%0A%20%20%20%20%22//text%28%29%5Bstarts-with%28.%2C%27custombutton%3A//%27%29%5D%22%2C%0A%20%20%20%20doc%2C%20null%2C%20XPathResult.%20ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%0A%29%3B%0Avar%20i%2C%20cn%2C%20cnt%2C%20cnf%2C%20nn%2C%20t%2C%20titletext%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20cbcodes.%20snapshotLength%3B%20i++%29%0A%7B%0A%20%20%20%20cn%20%3D%20cbcodes.%20snapshotItem%20%28i%29%3B%0A%20%20%20%20cnt%20%3D%20cn.%20textContent%3B%0A%20%20%20%20cnf%20%3D%20cnt.%20split%20%28%22%255D%255B%22%29%3B%0A%20%20%20%20if%20%28cnf.%20length%20%21%3D%204%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20titletext%20%3D%20unescape%20%28cnf%20%5B0%5D.%20replace%20%28/custombutton%3A%5C/%5C//%2C%20%22%22%29%29%3B%0A%20%20%20%20title%20%3D%20title.%20replace%20%28/%25%28u.%7B4%7D%29/g%2C%20%22%5C%241%22%29%3B%0A%20%20%20%20var%20converter%20%3D%20Components.classes%5B%27@mozilla.org/intl/texttosuburi%3B1%27%5D.createInstance%28Components.interfaces.nsITextToSubURI%29%3B%0A%20%20%20%20title%20%3D%20converter.UnEscapeAndConvert%28%27windows-1251%27%2C%20title%29%3B%0A%20%20%20%20nn%20%3D%20doc.%20createElement%20%28%22a%22%29%3B%0A%20%20%20%20nn.%20setAttribute%20%28%22href%22%2C%20cn.%20textContent%29%3B%0A%20%20%20%20t%20%3D%20doc.%20createElement%20%28%22img%22%29%3B%0A%20%20%20%20t.%20setAttribute%20%28%22src%22%2C%20unescape%20%28cnf%20%5B1%5D%29%20%7C%7C%20%22chrome%3A//custombuttons/skin/button.png%22%29%3B%0A%20%20%20%20t.%20setAttribute%20%28%22class%22%2C%20%22toolbarimg%22%29%3B%0A%20%20%20%20t.%20setAttribute%20%28%22title%22%2C%20titletext%29%3B%0A%20%20%20%20t.%20setAttribute%20%28%22alt%22%2C%20titletext%29%3B%0A%20%20%20%20nn.%20appendChild%20%28t%29%3B%0A%20%20%20%20cn.%20parentNode.%20replaceChild%20%28nn%2C%20cn%29%3B%0A%7D%5D%5B Выделить код Код:custombutton://%u041F%u0440%u0435%u043E%u0431%u0440%u0430%u0437%u043E%u0432%u0430%u0442%u044C%20%u043A%u043E%u0434%u044B%20custombuttons%20%u0432%20%u0441%u0441%u044B%u043B%u043A%u0438%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBgMQBxbn9GxKAAAAB3RJTUUH1gYDEBMzV1+MKAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADNQTFRF////mZmZMzMzZmZmzMzM/8yZ/5mZ/8xm/8wA///M/8wz/8zMzJmZ/5kA/5lmZmYz/5kzCyXdoQAAAAF0Uk5TAEDm2GYAAAB6SURBVHjaTc5bFsIgDATQCZOIJdZ2/6t1oNHKRwj3kAcaeZAVDACRXdcWAfiEI/rogT5GFCg9E3kqLGDu+1slmVXCiHwBNvMLsA7d/IY5QEO9YNMYNdRCVj/6c24iaQURD1xCB5qZ2uEWPVevryj+ARvXOj+oxBrrCD73jALvj0npfgAAAABJRU5ErkJggg%3D%3D%5D%5Bvar%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0Avar%20cbcodes%20%3D%20doc.%20evaluate%0A%28%0A%20%20%20%20%22//text%28%29%5Bcontains%28.%2C%27custombutton%3A//%27%29%5D%22%2C%0A%20%20%20%20doc%2C%20null%2C%20XPathResult.%20ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%0A%29%3B%0Avar%20i%2C%20j%2C%20cn%2C%20cnt%2C%20cnf%2C%20nn%2C%20t%2C%20titletext%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20cbcodes.%20snapshotLength%3B%20i++%29%0A%7B%0A%20%20%20%20cn%20%3D%20cbcodes.%20snapshotItem%20%28i%29%3B%0A%20%20%20%20cnt%20%3D%20cn.%20textContent.%20match%20%28/custombutton%3A%5C/%5C/.+/%29%3B%0A%20%20%20%20for%20%28j%20%3D%200%3B%20j%20%3C%20cnt.%20length%3B%20j++%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20cnf%20%3D%20cnt%20%5Bj%5D.%20split%20%28%22%255D%255B%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28cnf.%20length%20%21%3D%204%29%0A%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20titletext%20%3D%20unescape%20%28cnf%20%5B0%5D.%20replace%20%28/custombutton%3A%5C/%5C//%2C%20%22%22%29%29%3B%0A%20%20%20%20%20%20%20%20title%20%3D%20title.%20replace%20%28/%25%28u.%7B4%7D%29/g%2C%20%22%5C%241%22%29%3B%0A%20%20%20%20%20%20%20%20var%20converter%20%3D%20Components.classes%5B%27@mozilla.org/intl/texttosuburi%3B1%27%5D.createInstance%28Components.interfaces.nsITextToSubURI%29%3B%0A%20%20%20%20%20%20%20%20title%20%3D%20converter.UnEscapeAndConvert%28%27windows-1251%27%2C%20title%29%3B%0A%20%20%20%20%20%20%20%20nn%20%3D%20doc.%20createElement%20%28%22a%22%29%3B%0A%20%20%20%20%20%20%20%20nn.%20setAttribute%20%28%22href%22%2C%20cn.%20textContent%29%3B%0A%20%20%20%20%20%20%20%20t%20%3D%20doc.%20createElement%20%28%22img%22%29%3B%0A%20%20%20%20%20%20%20%20t.%20setAttribute%20%28%22src%22%2C%20unescape%20%28cnf%20%5B1%5D%29%20%7C%7C%20%22chrome%3A//custombuttons/skin/button.png%22%29%3B%0A%20%20%20%20%20%20%20%20t.%20setAttribute%20%28%22class%22%2C%20%22toolbarimg%22%29%3B%0A%20%20%20%20%20%20%20%20t.%20setAttribute%20%28%22title%22%2C%20titletext%29%3B%0A%20%20%20%20%20%20%20%20t.%20setAttribute%20%28%22alt%22%2C%20titletext%29%3B%0A%20%20%20%20%20%20%20%20nn.%20appendChild%20%28t%29%3B%0A%20%20%20%20%20%20%20%20if%20%28j%20%3D%3D%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20cn.%20parentNode.%20replaceChild%20%28nn%2C%20cn%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20cn.%20parentNode.%20appendChild%20%28nn%29%3B%0A%20%20%20%20%7D%0A%7D%5D%5B первая работает только в тех текстовых узлах, текст которых начинается с 'custombutton://' (как в этой теме), т. е. но не в вторая кнопка ищет все 'custombutton://' в текстовых узлах и заменяет соответствующие текстовые узлы набором ссылок. скриншот, показывающий пример работы: http://forum.mozilla.ru/uploaded/cbtext … ertor2.png | ||||||||
Dimanish > 03-06-2006 21:27:19 | ||||||||
Неплохо бы прикрутить поддержку Thunderbird. | ||||||||
Lain_13 > 05-06-2006 13:10:10 | ||||||||
Anton, за кнопки спасибо. Но есть бага. Твой же собственный пост они не обработали! (предидущий про ббкод отлично). В чем же фокус? | ||||||||
Anton > 05-06-2006 13:54:12 | ||||||||
Lain_13 пишет
Хм. Не знаю. У меня всё работает, вот скрин: http://forum.mozilla.ru/uploaded/cbtext … ertor3.png. Подробней можно ? | ||||||||
Dark-Demon > 05-06-2006 14:24:30 | ||||||||
Anton, прикольно Yan, сделай пожалуйста шрифт в редакторе моноширинный, а то сейчас туда код набивать очень напряжно... | ||||||||
stoneflash > 08-06-2006 08:38:15 | ||||||||
А нельзя ли как-нибудь сделать кнопочку для запуска jar-файла из chrome? | ||||||||
Dark-Demon > 09-06-2006 01:17:13 | ||||||||
stoneflash, а закладки не годятся? | ||||||||
Anton > 10-06-2006 04:03:50 | ||||||||
Простенький редактор кода для расширения: http://forum.mozilla.ru/uploaded/codeeditor.zip Выделить код Код:textbox#code,textbox#initCode { -moz-binding: url("file://P:/xul/codeeditor.xml#code_editor_binding"); font-family: monospace !important; } Клавиши:
Кстати, к вопросу
недавно обнаружил в browser.js функцию readFromClipboard. Так что, просто Кнопка, загружающая с помощью ILO только те изображения, которые попали в выделение: Выделить код Код:custombutton://ILO%3A%20load%20images%20from%20selection%5D%5B%5D%5Bvar%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0Avar%20sel%20%3D%20doc.%20defaultView.%20getSelection%20%28%29%3B%0Avar%20r%20%3D%20sel.%20getRangeAt%20%280%29%3B%0Avar%20imgs%20%3D%20doc.%20evaluate%0A%28%0A%09%22//img%22%2C%0A%09doc%2C%20null%2C%20XPathResult.%20ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%0A%29%3B%0Avar%20i%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20imgs.%20snapshotLength%3B%20i++%29%0A%09if%20%28r.%20intersectsNode%20%28imgs.%20snapshotItem%20%28i%29%29%29%0A%09%09ILO.%20loadImg%20%28imgs.%20snapshotItem%20%28i%29%29%3B%5D%5B | ||||||||
Lain_13 > 10-06-2006 22:46:31 | ||||||||
Anton пишет
вот так вот у меня эта бага выглядит... | ||||||||
Anton > 11-06-2006 10:27:47 | ||||||||
Lain_13 пишет
Поэкспериментировал с настройками браузера, ILO, форума - воспроизвести не удаётся. Так что никаких идей пока нет. | ||||||||
Yan > 11-06-2006 23:06:06 | ||||||||
Anton
Класс. Очень удобно. Спасибо. Не против, что я включу твой код в расширение? Новый build. P.S. Сдавал сессию, времени не было.. | ||||||||
Anton > 11-06-2006 23:27:24 | ||||||||
Yan пишет
Конечно не против, забирай. Насчёт преобразованием ссылок надо подумать - имхо, лучше не делать автоматическое распознавание, а если делать, то предусмотреть в настройках возможность его отключения, т. к. возможно на больших мегабайтных страницах будут "тормоза". | ||||||||
Yan > 11-06-2006 23:56:41 | ||||||||
Anton | ||||||||
Dark-Demon > 12-06-2006 00:19:10 | ||||||||
Рулёз, обновил (кода меньше=>должно быть ещё быстрее; вроде исправил глюк с "забыванием", когда кнопка переставала что-либо делать и требовала открытия редактора и последующего его закрытия кнопкой ОК): Выделить код Код:custombutton://BB%3A%20%u043F%u043E%u043B%u0443%u0436%u0438%u0440%u043D%u044B%u0439%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAg4AAMIHEiwoMGDCBMaBMCwIcOEDQVGPDhx4sKHASwWdKhxI8aOAytivAhA4kiCHEEqXMmypcuBAQEAOw%3D%3D%5D%5Bthis.onclick%28%29%3B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bb%5D%22%3B%0Avar%20close%3D%22%5B/b%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B U Выделить код Код:custombutton://BB%3A%20%u043F%u043E%u0434%u0447%u0435%u0440%u043A%u043D%u0443%u0442%u044B%u0439%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAHt7ewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAQABAAAAg+AAUIHEiwoMGDBwEoBCBgIcOEDxtGNKhwYEWEFyUi1CgwI8WIHgtmDElQYQABAUiWdLix5UeHC13KnElTYEAAOw%3D%3D%5D%5Bthis.onclick%28%29%3B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bu%5D%22%3B%0Avar%20close%3D%22%5B/u%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B I Выделить код Код:custombutton://BB%3A%20%u043A%u0443%u0440%u0441%u0438%u0432%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAHt7e4SEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAgyAAcIHEiwoMGDCBMqBMCQoUKBDAU8HBDA4USGASZWBDBxAEaNFh9+XNgwZMeTKFMqDAgAOw%3D%3D%5D%5Bthis.onclick%28%29%3B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bi%5D%22%3B%0Avar%20close%3D%22%5B/i%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B QUOTE Выделить код Код:custombutton://BB%3A%20%u0446%u0438%u0442%u0430%u0442%u0430%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACCklEQVR42mL8//8/AyUAIICYGCgEAAFEsQEAAUSxAQABxAIiurq6OM+cOZPPx8fHaWZm1rp8+fLEDx8+aGVmZrZKSEgwT5s2rRPIFwKyj/38+fPbmzdvvHh5eV/v27cvGiCAwAY8fPgwfvfu3Q3e3t5Vx48fD7hy5UonNzf3opcvX34FSiuePHkyEGgAj6ys7P9v3759fPv2rSsPD88nkF6AAAJ7YceOHbFSUlLb+fn5Jx09ejRORkbmkomJSVVtbe1XZmZmVmBMMYLUsbOzf/n37x9YDysr63cQDRBAYM6TJ09kfv/+fXbz5s18QNO1vn//fnHNmjVfQHKioqLP/fz85ggKCr4DGsAVEhKyXkND4yJQPTtIHiCAGKDp4BnQSYcUFBSagBoeA/k3gC5Ki42N5QXJL1y4kEdVVfWks7PzBhA/NTW1AqjuHYgNEECwWPj79etXWyYmpkigLT+AfHU2NrbYI0eO8IEkga7i//HjhxQQXwfxgeJqwAB9BWIDBBDMAHagZoa/f/8yAp3GBhL4/Pnz36CgoH8LFizgX7Vq1XSggQympqbLBQQEEq5fvx6hq6u7AqQOIIDAsQAMtBPAwBIGmvoAaAsH0GnvhYWFL8rJyf3g5OQUBrrun7q6egGQfQsY1VE6OjozgXITQXoBAoiR0rwAEEAUp0SAAKLYAIAAotgAgAADANuDzfQSUmlqAAAAAElFTkSuQmCC%5D%5Bthis.onclick%28%29%3B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bquote%5D%22%3B%0Avar%20close%3D%22%5B/quote%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B CODE Выделить код Код:custombutton://BB%3A%20%u043A%u043E%u0434%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA60lEQVR42mL8//8/AyUAIICYGCgEAAFEsQEAAYQNKQHxfyieABWrRRJTQlYMEEBYNc9YtR2MoRoYsIjBDQEIIKyavTOb0RWC5ZJrJ2PIAQQQTs2g2EHH2AwBCCCQIIeNkweGzTgMwHAJQACBBLkUdC3BArqOgSDBSAaIE7AZADdk6dYD/+W0Tf8DBBAoGhk5GX+AZbx8A0DUMjwhDRK/C9TMsGzLYYZHV08zAAQQiqkgV5T3LcQV0nCbkb0KEEAYCnAYglMzQABhjUo0QxjwaQYIIEIpMQcqNgFXSgQIIEZKcyNAAFGcmQACDAB0jLqYK4uYbwAAAABJRU5ErkJggg%3D%3D%5D%5Bthis.onclick%28%29%3B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bcode%5D%22%3B%0Avar%20close%3D%22%5B/code%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B IMG Выделить код Код:custombutton://BB%3A%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAABpUlEQVR42p2TP0gbURzHPxebwyEJVBw6aKZAxOUcbYYOpS0IRSgljVBMOLgxZA64SBY30RDp0HuEDraBQodChrQI/UNj3XRRoreYQfo3NF4kSo9ct4dHcsX4pvd77/v9/B7vva8CUKlU3E6nw7DDMAxFMU3TTSQSxGKxocyWZVGv1wkAvmYhBJqmoaoqmqYhhMBxHLrdrvTc8OsghODt6zXq7zZQ1RG6Z39YNPI4jkM6nZa6gB+gWCzy8sUGI73vXPz+SOB8j2crjyiVSh6dPIGqqn2Qm5P3aO0vyzoSHqXRaAwGAHxb0nFOmrKeKG8xNr3MZmmBubtTnNrnxONxf4Bz0uTv8ZFH8OnrLndmZ3j/ymD1+Wey2axnP/C/pyoUCuwc/gQgV/jCw8c5MpnM1QDlZpv780/40bLR8+tEo1F0Xe/T+QJ+PXjKwXELgPFbk9RqNarVap/OcwcT5S05317N8ebDvqz1/DrJZJJ2uz0YcDkLoVCI2zNTV/rSEuC6rly0bXuguNfrARAMBr0Ay7KuFaZIJIICYJqmO2yUw+EwqVRK+QdtIZCYwfQIRQAAAABJRU5ErkJggg%3D%3D%5D%5Bthis.onclick%28%29%3B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Bimg%5D%22%3B%0Avar%20close%3D%22%5B/img%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B URL Выделить код Код:custombutton://BB%3A%20%u0433%u0438%u043F%u0435%u0440%u0441%u0441%u044B%u043B%u043A%u0430%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAKIAAGZmZgAAAP///8zMzP///////////////yH5BAEAAAQALAAAAAAQABAAAAMxSLrc/jBKCYK16lpAqhBDaH3hEHimpoqBEJhkWJkpq17iXFZnaXK8S0bDmRiPyGQyAQA7%5D%5Bthis.onclick%28%29%3B%5D%5Bthis.onclick%3Dfunction%28event%29%0A%7B%0Aif%28event.button%3C2%29%0A%7B%0Avar%20open%3D%22%5Burl%5D%22%3B%0Avar%20close%3D%22%5B/url%5D%22%3B%0Avar%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0Avar%20startPos%20%3D%20theBox.selectionStart%3B%0Avar%20endPos%20%3D%20theBox.selectionEnd%3B%0Avar%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0Avar%20oPosition%20%3D%20theBox.scrollTop%3B%0Avar%20oHeight%20%3D%20theBox.scrollHeight%3B%0Avar%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0Atext%20+%3Dopen+pastetext+close%3B%0Atext%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0AtheBox.value%20%3D%20text%3B%0AtheBox.selectionStart%20%3D%20startPos%3B%0AtheBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0Avar%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0AtheBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%7D%3B%0A%7D%3B
дык автоматическое уже есть, но по озвученным тобой причинам его мало кто ставит, а вот специальная кнопочка для этого бы не помешала... только ссылки надо без реферера открывать (не зря же их ввиде текста сделали...) | ||||||||
Dimanish > 12-06-2006 00:30:22 | ||||||||
Dark-Demon
Хм, ты про что?
Кто исправил, ты? | ||||||||
Dimanish > 12-06-2006 01:23:03 | ||||||||
Самое интересное, что кнопка Online\Offline работает после открытия/закрытия панели инструментов. | ||||||||
Yan > 12-06-2006 13:51:32 | ||||||||
Dimanish
У меня нормально работает, проверил.
Не, таким способом это не исправить. Upd.
- это про что? | ||||||||
Dimanish > 12-06-2006 14:53:44 | ||||||||
Yan
Я и написал, что работает. | ||||||||
Yan > 12-06-2006 15:06:22 | ||||||||
Dimanish | ||||||||
Dark-Demon > 13-06-2006 14:03:33 | ||||||||
Yan, ну не знаю, после того, как я написал this.onclick(); в коде, кнопки склерозом страдать перестали... | ||||||||
Yan > 13-06-2006 16:18:34 | ||||||||
Dark-Demon Результат - кнопка не работает.. Происходит это из-за того, что при открытии окна настройки у всех кнопок, расположенных на панелях, пропадают обработчики событий, назначенные через свойства. Как лечится я говорил выше. | ||||||||
Dark-Demon > 13-06-2006 17:01:03 | ||||||||
подтверждаю | ||||||||
Yan > 13-06-2006 20:51:21 | ||||||||
Версия 0.0.1.1 | ||||||||
Lain_13 > 14-06-2006 17:15:59 | ||||||||
Yan пишет
Ян! Спасибо за новую версию, но вот, что я заметил. Полазил по разным расширениям и во всех обозначение русской локали идет как ru-RU. Именно такое обозначение я сделал в своей версии. Для Польской и английских окалей у тебя все прописано коррекно, но почему для русской прописано просто ru? И хоть расширение работает, но может лучше придерживаться какого-то стандартного обозначения? Просто мало ли каким боком это потом выйдет... | ||||||||
Yan > 14-06-2006 19:20:06 | ||||||||
Lain_13 | ||||||||
Lain_13 > 14-06-2006 19:51:15 | ||||||||
Извини, отстал от жизни. Ж) | ||||||||
Unghost > 14-06-2006 21:18:43 | ||||||||
Lain_13 P.S. А вообще зачинщиками изменений выступили немцы. Им оказалось лень делать отдельные локализации для Австрии (de-AT) и Германии (de-DE). P.P.S Заканчиваю оффтопить | ||||||||
Yan > 15-06-2006 19:02:57 | ||||||||
Версия 0.0.1.2 P.S. По совету Dimanish создал тему на forums.mozillazine.org. | ||||||||
Dark-Demon > 16-06-2006 15:01:05 | ||||||||
Та, я смотрю мой пост не прошёл... тогда реплей... Выделить код Код:custombutton://%u041F%u043E%u043B%u0443%u0436%u0438%u0440%u043D%u044B%u0439%20%20%20%28L%20-%20%u043E%u0431%u0440%u0430%u043C%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%3B%20C%20-%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u043E%u0431%u0440%u0430%u043C%u043B%u0451%u043D%u043D%u043E%u0435%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%29%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAg4AAMIHEiwoMGDCBMaBMCwIcOEDQVGPDhx4sKHASwWdKhxI8aOAytivAhA4kiCHEEqXMmypcuBAQEAOw%3D%3D%5D%5B%5D%5Bthis.onClick%3Dfunction%28event%29%0A%7B%0A%09if%28event.button%3C2%29%0A%09%7B%0A%09%09var%20open%3D%22%5Bb%5D%22%3B%0A%09%09var%20close%3D%22%5B/b%5D%22%3B%0A%09%09var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%09%09var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%09var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%09var%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0A%09%09var%20oPosition%20%3D%20theBox.scrollTop%3B%0A%09%09var%20oHeight%20%3D%20theBox.scrollHeight%3B%0A%09%09var%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0A%09%09text%20+%3Dopen+pastetext+close%3B%0A%09%09text%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0A%09%09theBox.value%20%3D%20text%3B%0A%09%09theBox.selectionStart%20%3D%20startPos%3B%0A%09%09theBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0A%09%09var%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0A%09%09theBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Выделить код Код:custombutton://%u041F%u043E%u0434%u0447%u0435%u0440%u043A%u043D%u0443%u0442%u044B%u0439%20%20%20%28L%20-%20%u043E%u0431%u0440%u0430%u043C%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%3B%20C%20-%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u043E%u0431%u0440%u0430%u043C%u043B%u0451%u043D%u043D%u043E%u0435%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%29%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAHt7ewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAQABAAAAg+AAUIHEiwoMGDBwEoBCBgIcOEDxtGNKhwYEWEFyUi1CgwI8WIHgtmDElQYQABAUiWdLix5UeHC13KnElTYEAAOw%3D%3D%5D%5B%5D%5Bthis.onClick%3Dfunction%28event%29%0A%7B%0A%09if%28event.button%3C2%29%0A%09%7B%0A%09%09var%20open%3D%22%5Bu%5D%22%3B%0A%09%09var%20close%3D%22%5B/u%5D%22%3B%0A%09%09var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%09%09var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%09var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%09var%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0A%09%09var%20oPosition%20%3D%20theBox.scrollTop%3B%0A%09%09var%20oHeight%20%3D%20theBox.scrollHeight%3B%0A%09%09var%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0A%09%09text%20+%3Dopen+pastetext+close%3B%0A%09%09text%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0A%09%09theBox.value%20%3D%20text%3B%0A%09%09theBox.selectionStart%20%3D%20startPos%3B%0A%09%09theBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0A%09%09var%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0A%09%09theBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Выделить код Код:custombutton://%u041A%u0443%u0440%u0441%u0438%u0432%20%20%20%28L%20-%20%u043E%u0431%u0440%u0430%u043C%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%3B%20C%20-%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u043E%u0431%u0440%u0430%u043C%u043B%u0451%u043D%u043D%u043E%u0435%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%29%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAPcAAAAAAHt7e4SEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAgyAAcIHEiwoMGDCBMqBMCQoUKBDAU8HBDA4USGASZWBDBxAEaNFh9+XNgwZMeTKFMqDAgAOw%3D%3D%5D%5B%5D%5Bthis.onClick%3Dfunction%28event%29%0A%7B%0A%09if%28event.button%3C2%29%0A%09%7B%0A%09%09var%20open%3D%22%5Bi%5D%22%3B%0A%09%09var%20close%3D%22%5B/i%5D%22%3B%0A%09%09var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%09%09var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%09var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%09var%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0A%09%09var%20oPosition%20%3D%20theBox.scrollTop%3B%0A%09%09var%20oHeight%20%3D%20theBox.scrollHeight%3B%0A%09%09var%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0A%09%09text%20+%3Dopen+pastetext+close%3B%0A%09%09text%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0A%09%09theBox.value%20%3D%20text%3B%0A%09%09theBox.selectionStart%20%3D%20startPos%3B%0A%09%09theBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0A%09%09var%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0A%09%09theBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Выделить код Код:custombutton://%u0426%u0438%u0442%u0430%u0442%u0430%20%20%20%28L%20-%20%u043E%u0431%u0440%u0430%u043C%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%3B%20C%20-%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u043E%u0431%u0440%u0430%u043C%u043B%u0451%u043D%u043D%u043E%u0435%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%29%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACCklEQVR42mL8//8/AyUAIICYGCgEAAFEsQEAAUSxAQABxAIiurq6OM+cOZPPx8fHaWZm1rp8+fLEDx8+aGVmZrZKSEgwT5s2rRPIFwKyj/38+fPbmzdvvHh5eV/v27cvGiCAwAY8fPgwfvfu3Q3e3t5Vx48fD7hy5UonNzf3opcvX34FSiuePHkyEGgAj6ys7P9v3759fPv2rSsPD88nkF6AAAJ7YceOHbFSUlLb+fn5Jx09ejRORkbmkomJSVVtbe1XZmZmVmBMMYLUsbOzf/n37x9YDysr63cQDRBAYM6TJ09kfv/+fXbz5s18QNO1vn//fnHNmjVfQHKioqLP/fz85ggKCr4DGsAVEhKyXkND4yJQPTtIHiCAGKDp4BnQSYcUFBSagBoeA/k3gC5Ki42N5QXJL1y4kEdVVfWks7PzBhA/NTW1AqjuHYgNEECwWPj79etXWyYmpkigLT+AfHU2NrbYI0eO8IEkga7i//HjhxQQXwfxgeJqwAB9BWIDBBDMAHagZoa/f/8yAp3GBhL4/Pnz36CgoH8LFizgX7Vq1XSggQympqbLBQQEEq5fvx6hq6u7AqQOIIDAsQAMtBPAwBIGmvoAaAsH0GnvhYWFL8rJyf3g5OQUBrrun7q6egGQfQsY1VE6OjozgXITQXoBAoiR0rwAEEAUp0SAAKLYAIAAotgAgAADANuDzfQSUmlqAAAAAElFTkSuQmCC%5D%5B%5D%5Bthis.onClick%3Dfunction%28event%29%0A%7B%0A%09if%28event.button%3C2%29%0A%09%7B%0A%09%09var%20open%3D%22%5Bquote%5D%22%3B%0A%09%09var%20close%3D%22%5B/quote%5D%22%3B%0A%09%09var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%09%09var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%09var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%09var%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0A%09%09var%20oPosition%20%3D%20theBox.scrollTop%3B%0A%09%09var%20oHeight%20%3D%20theBox.scrollHeight%3B%0A%09%09var%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0A%09%09text%20+%3Dopen+pastetext+close%3B%0A%09%09text%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0A%09%09theBox.value%20%3D%20text%3B%0A%09%09theBox.selectionStart%20%3D%20startPos%3B%0A%09%09theBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0A%09%09var%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0A%09%09theBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Выделить код Код:custombutton://%u041A%u043E%u0434%20%20%20%28L%20-%20%u043E%u0431%u0440%u0430%u043C%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%3B%20C%20-%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u043E%u0431%u0440%u0430%u043C%u043B%u0451%u043D%u043D%u043E%u0435%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%29%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA60lEQVR42mL8//8/AyUAIICYGCgEAAFEsQEAAYQNKQHxfyieABWrRRJTQlYMEEBYNc9YtR2MoRoYsIjBDQEIIKyavTOb0RWC5ZJrJ2PIAQQQTs2g2EHH2AwBCCCQIIeNkweGzTgMwHAJQACBBLkUdC3BArqOgSDBSAaIE7AZADdk6dYD/+W0Tf8DBBAoGhk5GX+AZbx8A0DUMjwhDRK/C9TMsGzLYYZHV08zAAQQiqkgV5T3LcQV0nCbkb0KEEAYCnAYglMzQABhjUo0QxjwaQYIIEIpMQcqNgFXSgQIIEZKcyNAAFGcmQACDAB0jLqYK4uYbwAAAABJRU5ErkJggg%3D%3D%5D%5B%5D%5Bthis.onClick%3Dfunction%28event%29%0A%7B%0A%09if%28event.button%3C2%29%0A%09%7B%0A%09%09var%20open%3D%22%5Bcode%5D%22%3B%0A%09%09var%20close%3D%22%5B/code%5D%22%3B%0A%09%09var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%09%09var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%09var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%09var%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0A%09%09var%20oPosition%20%3D%20theBox.scrollTop%3B%0A%09%09var%20oHeight%20%3D%20theBox.scrollHeight%3B%0A%09%09var%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0A%09%09text%20+%3Dopen+pastetext+close%3B%0A%09%09text%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0A%09%09theBox.value%20%3D%20text%3B%0A%09%09theBox.selectionStart%20%3D%20startPos%3B%0A%09%09theBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0A%09%09var%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0A%09%09theBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Выделить код Код:custombutton://%u0418%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%20%20%28L%20-%20%u043E%u0431%u0440%u0430%u043C%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%3B%20C%20-%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u043E%u0431%u0440%u0430%u043C%u043B%u0451%u043D%u043D%u043E%u0435%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%29%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAABpUlEQVR42p2TP0gbURzHPxebwyEJVBw6aKZAxOUcbYYOpS0IRSgljVBMOLgxZA64SBY30RDp0HuEDraBQodChrQI/UNj3XRRoreYQfo3NF4kSo9ct4dHcsX4pvd77/v9/B7vva8CUKlU3E6nw7DDMAxFMU3TTSQSxGKxocyWZVGv1wkAvmYhBJqmoaoqmqYhhMBxHLrdrvTc8OsghODt6zXq7zZQ1RG6Z39YNPI4jkM6nZa6gB+gWCzy8sUGI73vXPz+SOB8j2crjyiVSh6dPIGqqn2Qm5P3aO0vyzoSHqXRaAwGAHxb0nFOmrKeKG8xNr3MZmmBubtTnNrnxONxf4Bz0uTv8ZFH8OnrLndmZ3j/ymD1+Wey2axnP/C/pyoUCuwc/gQgV/jCw8c5MpnM1QDlZpv780/40bLR8+tEo1F0Xe/T+QJ+PXjKwXELgPFbk9RqNarVap/OcwcT5S05317N8ebDvqz1/DrJZJJ2uz0YcDkLoVCI2zNTV/rSEuC6rly0bXuguNfrARAMBr0Ay7KuFaZIJIICYJqmO2yUw+EwqVRK+QdtIZCYwfQIRQAAAABJRU5ErkJggg%3D%3D%5D%5B%5D%5Bthis.onClick%3Dfunction%28event%29%0A%7B%0A%09if%28event.button%3C2%29%0A%09%7B%0A%09%09var%20open%3D%22%5Bimg%5D%22%3B%0A%09%09var%20close%3D%22%5B/img%5D%22%3B%0A%09%09var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%09%09var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%09var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%09var%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0A%09%09var%20oPosition%20%3D%20theBox.scrollTop%3B%0A%09%09var%20oHeight%20%3D%20theBox.scrollHeight%3B%0A%09%09var%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0A%09%09text%20+%3Dopen+pastetext+close%3B%0A%09%09text%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0A%09%09theBox.value%20%3D%20text%3B%0A%09%09theBox.selectionStart%20%3D%20startPos%3B%0A%09%09theBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0A%09%09var%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0A%09%09theBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Выделить код Код:custombutton://%u0413%u0438%u043F%u0435%u0440%u0441%u0441%u044B%u043B%u043A%u0430%20%20%20%28L%20-%20%u043E%u0431%u0440%u0430%u043C%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0435%3B%20C%20-%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u043E%u0431%u0440%u0430%u043C%u043B%u0451%u043D%u043D%u043E%u0435%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%29%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAKIAAGZmZgAAAP///8zMzP///////////////yH5BAEAAAQALAAAAAAQABAAAAMxSLrc/jBKCYK16lpAqhBDaH3hEHimpoqBEJhkWJkpq17iXFZnaXK8S0bDmRiPyGQyAQA7%5D%5B%5D%5Bthis.onClick%3Dfunction%28event%29%0A%7B%0A%09if%28event.button%3C2%29%0A%09%7B%0A%09%09var%20open%3D%22%5Burl%5D%22%3B%0A%09%09var%20close%3D%22%5B/url%5D%22%3B%0A%09%09var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%09%09var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%09var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%09var%20pastetext%3D%20%28event.button%29%3FreadFromClipboard%20%28%29%3AtheBox.value.substring%28startPos%2C%20endPos%29%3B%0A%09%09var%20oPosition%20%3D%20theBox.scrollTop%3B%0A%09%09var%20oHeight%20%3D%20theBox.scrollHeight%3B%0A%09%09var%20text%3DtheBox.value.substring%280%2CstartPos%29%3B%0A%09%09text%20+%3Dopen+pastetext+close%3B%0A%09%09text%20+%3DtheBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0A%09%09theBox.value%20%3D%20text%3B%0A%09%09theBox.selectionStart%20%3D%20startPos%3B%0A%09%09theBox.selectionEnd%20%3D%20startPos%20+%20open.length%20+%20pastetext.length%20+%20close.length%3B%0A%09%09var%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0A%09%09theBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Также модифицировал менюшку WebDeveloper от Zoolcar9 - по щелчку средней кнопкой теперь открывается/закрывается WebDeveloperToolbar. Выделить код Код:custombutton://Web%20Developer%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH1AsQFRwsrPDCMgAAAAlwSFlzAABOIAAATiABFn2Z3gAAAARnQU1BAACxjwv8YQUAAAL9SURBVHjarVN7SJNRFL/OTefSoSyYmoGBmaQYZisD8ZGaZYam5msuELMs0kqd4h9SGkFKoY0yIkxJU7F8BPkufJSpDcVHmfl+T3Gbzs3m3L7vdCdqJuRfHfh955x7zu/c7557LkL/WaipadkeWBtwudyjsYk54tspgnzs07y9A205HA/rXdk+ftd5Fe+/EqG8hFLsRi0r1kj/i7Hd2A7LyHkjTkrLG8I2858FbB0d3QpL6uXTc2Iy62mRemxGDM1tXUTm40LNzPIauJwKbcJpe7dzKNrPg+y3hU9eVErnF/TiVCoFwWazdKKvhFBX1WuIzjCkcJzsdL/19aOFRYmBPzfxS0raa+kxFxfOVpVzAddShsfFasAyv6QApQZAplCD4HkZVFa3ws+JOXhZUg2NwiGYWgKIisscxTRnDJ3NGthgZbV3fifHRGIYGJ4lD9mfrmYYMXgmrIP8pFSBSNgzCOV1QvAL5Utw/hkMxjrT/Swv+llelby6vo3s/jEC0wsyCAiPn9jYgaYtbuPgmVxa0QT5pbVQWtUO97LKNMGR9ztwTJ8iEs2rCLVGBxCJVlZW0Ro+N6FRAw4uYagxgEqlaahUXWTENER6dBoiCKSjUsoNccx08wgspG9Z8KFZSH5s7YLBURFpZedZTDeinzQ2tb90NyN3ckGmhN6hKQiJSFjE+ecxLLR/sM728o3h9wzOqpdJgPLaz1DXLASZfBVeFddC46duwMswvbgKc5JfoMR25I1HA5hmuXWNRziODuVl9UpTll3LyNikYkWpQjVNHYhCpyIloUG9Q9NILpYidzffzgtBN8f3GDLNzc2t7LT9oWoLPLwTzcOKbWZmcYLU0AqYxubQ1NBCOhy30ZXLVWRNTTPi8YIoJux9stoygQ/O1cVQavvz1yQ6e0VGZOc2Es6e4Q3YTe7oV4CH79U+bMfw04ukl+MFIzsncafQ3L0Dg7E+7Orq6RTIS5f4h916p23yAWtbDpNp4r3rW/gzVFsTZoKxf2Me0Lb1LfkN2BRevObpD7MAAAAASUVORK5CYII%3D%5D%5B%0A%5D%5Bvar%20webdev%20%3D%20document.getElementById%28%22webdeveloper-menu%22%29.getElementsByTagName%28%22menupopup%22%29%5B0%5D%3B%0Athis.appendChild%28webdev.cloneNode%28true%29%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0A%0Athis.onClick%3Dfunction%28event%29%0A%7B%0A%09if%28event.button%3D%3D1%29%0A%09%7B%0A%09%09var%20a%20%3D%20document.getElementById%28%22webdeveloper-toolbar%22%29%3B%0A%09%09a.collapsed%20%3D%20%21a.collapsed%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Yan, а не подскажешь, как сделать так, чтобы попап-меню вылезало не по левой, а по средней кнопке? Ну и для порядка кнопка "Панель закладок" теперь открывает/закрывает эту панель не только левой, но и средней кнопкой. Выделить код Код:custombutton://%u041F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACq0lEQVR4Xm2PzWtcVRiHn/fce2Ymk8ykk9YkpTWkCyvYVBvpImQhhdCYbgRdSYMLd5K0qaj0L2jpF+3GpVChGNSNllYMCn5uulEKJiGEiCQm1TSTTmYmmXvnfp1j6wwdAn3ggXPg/b0fYj4CLJg6+B67UIarQQyJ4TxNRMGff4HnQxiDookIOIoWll72qHHyatwYerGNmmoV4qTxBlC0QDlgAWshqTOWGj28v230xf31bcb8EMpV2CiCNbQyPAMTk5G8e1od3xQ9tCOS06dDn4zvt7bd3cA2TRrGNQb1sa4TstdDPVciPbjvhFdiMPAA09zAthoMI7wFTErGvSTZzLTu677lDKFRHiif7GuubjvUfUt3ZKadJzXC5P8Zy7CYc8zyUvcAx/KQqWG1Qnq6obAKdhMApAe7cZD6yhqRbwjWAta/8Vi7H8+JeZ/DJtsxLW+0H5fBIoQGIsCwGxdIAbFQ+tJh7tPkt1rJjov5AKIKL4SWjzOn1OvOEQNx60YUoJv/LQhmSO7d5vtanXOOZkkhoFIsmZC3K7fNnegXoNh0E5aXFBe/znHtqxzX7xY4+4NjKxETnZqlNKCSCJIErKJc3+Gi/wdb/ANsAI9gftFSLEzR/+YFgndG+LFfux8mRJMKphS4D1Z4ShKzN6/JswWYhoWyJf/KOrVDs2wvz5GKIlag6goAuMbQAo464FBqTL8ZtvNTlOKIttSDgKCeIEpICV+48BnwuTIJPDGJcVzFq+kqhIvw9wKe/t3/ZCnQiwNHewniAFccDgy3keTo9Aw/+wKyMEYTutJwP2vpe+jxaxhzpWb59t2Yg3teTs+MnDkwsLrq8+/l9WjfQ9trNCUAmT8JAAJ91nIvjLhhDTdJ2CpbeM+B7YDnpUu+66/Y/MQK5R6XUyGsAvwHk/0n+0qkvkwAAAAASUVORK5CYII%3D%5D%5B%5D%5Bthis.PTB%3D%20document.getElementById%28%22PersonalToolbar%22%29%3B%0A//this.PTB.collapsed%3D%20true%3B%0A%0Athis.onClick%3Dfunction%28event%29%20%7Bif%28event.button%3C2%29%20this.PTB.collapsed%3D%21this.PTB.collapsed%3B%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B ps: а почему кнопка "apply" по дефолту скрыта? | ||||||||
Anton > 18-06-2006 19:56:59 | ||||||||
Ещё одна кнопка, для преобразования простых ссылок 'custombutton://...' в ссылку-картинку: Выделить код Код:custombutton://%u041F%u0440%u0435%u043E%u0431%u0440%u0430%u0437%u043E%u0432%u0430%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0438%20%27custombutton%3A//...%27%20%u0432%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0441%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%u043C%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBgMQBxbn9GxKAAAAB3RJTUUH1gYDEBMzV1+MKAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADNQTFRF////mZmZMzMzZmZmzMzM/8yZ/5mZ/8xm/8wA///M/8wz/8zMzJmZ/5kA/5lmZmYz/5kzCyXdoQAAAAF0Uk5TAEDm2GYAAAB6SURBVHjaTc5bFsIgDATQCZOIJdZ2/6t1oNHKRwj3kAcaeZAVDACRXdcWAfiEI/rogT5GFCg9E3kqLGDu+1slmVXCiHwBNvMLsA7d/IY5QEO9YNMYNdRCVj/6c24iaQURD1xCB5qZ2uEWPVevryj+ARvXOj+oxBrrCD73jALvj0npfgAAAABJRU5ErkJggg%3D%3D%5D%5Bvar%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0Avar%20cbcodes%20%3D%20doc.%20evaluate%0A%28%0A%20%20%20%20%22//a%5B@href%20and%20starts-with%28@href%2C%27custombutton%3A//%27%29%5D%22%2C%0A%20%20%20%20doc%2C%20null%2C%20XPathResult.%20ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%0A%29%3B%0Avar%20i%2C%20cn%2C%20cnt%2C%20cnf%2C%20nn%2C%20titletext%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20cbcodes.%20snapshotLength%3B%20i++%29%0A%7B%0A%20%20%20%20cn%20%3D%20cbcodes.%20snapshotItem%20%28i%29%3B%0A%20%20%20%20cnt%20%3D%20cn.%20getAttribute%20%28%22href%22%29%3B%0A%20%20%20%20cnf%20%3D%20cnt.%20split%20%28%22%255D%255B%22%29%3B%0A%20%20%20%20if%20%28cnf.%20length%20%21%3D%204%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20titletext%20%3D%20unescape%20%28cnf%20%5B0%5D.%20replace%20%28/custombutton%3A%5C/%5C//%2C%20%22%22%29%29%3B%0A%20%20%20%20nn%20%3D%20doc.%20createElement%20%28%22img%22%29%3B%0A%20%20%20%20nn.%20setAttribute%20%28%22src%22%2C%20unescape%20%28cnf%20%5B1%5D%29%20%7C%7C%20%22chrome%3A//custombuttons/skin/button.png%22%29%3B%0A%20%20%20%20nn.%20setAttribute%20%28%22class%22%2C%20%22toolbarimg%22%29%3B%0A%20%20%20%20nn.%20setAttribute%20%28%22title%22%2C%20titletext%29%3B%0A%20%20%20%20nn.%20setAttribute%20%28%22alt%22%2C%20titletext%29%3B%0A%20%20%20%20cn.%20innerHTML%20%3D%20%22%22%3B%0A%20%20%20%20cn.%20appendChild%20%28nn%29%3B%0A%7D%5D%5B А в старых кнопках был лишний код, вот новые: Выделить код Код:custombutton://%u041F%u0440%u0435%u043E%u0431%u0440%u0430%u0437%u043E%u0432%u0430%u0442%u044C%20%u043A%u043E%u0434%u044B%20custombuttons%20%u0432%20%u0441%u0441%u044B%u043B%u043A%u0438%20%28%u0441%u0442%u0440%u043E%u0433%u043E%u0435%20%u043F%u0440%u0435%u043E%u0431%u0440%u0430%u0437%u043E%u0432%u0430%u043D%u0438%u0435%29%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBgMQBxbn9GxKAAAAB3RJTUUH1gYDEBMzV1+MKAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADNQTFRF////mZmZMzMzZmZmzMzM/8yZ/5mZ/8xm/8wA///M/8wz/8zMzJmZ/5kA/5lmZmYz/5kzCyXdoQAAAAF0Uk5TAEDm2GYAAAB6SURBVHjaTc5bFsIgDATQCZOIJdZ2/6t1oNHKRwj3kAcaeZAVDACRXdcWAfiEI/rogT5GFCg9E3kqLGDu+1slmVXCiHwBNvMLsA7d/IY5QEO9YNMYNdRCVj/6c24iaQURD1xCB5qZ2uEWPVevryj+ARvXOj+oxBrrCD73jALvj0npfgAAAABJRU5ErkJggg%3D%3D%5D%5Bvar%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0Avar%20cbcodes%20%3D%20doc.%20evaluate%0A%28%0A%20%20%20%20%22//text%28%29%5Bstarts-with%28.%2C%27custombutton%3A//%27%29%5D%22%2C%0A%20%20%20%20doc%2C%20null%2C%20XPathResult.%20ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%0A%29%3B%0Avar%20i%2C%20cn%2C%20cnt%2C%20cnf%2C%20nn%2C%20t%2C%20titletext%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20cbcodes.%20snapshotLength%3B%20i++%29%0A%7B%0A%20%20%20%20cn%20%3D%20cbcodes.%20snapshotItem%20%28i%29%3B%0A%20%20%20%20cnt%20%3D%20cn.%20textContent%3B%0A%20%20%20%20cnf%20%3D%20cnt.%20split%20%28%22%255D%255B%22%29%3B%0A%20%20%20%20if%20%28cnf.%20length%20%21%3D%204%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20titletext%20%3D%20unescape%20%28cnf%20%5B0%5D.%20replace%20%28/custombutton%3A%5C/%5C//%2C%20%22%22%29%29%3B%0A%20%20%20%20nn%20%3D%20doc.%20createElement%20%28%22a%22%29%3B%0A%20%20%20%20nn.%20setAttribute%20%28%22href%22%2C%20cn.%20textContent%29%3B%0A%20%20%20%20t%20%3D%20doc.%20createElement%20%28%22img%22%29%3B%0A%20%20%20%20t.%20setAttribute%20%28%22src%22%2C%20unescape%20%28cnf%20%5B1%5D%29%20%7C%7C%20%22chrome%3A//custombuttons/skin/button.png%22%29%3B%0A%20%20%20%20t.%20setAttribute%20%28%22class%22%2C%20%22toolbarimg%22%29%3B%0A%20%20%20%20t.%20setAttribute%20%28%22title%22%2C%20titletext%29%3B%0A%20%20%20%20t.%20setAttribute%20%28%22alt%22%2C%20titletext%29%3B%0A%20%20%20%20nn.%20appendChild%20%28t%29%3B%0A%20%20%20%20cn.%20parentNode.%20replaceChild%20%28nn%2C%20cn%29%3B%0A%7D%5D%5B Выделить код Код:custombutton://%u041F%u0440%u0435%u043E%u0431%u0440%u0430%u0437%u043E%u0432%u0430%u0442%u044C%20%u043A%u043E%u0434%u044B%20custombuttons%20%u0432%20%u0441%u0441%u044B%u043B%u043A%u0438%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBgMQBxbn9GxKAAAAB3RJTUUH1gYDEBMzV1+MKAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADNQTFRF////mZmZMzMzZmZmzMzM/8yZ/5mZ/8xm/8wA///M/8wz/8zMzJmZ/5kA/5lmZmYz/5kzCyXdoQAAAAF0Uk5TAEDm2GYAAAB6SURBVHjaTc5bFsIgDATQCZOIJdZ2/6t1oNHKRwj3kAcaeZAVDACRXdcWAfiEI/rogT5GFCg9E3kqLGDu+1slmVXCiHwBNvMLsA7d/IY5QEO9YNMYNdRCVj/6c24iaQURD1xCB5qZ2uEWPVevryj+ARvXOj+oxBrrCD73jALvj0npfgAAAABJRU5ErkJggg%3D%3D%5D%5Bvar%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0Avar%20cbcodes%20%3D%20doc.%20evaluate%0A%28%0A%20%20%20%20%22//text%28%29%5Bcontains%28.%2C%27custombutton%3A//%27%29%5D%22%2C%0A%20%20%20%20doc%2C%20null%2C%20XPathResult.%20ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%0A%29%3B%0Avar%20i%2C%20j%2C%20cn%2C%20cnt%2C%20cnf%2C%20nn%2C%20t%2C%20titletext%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20cbcodes.%20snapshotLength%3B%20i++%29%0A%7B%0A%20%20%20%20cn%20%3D%20cbcodes.%20snapshotItem%20%28i%29%3B%0A%20%20%20%20cnt%20%3D%20cn.%20textContent.%20match%20%28/custombutton%3A%5C/%5C/.+/%29%3B%0A%20%20%20%20for%20%28j%20%3D%200%3B%20j%20%3C%20cnt.%20length%3B%20j++%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20cnf%20%3D%20cnt%20%5Bj%5D.%20split%20%28%22%255D%255B%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28cnf.%20length%20%21%3D%204%29%0A%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20titletext%20%3D%20unescape%20%28cnf%20%5B0%5D.%20replace%20%28/custombutton%3A%5C/%5C//%2C%20%22%22%29%29%3B%0A%20%20%20%20%20%20%20%20nn%20%3D%20doc.%20createElement%20%28%22a%22%29%3B%0A%20%20%20%20%20%20%20%20nn.%20setAttribute%20%28%22href%22%2C%20cn.%20textContent%29%3B%0A%20%20%20%20%20%20%20%20t%20%3D%20doc.%20createElement%20%28%22img%22%29%3B%0A%20%20%20%20%20%20%20%20t.%20setAttribute%20%28%22src%22%2C%20unescape%20%28cnf%20%5B1%5D%29%20%7C%7C%20%22chrome%3A//custombuttons/skin/button.png%22%29%3B%0A%20%20%20%20%20%20%20%20t.%20setAttribute%20%28%22class%22%2C%20%22toolbarimg%22%29%3B%0A%20%20%20%20%20%20%20%20t.%20setAttribute%20%28%22title%22%2C%20titletext%29%3B%0A%20%20%20%20%20%20%20%20t.%20setAttribute%20%28%22alt%22%2C%20titletext%29%3B%0A%20%20%20%20%20%20%20%20nn.%20appendChild%20%28t%29%3B%0A%20%20%20%20%20%20%20%20if%20%28j%20%3D%3D%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20cn.%20parentNode.%20replaceChild%20%28nn%2C%20cn%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20cn.%20parentNode.%20appendChild%20%28nn%29%3B%0A%20%20%20%20%7D%0A%7D%5D%5B | ||||||||
Infant > 18-06-2006 20:39:33 | ||||||||
Решил тоже попробовать это расширение и кнопки описанные здесь выше. Одно маленькое пожелание, надо что-то делать с пояснительным текстом к кнопкам. Эти опусы невозможно прочитать в окне Настройки панелей инструментов (если только не растянуть его на весь экран) из-за налезания текста друг на друга. Если вытащить кнопку на панель, то при включённом отображении "Значки и текст" кнопка занимает много места. Может быть стоит разделить текст, появляющийся при выборе "Значки и текст", и текст всплывающей подсказки, который может содержать более подробную информацию? P.S. В рассмотрении участвовали кнопки Dark-Demon и Anton. | ||||||||
Anton > 18-06-2006 21:05:36 | ||||||||
Infant Что касается раздельных названия/описания - это уже к разработчику. | ||||||||
Dark-Demon > 19-06-2006 14:25:32 | ||||||||
Вот, твою подправил: Выделить код Код:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA2LzE5LzA21AYRVQAAAX5JREFUeJyVkzGL1FAUhT/HbZYU0yhC6lcsA9nm2k0r+BOmdZoHFltOJ6wL1iJs9W6zAbFI49+w8YBsIFikEsV6isFSi2QymXFnxdMk5J373XNzkwer1eo3/6kQwjLGWAKcAFxevSFrasDZzK4HY3ZagwTAZvYCgKvLV3uwE4CsKQEBImsuAOsK5P1zyJodZKxJd9Fg7DpafxxHR3ZYu0vQGZ8ORZtZ0d0aQOpHKO4E7BJYAvuMRp3chUtHi4cE49nORmZJxBj58L7EzPbODhLs1L3QfpgYcXck4e58berjgOy07jfgZM0FWVNzNiuIMaJ+le5+HLD5tY233XsxjJRSGiDr9fq+EQxIoP2VHUIk3UgqAB7O5/PXP75/o779gn4CuTF99vyvqI8eP+k8EnmeI+llnucfJyGEZdu2mBlmNnS5S2/fXe953D1OYozlYrE4r6rqaOFY0+l0C/kE/XdgZjVwXlXVbQjhnxAzW6aUygGwhUhatm17c/jH3ac/OM+gHyNFEgQAAAAASUVORK5CYII= И свою нарисовал: Выделить код Код:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAMFBMVEX////////v7+/f39/MzMy/v7+vr6+ZmZmPj49/f39mZmZPT08/Pz8zMzMfHx8PDw+Fgb3WAAAAEHRSTlMA////////////////////wFCLQwAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA2LzE5LzA21AYRVQAAAFRJREFUeJxjYC8HgwIGdkEwQGOoCDpBGF2Cn4AMqULBq2IHgQzxQKGPUo1gKfGNco5ghnShH0SXvGIXiCFiGCt4DMSQmbhC6CNE6on4RnQrIAyoMwBNFh56ZTJDyQAAAABJRU5ErkJggg== А вот и кнопочка "найти ссылки":
кастомбутоны показывает как у тебя, плюс находит ссылки вида _http://mozilla.ru/ и тому подобные. | ||||||||
Dark-Demon > 19-06-2006 21:09:04 | ||||||||
Кстати, что-то твоя новая кнопка не работает... | ||||||||
Anton > 24-06-2006 19:21:32 | ||||||||
На основе примера из Canvas Tutorial (http://developer.mozilla.org/en/docs/Ca … _example_2) соорудил аналоговые часы: Выделить код Код:custombutton://%u0410%u043D%u0430%u043B%u043E%u0433%u043E%u0432%u044B%u0435%20%u0447%u0430%u0441%u044B%5D%5B%5D%5B//%20based%20on%20canvas%20tutorial%20example%20code%0A//%20%28http%3A//developer.mozilla.org/en/docs/Canvas_tutorial%3ABasic_animations%23An_animation_example_2%29%5D%5Bif%20%28%21document.%20getElementById%20%28%22canvas-clock%22%29%29%0A%7B%0A%09var%20canvas%20%3D%20document.%20createElementNS%20%28%22http%3A//www.w3.org/1999/xhtml%22%2C%20%22canvas%22%29%3B%0A%09canvas.%20setAttribute%20%28%22id%22%2C%20%22canvas-clock%22%29%3B%0A%09canvas.%20setAttribute%20%28%22width%22%2C%20%2224px%3B%22%29%3B%0A%09canvas.%20setAttribute%20%28%22height%22%2C%20%2224px%3B%22%29%3B%0A%09canvas.%20setAttribute%20%28%22style%22%2C%20%22min-width%3A24px%3Bmin-height%3A24px%3Bheight%3A24px%3Bwidth%3A24px%3Bmax-width%3A24px%3Bmax-height%3A24px%3B%22%29%3B%0A%09var%20button%20%3D%20this%3B%0A%09setTimeout%0A%09%28%0A%09%20%20%20%20function%20%28%29%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20button.%20parentNode.%20insertBefore%20%28canvas%2C%20button%29%3B%0A%09%09canvas.%20addEventListener%0A%09%09%28%0A%09%09%09%22click%22%2C%0A%09%09%09function%20%28event%29%0A%09%09%09%7B%0A%09%09%09%09button.%20hidden%20%3D%20%21button.%20hidden%3B%0A%09%09%09%7D%2C%0A%09%09%09false%0A%09%09%29%3B%0A%09%09button.%20hidden%20%3D%20true%3B%0A%09%20%20%20%20%20%20%20%20var%20ctx%20%3D%20canvas.%20getContext%28%222d%22%29%3B%0A%09%20%20%20%20%20%20%20%20ctx.%20scale%20%2824%20/%20122%2C%2024%20/%20122%29%3B%0A%09%20%20%20%20%20%20%20%20var%20clock%20%3D%20function%20%28%29%0A%09%20%20%20%20%20%20%20%20%7B%0A%09%09%09var%20now%20%3D%20new%20Date%20%28%29%3B%0A%09%09%09var%20canvas%20%3D%20document.%20getElementById%20%28%22canvas-clock%22%29%3B%0A%09%09%09var%20ctx%20%3D%20canvas.%20getContext%28%222d%22%29%3B%0A%09%09%09ctx.%20save%20%28%29%3B%0A%09%09%09ctx.%20clearRect%20%280%2C%200%2C%20150%2C%20150%29%3B%0A%09%09%09ctx.%20translate%20%2861%2C%2061%29%3B%0A%09%09%09ctx.%20scale%20%280.4%2C%200.4%29%3B%0A%09%09%09ctx.%20rotate%20%28-Math.%20PI%20/%202%29%3B%0A%09%09%09ctx.%20strokeStyle%20%3D%20%22black%22%3B%0A%09%09%09ctx.%20fillStyle%20%3D%20%22white%22%3B%0A%09%09%09ctx.%20lineWidth%20%3D%2012%3B%0A%09%09%09ctx.%20lineCap%20%3D%20%22round%22%3B%0A%09%09%09ctx.%20save%20%28%29%3B%0A%09%09%09ctx.%20beginPath%20%28%29%3B%0A%09%09%09for%20%28i%20%3D%200%3B%20i%20%3C%2012%3B%20i++%29%0A%09%09%09%7B%0A%09%09%09%20%20%20%20ctx.%20rotate%20%28Math.%20PI%20/%206%29%3B%0A%09%09%09%20%20%20%20ctx.%20moveTo%20%28100%2C%200%29%3B%0A%09%09%09%20%20%20%20ctx.%20lineTo%20%28120%2C%200%29%3B%0A%09%09%09%7D%0A%09%09%09ctx.%20stroke%20%28%29%3B%0A%09%09%09ctx.%20restore%20%28%29%3B%0A%09%09%09ctx.%20save%20%28%29%3B%0A%09%09%09ctx.%20lineWidth%20%3D%205%3B%0A%09%09%09ctx.%20beginPath%20%28%29%3B%0A%09%09%09for%20%28i%20%3D%200%3B%20i%20%3C%2060%3B%20i++%29%0A%09%09%09%7B%0A%09%09%09%20%20%20%20if%20%28i%20%25%205%20%21%3D%200%29%0A%09%09%09%20%20%20%20%7B%0A%09%09%09%20%20%20%20%20%20%20%20ctx.%20moveTo%20%28117%2C%200%29%3B%0A%09%09%09%20%20%20%20%20%20%20%20ctx.%20lineTo%20%28120%2C%200%29%3B%0A%09%09%09%20%20%20%20%7D%0A%09%09%09%20%20%20%20ctx.%20rotate%20%28Math.%20PI%20/%2030%29%3B%0A%09%09%09%7D%0A%09%09%09ctx.%20stroke%20%28%29%3B%0A%09%09%09ctx.%20restore%20%28%29%3B%0A%09%09%09var%20sec%20%3D%20now.%20getSeconds%20%28%29%3B%0A%09%09%09var%20min%20%3D%20now.%20getMinutes%20%28%29%3B%0A%09%09%09var%20hr%20%20%3D%20now.%20getHours%20%28%29%3B%0A%09%09%09canvas.%20setAttribute%20%28%22title%22%2C%20%5Bhr%2C%20min%2C%20sec%5D.%20join%20%28%22%20%3A%20%22%29%29%3B%0A%09%09%09hr%20%3D%20hr%20%3E%3D%2012%3F%20hr%20-%2012%3A%20hr%3B%0A%09%09%09ctx.%20fillStyle%20%3D%20%22black%22%3B%0A%09%09%09ctx.%20save%20%28%29%3B%0A%09%09%09ctx.%20strokeStyle%20%3D%20%22black%22%3B%0A%09%09%09ctx.%20rotate%20%28hr%20*%20%28Math.%20PI%20/%206%29%20+%20%28Math.%20PI%20/%20360%29%20*%20min%20+%20%28Math.%20PI%20/%2021600%29%20*%20sec%29%0A%09%09%09ctx.%20lineWidth%20%3D%2014%3B%0A%09%09%09ctx.%20beginPath%20%28%29%3B%0A%09%09%09ctx.%20moveTo%20%28-20%2C%200%29%3B%0A%09%09%09ctx.%20lineTo%20%2880%2C%200%29%3B%0A%09%09%09ctx.%20stroke%20%28%29%3B%0A%09%09%09ctx.%20restore%20%28%29%3B%0A%09%09%09ctx.%20save%28%29%3B%0A%09%09%09ctx.%20rotate%20%28%28Math.%20PI%20/%2030%29%20*%20min%20+%20%28Math.%20PI%20/%201800%29%20*%20sec%29%0A%09%09%09ctx.%20lineWidth%20%3D%2010%3B%0A%09%09%09ctx.%20beginPath%20%28%29%3B%0A%09%09%09ctx.%20moveTo%20%28-28%2C%200%29%3B%0A%09%09%09ctx.%20lineTo%20%28112%2C%200%29%3B%0A%09%09%09ctx.%20stroke%20%28%29%3B%0A%09%09%09ctx.%20restore%20%28%29%3B%0A%09%09%09ctx.%20save%28%29%3B%0A%09%09%09ctx.%20rotate%20%28sec%20*%20Math.%20PI%20/%2030%29%3B%0A%09%09%09ctx.%20strokeStyle%20%3D%20%22%23D40000%22%3B%0A%09%09%09ctx.%20fillStyle%20%3D%20%22%23D40000%22%3B%0A%09%09%09ctx.%20lineWidth%20%3D%206%3B%0A%09%09%09ctx.%20beginPath%20%28%29%3B%0A%09%09%09ctx.%20moveTo%20%28-30%2C%200%29%3B%0A%09%09%09ctx.%20lineTo%20%2893%2C%200%29%3B%0A%09%09%09ctx.%20stroke%20%28%29%3B%0A%09%09%09ctx.%20fillStyle%20%3D%20%22%23555%22%3B%0A%09%09%09ctx.%20arc%280%2C%200%2C%203%2C%200%2C%20Math.%20PI%20*%202%2C%20true%29%3B%0A%09%09%09ctx.%20fill%20%28%29%3B%0A%09%09%09ctx.%20restore%20%28%29%3B%0A%09%09%09ctx.%20beginPath%20%28%29%3B%0A%09%09%09ctx.%20lineWidth%20%3D%2014%3B%0A%09%09%09ctx.%20strokeStyle%20%3D%20%27%23325FA2%27%3B%0A%09%09%09ctx.%20arc%280%2C%200%2C%20142%2C%200%2C%20Math.%20PI%20*%202%2C%20true%29%3B%0A%09%09%09ctx.%20stroke%20%28%29%3B%0A%09%09%09ctx.%20restore%20%28%29%3B%0A%09%20%20%20%20%20%20%20%20%7D%0A%09%20%20%20%20%20%20%20%20clock%20%28%29%3B%0A%09%20%20%20%20%20%20%20%20setInterval%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20function%20%28%29%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20clock%20%28%29%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%201000%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%20%20%20%20%7D%2C%0A%09%20%20%20%202000%0A%09%29%3B%0A%7D второй вариант ("заводятся" только после открытия окна настройки панелей инструментов): Выделить код Код:custombutton://%u0410%u043D%u0430%u043B%u043E%u0433%u043E%u0432%u044B%u0435%20%u0447%u0430%u0441%u044B3%5D%5B%5D%5B//%20based%20on%20canvas%20tutorial%20example%20code%0A//%20%28http%3A//developer.mozilla.org/en/docs/Canvas_tutorial%3ABasic_animations%23An_animation_example_2%29%5D%5Bthis.%20clock%20%3D%20function%20%28%29%0A%7B%0A%09var%20now%20%3D%20new%20Date%20%28%29%3B%0A%09var%20canvas%20%3D%20this.%20getElementsByTagNameNS%20%28%22http%3A//www.w3.org/1999/xhtml%22%2C%20%22canvas%22%29%20%5B0%5D%3B%0A%09if%20%28%21canvas%29%0A%09%7B%0A%09%09var%20canvas%20%3D%20document.%20createElementNS%20%28%22http%3A//www.w3.org/1999/xhtml%22%2C%20%22canvas%22%29%3B%0A%09%09canvas.%20setAttribute%20%28%22width%22%2C%20%2224%22%29%3B%0A%09%09canvas.%20setAttribute%20%28%22height%22%2C%20%2224%22%29%3B%0A%09%09canvas.%20setAttribute%20%28%22style%22%2C%20%22min-width%3A24px%3Bmin-height%3A24px%3Bheight%3A24px%3Bwidth%3A24px%3Bmax-width%3A24px%3Bmax-height%3A24px%3B%22%29%3B%0A%09%09this.%20image%20%3D%20%22data%3A%22%3B%0A%09%09this.%20disabled%20%3D%20true%3B%0A%09%09canvas%20%3D%20this.%20appendChild%20%28canvas%29%3B%0A%09%09var%20ctx%20%3D%20canvas.%20getContext%28%222d%22%29%3B%0A%09%20%20%20%20%20%20%20%20ctx.%20scale%20%2824%20/%20122%2C%2024%20/%20122%29%3B%0A%09%7D%0A%09var%20ctx%20%3D%20canvas.%20getContext%28%222d%22%29%3B%0A%09ctx.%20save%20%28%29%3B%0A%20%20%20%20%09ctx.%20clearRect%20%280%2C%200%2C%20150%2C%20150%29%3B%0A%20%20%20%20%09ctx.%20translate%20%2861%2C%2061%29%3B%0A%20%20%20%20%09ctx.%20scale%20%280.4%2C%200.4%29%3B%0A%20%20%20%20%09ctx.%20rotate%20%28-Math.%20PI%20/%202%29%3B%0A%20%20%20%20%09ctx.%20strokeStyle%20%3D%20%22black%22%3B%0A%20%20%20%20%09ctx.%20fillStyle%20%3D%20%22white%22%3B%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%2012%3B%0A%20%20%20%20%09ctx.%20lineCap%20%3D%20%22round%22%3B%0A%20%20%20%20%09ctx.%20save%20%28%29%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09for%20%28var%20i%20%3D%200%3B%20i%20%3C%2012%3B%20i++%29%0A%20%20%20%20%09%7B%0A%20%20%20%20%09%20%20%20%20ctx.%20rotate%20%28Math.%20PI%20/%206%29%3B%0A%20%20%20%20%09%20%20%20%20ctx.%20moveTo%20%28100%2C%200%29%3B%0A%20%20%20%20%09%20%20%20%20ctx.%20lineTo%20%28120%2C%200%29%3B%0A%20%20%20%20%09%7D%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09ctx.%20save%20%28%29%3B%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%205%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09for%20%28var%20i%20%3D%200%3B%20i%20%3C%2060%3B%20i++%29%0A%20%20%20%20%09%7B%0A%20%20%20%20%09%20%20%20%20if%20%28i%20%25%205%20%21%3D%200%29%0A%20%20%20%20%09%20%20%20%20%7B%0A%20%20%20%20%09%20%20%20%20%20%20%20%20ctx.%20moveTo%20%28117%2C%200%29%3B%0A%20%20%20%20%09%20%20%20%20%20%20%20%20ctx.%20lineTo%20%28120%2C%200%29%3B%0A%20%20%20%20%09%20%20%20%20%7D%0A%20%20%20%20%09%20%20%20%20ctx.%20rotate%20%28Math.%20PI%20/%2030%29%3B%0A%20%20%20%20%09%7D%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09var%20sec%20%3D%20now.%20getSeconds%20%28%29%3B%0A%20%20%20%20%09var%20min%20%3D%20now.%20getMinutes%20%28%29%3B%0A%20%20%20%20%09var%20hr%20%20%3D%20now.%20getHours%20%28%29%3B%0A%20%20%20%20%09this.%20tooltipText%20%3D%20%5Bhr%2C%20min%20%3E%209%3F%20min%3A%20%220%22%20+%20min%2C%20sec%20%3E%209%3F%20sec%3A%20%220%22%20+%20sec%5D.%20join%20%28%22%20%3A%20%22%29%3B%0A%20%20%20%20%09hr%20%3D%20hr%20%3E%3D%2012%3F%20hr%20-%2012%3A%20hr%3B%0A%20%20%20%20%09ctx.%20fillStyle%20%3D%20%22black%22%3B%0A%20%20%20%20%09ctx.%20save%20%28%29%3B%0A%20%20%20%20%09ctx.%20strokeStyle%20%3D%20%22black%22%3B%0A%20%20%20%20%09ctx.%20rotate%20%28hr%20*%20%28Math.%20PI%20/%206%29%20+%20%28Math.%20PI%20/%20360%29%20*%20min%20+%20%28Math.%20PI%20/%2021600%29%20*%20sec%29%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%2014%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09ctx.%20moveTo%20%28-20%2C%200%29%3B%0A%20%20%20%20%09ctx.%20lineTo%20%2880%2C%200%29%3B%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09ctx.%20save%28%29%3B%0A%20%20%20%20%09ctx.%20rotate%20%28%28Math.%20PI%20/%2030%29%20*%20min%20+%20%28Math.%20PI%20/%201800%29%20*%20sec%29%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%2010%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09ctx.%20moveTo%20%28-28%2C%200%29%3B%0A%20%20%20%20%09ctx.%20lineTo%20%28112%2C%200%29%3B%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09ctx.%20save%28%29%3B%0A%20%20%20%20%09ctx.%20rotate%20%28sec%20*%20Math.%20PI%20/%2030%29%3B%0A%20%20%20%20%09ctx.%20strokeStyle%20%3D%20%22%23D40000%22%3B%0A%20%20%20%20%09ctx.%20fillStyle%20%3D%20%22%23D40000%22%3B%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%206%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09ctx.%20moveTo%20%28-30%2C%200%29%3B%0A%20%20%20%20%09ctx.%20lineTo%20%2893%2C%200%29%3B%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20fillStyle%20%3D%20%22%23555%22%3B%0A%20%20%20%20%09ctx.%20arc%280%2C%200%2C%203%2C%200%2C%20Math.%20PI%20*%202%2C%20true%29%3B%0A%20%20%20%20%09ctx.%20fill%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%2014%3B%0A%20%20%20%20%09ctx.%20strokeStyle%20%3D%20%27%23325FA2%27%3B%0A%20%20%20%20%09ctx.%20arc%280%2C%200%2C%20142%2C%200%2C%20Math.%20PI%20*%202%2C%20true%29%3B%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%09setTimeout%20%28this.%20clock.%20bind%20%28this%29%2C%201000%29%3B%0A%7D%0AsetTimeout%20%28this.%20clock.%20bind%20%28this%29%2C%202000%29%3B | ||||||||
Infant > 24-06-2006 19:31:32 | ||||||||
Anton | ||||||||
Anton > 24-06-2006 19:34:27 | ||||||||
Infant пишет
Infant О чём речь ? | ||||||||
Infant > 24-06-2006 20:23:52 | ||||||||
В последних кнопках в поле код я текста не вижу, но он выделяется. В остальных — вижу. Видимо что-то в коде кнопки так воспринимается. | ||||||||
Anton > 24-06-2006 21:14:22 | ||||||||
Infant пишет
Непонятно, что имеется в виду... Блоки "Код:" я оформлял как обычно, у меня отображаются нормально. Адресная строка ? Да, бывает, что в textbox'ах большой текст становится невидимым (впрочем, у меня код последних кнопок в адресной строке также виден). | ||||||||
Infant > 24-06-2006 21:23:13 | ||||||||
Anton > 24-06-2006 22:03:40 | ||||||||
Infant А это:
где ? В локальном html ? | ||||||||
Infant > 24-06-2006 22:17:48 | ||||||||
Копирую в поле создания сообщения и тоже не вижу текст. Вставляю в редактор FAR'а — вижу. Самому стало интересно, начал Ctrl+Del удалять символы и ... бац появилось. | ||||||||
Anton > 24-06-2006 22:51:53 | ||||||||
Infant пишет
Бывает, про textbox'ы я уже говорил (у меня обсуждаемые коды видно и в полях создания сообщений : ) ). | ||||||||
xXx > 25-06-2006 09:23:10 | ||||||||
скажите как сделать кнопку которая выводила бы смайл | ||||||||
Anton > 25-06-2006 11:42:46 | ||||||||
xXx пишет
Выделить код Код:custombutton://Smiley%3A%20%3A%29%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADYUExURWJiYv7xQ0ZGRioqKiQaAP/te//gAPeiAP7uZP7lAP/YAPz8Ef/UAP31Kv+zAP7qADcuFf+6APOgAP3yAP/dAP33AP/MAP/VZemdAP3yAf+sAP/eQsaHAP7sEf30Ef/gY//DIP/VVtaeLkM9If7MYv31Jv/jVv/AEf7tKt6jMeCpAOXNJ/GfAP/BAPz5AOfQOf7jGfikAP/dAf/he/33Af7kEf/FKv/aEf/IRv/FPv7lAv7xYv/WCv/jDvixKuSkGfW5Rf7qAuOgDvmqEf/cKuKbAAAAAP///7GsR/gAAABIdFJOU///////////////////////////////////////////////////////////////////////////////////////////////AJzs8mAAAACwSURBVHjaVM9FFsMwDARQBxpmhqbMzMytlfvfqHbSTedpob/SCOU0QFNsiKqd9urNowWlYS5VSNbhEKhhLJ0RkhAKOy0gthiGYVky6eFh5QgWA13nODKf3e0OCK5ZTVXVWrbd998vYsHs+jPfNQWtIWJiT4aN65qyd4EJtSLIEMfP0wqSiDjnFU8o+hkO5un9UaApWjA1RFyFoh+2bdtIHMqyP78UnQjzv/5//30FGACrUSaRymhFqgAAAABJRU5ErkJggg%3D%3D%5D%5Bvar%20smiley%20%3D%20%22%3A%29%22%3B%0Avar%20ie%20%3D%20document.%20commandDispatcher.%20focusedElement%3B%0Avar%20ss%20%3D%20ie.%20selectionStart%3B%0Avar%20se%20%3D%20ie.%20selectionEnd%3B%0Avar%20st%20%3D%20ie.%20scrollTop%3B%0Avar%20sh%20%3D%20ie.%20scrollHeight%3B%0Aie.%20value%20%3D%20ie.%20value.%20substring%20%280%2C%20ss%29%20+%20smiley%20+%20ie.%20value.%20substring%20%28se%29%3B%0Aie.%20selectionStart%20%3D%20ie.%20selectionEnd%20%3D%20ss%20+%20smiley.%20length%3B%0Aie.%20scrollTop%20%3D%20st%20+%20ie.%20scrollHeight%20-%20sh%3B%5D%5B | ||||||||
xXx > 25-06-2006 11:47:58 | ||||||||
Спасибо | ||||||||
Anton > 25-06-2006 14:14:27 | ||||||||
Доработал часы. Теперь нормально "заводятся". Выделить код Код:custombutton://%u0410%u043D%u0430%u043B%u043E%u0433%u043E%u0432%u044B%u0435%20%u0447%u0430%u0441%u044B3%5D%5B%5D%5B//%20based%20on%20canvas%20tutorial%20example%20code%0A//%20%28http%3A//developer.mozilla.org/en/docs/Canvas_tutorial%3ABasic_animations%23An_animation_example_2%29%5D%5Bthis.%20clockWidth%20%3D%2024%3B%0Athis.%20clockHeight%20%3D%2024%3B%0Athis.%20htmlNS%20%3D%20%22http%3A//www.w3.org/1999/xhtml%22%3B%0Athis.%20xulNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0Athis.%20clock%20%3D%20function%20%28%29%0A%7B%0A%09var%20now%20%3D%20new%20Date%20%28%29%3B%0A%09var%20canvas%20%3D%20this.%20getElementsByTagNameNS%20%28this.%20htmlNS%2C%20%22canvas%22%29%20%5B0%5D%3B%0A%09if%20%28%21canvas%29%0A%09%7B%0A%09%09var%20canvas%20%3D%20document.%20createElementNS%20%28this.%20htmlNS%2C%20%22canvas%22%29%3B%0A%09%09canvas.%20setAttribute%20%28%22width%22%2C%20this.%20clockWidth%29%3B%0A%09%09canvas.%20setAttribute%20%28%22height%22%2C%20this.%20clockHeight%29%3B%0A%09%09canvas.%20setAttribute%0A%09%09%28%0A%09%09%09%22style%22%2C%0A%09%09%09%22min-width%3A%22%20+%20this.%20clockWidth%20+%0A%09%09%09%22px%3Bwidth%3A%22%20+%20this.%20clockWidth%20+%0A%09%09%09%22px%3Bmax-width%3A%22%20+%20this.%20clockWidth%20+%0A%09%09%09%22px%3Bmin-height%3A%22%20+%20this.%20clockHeight%20+%0A%09%09%09%22px%3Bheight%3A%22%20+%20this.%20clockHeight%20+%0A%09%09%09%22px%3Bmax-height%3A%22%20+%20this.%20clockHeight%0A%09%09%29%3B%0A%09%09this.%20image%20%3D%20%22data%3A%22%3B%0A%09%09this.%20disabled%20%3D%20true%3B%0A%09%09this.%20setAttribute%20%28%22class%22%2C%20%22%22%29%3B%0A%09%09canvas%20%3D%20this.%20appendChild%20%28canvas%29%3B%0A%09%09var%20ctx%20%3D%20canvas.%20getContext%28%222d%22%29%3B%0A%09%20%20%20%20%20%20%20%20ctx.%20scale%20%28this.%20clockWidth%20/%20122%2C%20this.%20clockHeight%20/%20122%29%3B%0A%09%09var%20pn%20%3D%20this.%20parentNode%3B%0A%09%09var%20ns%20%3D%20this.%20nextSibling%3B%0A%09%09var%20button%20%3D%20pn.%20removeChild%20%28this%29%3B%0A%09%09if%20%28ns%29%0A%09%09%09pn.%20insertBefore%20%28button%2C%20ns%29%3B%0A%09%09else%0A%09%09%09pn.%20appendChild%20%28button%29%3B%0A%09%7D%0A%09var%20ctx%20%3D%20canvas.%20getContext%28%222d%22%29%3B%0A%09ctx.%20save%20%28%29%3B%0A%20%20%20%20%09ctx.%20clearRect%20%280%2C%200%2C%20150%2C%20150%29%3B%0A%20%20%20%20%09ctx.%20translate%20%2861%2C%2061%29%3B%0A%20%20%20%20%09ctx.%20scale%20%280.4%2C%200.4%29%3B%0A%09ctx.%20fillStyle%20%3D%20%22white%22%3B%0A%20%20%20%20%09ctx.%20arc%280%2C%200%2C%20142%2C%200%2C%20Math.%20PI%20*%202%2C%20true%29%3B%0A%20%20%20%20%09ctx.%20fill%20%28%29%3B%0A%20%20%20%20%09ctx.%20rotate%20%28-Math.%20PI%20/%202%29%3B%0A%20%20%20%20%09ctx.%20strokeStyle%20%3D%20%22black%22%3B%0A%20%20%20%20%09ctx.%20fillStyle%20%3D%20%22white%22%3B%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%2012%3B%0A%20%20%20%20%09ctx.%20lineCap%20%3D%20%22round%22%3B%0A%20%20%20%20%09ctx.%20save%20%28%29%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09for%20%28var%20i%20%3D%200%3B%20i%20%3C%2012%3B%20i++%29%0A%20%20%20%20%09%7B%0A%20%20%20%20%09%20%20%20%20ctx.%20rotate%20%28Math.%20PI%20/%206%29%3B%0A%20%20%20%20%09%20%20%20%20ctx.%20moveTo%20%28100%2C%200%29%3B%0A%20%20%20%20%09%20%20%20%20ctx.%20lineTo%20%28120%2C%200%29%3B%0A%20%20%20%20%09%7D%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09ctx.%20save%20%28%29%3B%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%205%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09for%20%28var%20i%20%3D%200%3B%20i%20%3C%2060%3B%20i++%29%0A%20%20%20%20%09%7B%0A%20%20%20%20%09%20%20%20%20if%20%28i%20%25%205%20%21%3D%200%29%0A%20%20%20%20%09%20%20%20%20%7B%0A%20%20%20%20%09%20%20%20%20%20%20%20%20ctx.%20moveTo%20%28117%2C%200%29%3B%0A%20%20%20%20%09%20%20%20%20%20%20%20%20ctx.%20lineTo%20%28120%2C%200%29%3B%0A%20%20%20%20%09%20%20%20%20%7D%0A%20%20%20%20%09%20%20%20%20ctx.%20rotate%20%28Math.%20PI%20/%2030%29%3B%0A%20%20%20%20%09%7D%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09var%20sec%20%3D%20now.%20getSeconds%20%28%29%3B%0A%20%20%20%20%09var%20min%20%3D%20now.%20getMinutes%20%28%29%3B%0A%20%20%20%20%09var%20hr%20%20%3D%20now.%20getHours%20%28%29%3B%0A%20%20%20%20%09this.%20tooltipText%20%3D%20%5Bhr%2C%20min%20%3E%209%3F%20min%3A%20%220%22%20+%20min%2C%20sec%20%3E%209%3F%20sec%3A%20%220%22%20+%20sec%5D.%20join%20%28%22%20%3A%20%22%29%3B%0A%20%20%20%20%09hr%20%3D%20hr%20%3E%3D%2012%3F%20hr%20-%2012%3A%20hr%3B%0A%20%20%20%20%09ctx.%20fillStyle%20%3D%20%22black%22%3B%0A%20%20%20%20%09ctx.%20save%20%28%29%3B%0A%20%20%20%20%09ctx.%20strokeStyle%20%3D%20%22black%22%3B%0A%20%20%20%20%09ctx.%20rotate%20%28hr%20*%20%28Math.%20PI%20/%206%29%20+%20%28Math.%20PI%20/%20360%29%20*%20min%20+%20%28Math.%20PI%20/%2021600%29%20*%20sec%29%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%2014%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09ctx.%20moveTo%20%28-20%2C%200%29%3B%0A%20%20%20%20%09ctx.%20lineTo%20%2880%2C%200%29%3B%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09ctx.%20save%28%29%3B%0A%20%20%20%20%09ctx.%20rotate%20%28%28Math.%20PI%20/%2030%29%20*%20min%20+%20%28Math.%20PI%20/%201800%29%20*%20sec%29%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%2010%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09ctx.%20moveTo%20%28-28%2C%200%29%3B%0A%20%20%20%20%09ctx.%20lineTo%20%28112%2C%200%29%3B%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09ctx.%20save%28%29%3B%0A%20%20%20%20%09ctx.%20rotate%20%28sec%20*%20Math.%20PI%20/%2030%29%3B%0A%20%20%20%20%09ctx.%20strokeStyle%20%3D%20%22%23D40000%22%3B%0A%20%20%20%20%09ctx.%20fillStyle%20%3D%20%22%23D40000%22%3B%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%206%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09ctx.%20moveTo%20%28-30%2C%200%29%3B%0A%20%20%20%20%09ctx.%20lineTo%20%2893%2C%200%29%3B%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20fillStyle%20%3D%20%22%23555%22%3B%0A%20%20%20%20%09ctx.%20arc%280%2C%200%2C%203%2C%200%2C%20Math.%20PI%20*%202%2C%20true%29%3B%0A%20%20%20%20%09ctx.%20fill%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%20%20%20%20%09ctx.%20beginPath%20%28%29%3B%0A%20%20%20%20%09ctx.%20lineWidth%20%3D%2014%3B%0A%20%20%20%20%09ctx.%20strokeStyle%20%3D%20%27%23325FA2%27%3B%0A%20%20%20%20%09ctx.%20arc%280%2C%200%2C%20142%2C%200%2C%20Math.%20PI%20*%202%2C%20true%29%3B%0A%20%20%20%20%09ctx.%20stroke%20%28%29%3B%0A%20%20%20%20%09ctx.%20restore%20%28%29%3B%0A%09setTimeout%20%28this.%20clock.%20bind%20%28this%29%2C%201000%29%3B%0A%7D%0AsetTimeout%20%28this.%20clock.%20bind%20%28this%29%2C%202000%29%3B | ||||||||
INFOMAN > 25-06-2006 23:27:14 | ||||||||
Dark-Demon > 04-07-2006 02:42:43 | ||||||||
пачка новых кнопок. суть в том, что левый клик открывает в сайдбаре, а средний - в табе, причем если в одном из табов это уже открыто, то сей таб становится активным. повторное нажатие закрывает соответственно сайдбар и таб. Bookmark. в сайдбаре окрывает обычную панель закладок, а в табе - менеджер закладок. Выделить код Код:custombutton://Bookmarks%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAACb0lEQVR4nGWSS29NYRSGn73P7jmnpz0uLY00DWnqVqQqISpCWgbiFgMTBsKIhl9ADMzFX/ArDIgBAwYiESJpxSUqLaE9PZfa+1z2931rGex9eorBylrfYD1533d9HuAB2bT7aXn/9PYMIEAIxKqq3sXr97cBk8A4MLmpb9346PZBujI+xWKBUnmF5WrIh88/qsDbtKrAc2AuKOSyc3t2DjG6Y4iDY8P0byzieT4vX85y7Ng+Hj76yuOPJQb2jm+Ym1+anPtUmmyGIdOnsnybX8KP6i1G9h/m9NQBBjb1EQQ5MpkssRUazmf6wSznL+9j4vQuLt04ykIpy/SZjYxNHEe7evER5c2nCqpdeF4Gz/cQD0ShYRSArkKeF19a/Ko4AO7cPJfsiCQANQbnIJNJUlJNACLJu1oXFkNLtZEAnAM1BkQIVBVJAU7BCVhJZrsKsFjjqEbJIZwFMQZ1QoAoahNA7DoA6/4GmNhSWqx3FFiDihIgrCpo2ES2FTAOYpsCwpioVkfUrALEGHBCwBoLrTjxbgVaDqIUUItiwlpIy9O/ACpCoGssRKZjoW5hJU4Ay5U6rWaTZpqqSGKBdgZiDCLwu9UJsmESIED4u8nyTJnCUP5/BWst1GzHQmQgTBX8el9hdHOOd7MrCUA6V/A1/QciUGuCGuhVGO7JMuLF9OQzXJ3q5+6tQ1w5txX81EL7H7SvoAojccjiUpmPCz958uQZr19t5dqRdZzc1k1Prcbts7s5MVxE2zuieBcu3NP1G/roLhRQ1RXnzGwYVZ5+X/g8EwQBWwZHJrpzPXt8P1MMguxhVSWfzxGGEeXSIn8AD3imeeFtcw8AAAAASUVORK5CYII%3D%5D%5B%5D%5Bthis.url2xul%3D%20%27chrome%3A//browser/content/bookmarks/bookmarksManager.xul%27%3B%0Athis.onClick%3D%20function%28e%29%0A%7B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20toggleSidebar%28%27viewBookmarksSidebar%27%29%3B%20break%3B%0A%09%09case%201%3A%20%0A%09%09%7B%0A%09%09%09var%20t%3D%20gBrowser.mTabs%3B%0A%09%09%09var%20current%3D%20content.document.location.href%3B%0A%09%09%09var%20i%3D%20t.length%3B%0A%09%09%09if%20%28current%3D%3Dthis.url2xul%29%20gBrowser.removeCurrentTab%28%29%3B%20%0A%09%09%09else%20while%20%28true%29%0A%09%09%09%7B%0A%09%09%09%09if%20%28--i%3C0%29%20%0A%09%09%09%09%7B%0A%09%09%09%09%09if%20%28current%3D%3D%27about%3Ablank%27%29%20//%20replace%20blank%20tab%0A%09%09%09%09%09%09loadURI%28this.url2xul%29%3B%0A%09%09%09%09%09else%20//%20add%20new%20tab%20%0A%09%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.addTab%28this.url2xul%29%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%09if%20%28t%5Bi%5D.linkedBrowser.currentURI.spec%3D%3Dthis.url2xul%29%20//%20popup%20loaded%0A%09%09%09%09%7B%0A%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.tabContainer.childNodes%5Bi%5D%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B History. и там и там - обычную историю. в табе открываеть сие смысла мало, но всё же... Выделить код Код:custombutton://History%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADEklEQVR4Xm2TXWwUVRiGn5mdbfenW4Ziba0pWSNLAokaJSrFwCJobEg0I3pDDNoVEmNIFEkAb7hqg14gmKbtjSlrmjSERO2GaAwlBRo1oIH4c7EqVLopNWgpy0qzdGdn5nzObPbCEt/kOZOTfO97zpnvHI17tOqNM6a4ylKOk1aOl1RVB+W4Bc92JpXr5ua+y5T4j5YEpDITlnheVplR88nH20i1x3A9IT9zh0sXZ6j+OltSVTdT/PntHHXp1LV619msFjHGtryy1jzd10X29RRNxQWMP/5kILOWr/pfYMfB50y9qXGsOXU0uyTAN1tao9Hz7p519HY/SEskRMWD7g0dvNi9Gk8gGtLY9XyS/f2vEkpEemIdhy0ALfXmhImS6a3+yvu3PEBYB78WDVACrkBVwYG3MjTEE+zu7Wd0fIqT+04Ex3lIF09ZsY5mc8f6tlqh7dWgEhDM6+Yzp75g3dZtzNuKzkc7aU61m8r1LF1cL51c1ULE0ANDjcX6Nwg56JvHffPeoRN4azZxbrbM9D82K59dE3QnrQetun9FlNGx37l2/Q53PVj06TvwHkfeyZAb/ZSNO/fwl61hCzRUXa6f+40V7cuCgKTuD2gC8zcXmC97zNtwy2e6UCCdTgNweugDhndvI1Itk9CFcLlM1NBABCO4JOVima7tT2CENEq2EAkJe48Nk79wnuMXr5BobafiCRUxiCdCbN65ngufXwYo+AHO5JXvCz1dz6ykMazTZPiENSKty0la2xEBRwl3XWHBUYSqClc08l/+BDAZ/IPcTP5G6e+rc8QMjYRvbm7QWdagYYYJ8OdagB+s+zU6s5cLFC5Nl4CccePsa6XWp4czJwe+GXts4GVisQjxEDWKJRvXcWm5Lw5oVBXcKlYYef8zgAwcLVEXyx8ZzKY2H5fhiRmZKovM2SKHs7/IoSPfyuyiSH5BZPDUVWnr7BXYd4z/U+Lhj6x454e3N700IkMjP8r4+Wvy9cSUfPzJD/LUxsHAeNvHWvoa71G0ra92w1TVSfskgzaLkgIwCeSWbBv4F2vVgQlhKqMWAAAAAElFTkSuQmCC%5D%5B%5D%5Bthis.url2xul%3D%20%27chrome%3A//browser/content/history/history-panel.xul%27%3B%0Athis.onClick%3D%20function%28e%29%0A%7B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20toggleSidebar%28%27viewHistorySidebar%27%29%3B%20break%3B%0A%09%09case%201%3A%20%0A%09%09%7B%0A%09%09%09var%20t%3D%20gBrowser.mTabs%3B%0A%09%09%09var%20current%3D%20content.document.location.href%3B%0A%09%09%09var%20i%3D%20t.length%3B%0A%09%09%09if%20%28current%3D%3Dthis.url2xul%29%20gBrowser.removeCurrentTab%28%29%3B%20%0A%09%09%09else%20while%20%28true%29%0A%09%09%09%7B%0A%09%09%09%09if%20%28--i%3C0%29%20%0A%09%09%09%09%7B%0A%09%09%09%09%09if%20%28current%3D%3D%27about%3Ablank%27%29%20//%20replace%20blank%20tab%0A%09%09%09%09%09%09loadURI%28this.url2xul%29%3B%0A%09%09%09%09%09else%20//%20add%20new%20tab%20%0A%09%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.addTab%28this.url2xul%29%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%09if%20%28t%5Bi%5D.linkedBrowser.currentURI.spec%3D%3Dthis.url2xul%29%20//%20popup%20loaded%0A%09%09%09%09%7B%0A%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.tabContainer.childNodes%5Bi%5D%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Download. и там и там - менеджер закачек. имхо, лучше пользоваться сайдбаром или табом вместо стандартного всплывающего окошка, посему всплытие оного рекомендую отключить в настройках. Выделить код Код:custombutton://Downloads%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuklEQVR4XnWSS2hUVxiAv/OaezN3kpkmjVq1JV1FqNiF1D6gtAvbBIPo0oVdlOKuoO2iFlyUtjtxjIK4qMWFaHBREFyoFFoslvqor4yalqjEGtpOm8lMOnPncSe55/TCDEgQP/jgwOF85/xwBMEhwIETO3PZ/iPZbBDYBJ6AEInSk+X5v8LaXP4zmDkGPgACPQ6xRfr+5a/Gt7+xdWQl1aZFiOWBjKc4cXqO/L5dj7DfD0OqDaAxEnBIT6m1QwEvrFak62pZACCXgTUvpkH7Ae0oDVE3kFKgJfjaFkPHw3+hVuNJwIGQMGihGgHCWcDSRfOcD2EbehS1WDAfQtjozg14prO+fR9uTsdgFER0EBJNv98J+sY1liSlGjSaoBWoxKmi45e7MfcKjuKjGHwHoWjRtx6waBwgQ6xdisNIMh9CFEFzCW79DT/fh4UkQksgAgmiFbN6m2bFWJuZo2jlB2dTemANzg3PtcBUIGzC4wX4owzKCIJBTVwXxNay+PxbgyjvKt6qFkIdEOb14+FroyPBy0MZlJ8mRtNoQ72V2IZKHUqJYc0Rl5rECxFxS+PCSzD16Tlly4XHbblqdP2bm8zwSxoDeAp0IoBzYC1EVmAxQA+2egOmv5ilMrlPAJDZuKVvwwendnz8Ye7VdX38U+7cXE6cq3VtwHwZoqkL2Ot7f6Nc2AEUJNJAyjtXnZx4fyK/v3j97n+sXQn9vRB4HXsDUALav3+HvbL7RnJ4DCgASACEAi/1azh5/J2TB76euXitxEAOsmnozXT+XPHyBPFPe36kOj0KzNBF0gVhwKjpxTvHNp0++OXt8xdn6cnAfHmRO2ePuOiHT87Q/HMMKLEMaWDg7cR3IT0E3gAEQxmx7qNLr+ydctnN+RjZ+y0geRo0y+iOY0zoZs+/d++bW4epPqhga5/zDP4HPDMe0LQJb6wAAAAASUVORK5CYII%3D%5D%5B%5D%5Bthis.url2xul%3D%20%27chrome%3A//mozapps/content/downloads/downloads.xul%27%3B%0Athis.onClick%3D%20function%28e%29%0A%7B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20if%20%28document.getElementById%28%27sidebar-box%27%29.getAttribute%28%27sidebarcommand%27%29%29%20//%20close%20sidebar%0A%09%09%09%09toggleSidebar%28%29%3B%0A%09%09%09else%20%20//%20open%20in%20sidebar%0A%09%09%09%09openWebPanel%28this.tooltipText%2C%20this.url2xul%29%3B%20%0A%09%09%09break%3B%0A%09%09case%201%3A%20%0A%09%09%7B%0A%09%09%09var%20t%3D%20gBrowser.mTabs%3B%0A%09%09%09var%20current%3D%20content.document.location.href%3B%0A%09%09%09var%20i%3D%20t.length%3B%0A%09%09%09if%20%28current%3D%3Dthis.url2xul%29%20gBrowser.removeCurrentTab%28%29%3B%20%0A%09%09%09else%20while%20%28true%29%0A%09%09%09%7B%0A%09%09%09%09if%20%28--i%3C0%29%20%0A%09%09%09%09%7B%0A%09%09%09%09%09if%20%28current%3D%3D%27about%3Ablank%27%29%20//%20replace%20blank%20tab%0A%09%09%09%09%09%09loadURI%28this.url2xul%29%3B%0A%09%09%09%09%09else%20//%20add%20new%20tab%20%0A%09%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.addTab%28this.url2xul%29%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%09if%20%28t%5Bi%5D.linkedBrowser.currentURI.spec%3D%3Dthis.url2xul%29%20//%20popup%20loaded%0A%09%09%09%09%7B%0A%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.tabContainer.childNodes%5Bi%5D%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Add-ons. и там и там - менеджер расширений. Выделить код Код:custombutton://Add-ons%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUklEQVR4XqVTv0vDQBR+SS4m9tIOsQiKXR1EXMRVruKiIrgo6OIkmawKVlr8AxwUQbciOHbSQVyK+OMmQUdRRAouFXFxSMFBhJ7JQQ5r7qrQB4F399735ct7XzTGGLQTSHbZv5Peq1bfh37esRLL/psgBF9ulUl0Hisu0JYKNE+7ihV0C05rBzCdWQLRI1EjFFxvn5DfJBZKBERI1F7YI8xtFKj0Ewy9A85ey80EBoaLtyNxxq6tngHSTZjsW+Q5B0nCNjvVBMNr43RkcABmp0aJjRw5AUqIeQS9d7fLDyuRD0Rhf3NdSZDswiKfz+VpOEwUf4sTPFhK8OUDj1TaUfqAg1UKUm7yTx9wcLfbE2v063WwwQHizcjXWCs9811/NHxYPczTys15E0Fl95gEBGojGWDC0+c9zwOwaIoUhqayAKvX2OtlKLSIbG5CWm/7d/4GwUhlMxyCjq8AAAAASUVORK5CYII%3D%5D%5B%5D%5Bthis.url2xul%3D%20%27chrome%3A//mozapps/content/extensions/extensions.xul%27%3B%0Athis.onClick%3D%20function%28e%29%0A%7B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20if%20%28document.getElementById%28%27sidebar-box%27%29.getAttribute%28%27sidebarcommand%27%29%29%20//%20close%20sidebar%0A%09%09%09%09toggleSidebar%28%29%3B%0A%09%09%09else%20%20//%20open%20in%20sidebar%0A%09%09%09%09openWebPanel%28this.tooltipText%2C%20this.url2xul%29%3B%20%0A%09%09%09break%3B%0A%09%09case%201%3A%20%0A%09%09%7B%0A%09%09%09var%20t%3D%20gBrowser.mTabs%3B%0A%09%09%09var%20current%3D%20content.document.location.href%3B%0A%09%09%09var%20i%3D%20t.length%3B%0A%09%09%09if%20%28current%3D%3Dthis.url2xul%29%20gBrowser.removeCurrentTab%28%29%3B%20%0A%09%09%09else%20while%20%28true%29%0A%09%09%09%7B%0A%09%09%09%09if%20%28--i%3C0%29%20%0A%09%09%09%09%7B%0A%09%09%09%09%09if%20%28current%3D%3D%27about%3Ablank%27%29%20//%20replace%20blank%20tab%0A%09%09%09%09%09%09loadURI%28this.url2xul%29%3B%0A%09%09%09%09%09else%20//%20add%20new%20tab%20%0A%09%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.addTab%28this.url2xul%29%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%09if%20%28t%5Bi%5D.linkedBrowser.currentURI.spec%3D%3Dthis.url2xul%29%20//%20popup%20loaded%0A%09%09%09%09%7B%0A%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.tabContainer.childNodes%5Bi%5D%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B View Source. соответственно просмотр исходников в сайдбаре и табе. при всплытии таба перегружает его автоматом. Выделить код Код:custombutton://View%20Source%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABxklEQVR4XqVSS47aUBCs5w9GKOITAs4soxwhF8gtuAYcJIJjcIAsuEWySTRJVtHAxISR+NmYZ9nuuFojC8mbkVJS082jX1V3Pcx8Phf8Bzx+TKdTfP6RwWYFvj5YfFlbxJccSVogZtgSRQlABEQpBtGn91gsFkqg+BCWCFoBPr7zkFwDuJ6PsuTFssoCazMYY2Acg+v1ihpcgVg//Nb8uFlL9LgWkbKKoopcbBrLz/tvcomP8vT3j/y6/y4E79YTjMM7zf3Ba7RaLVUlOHVeGrwZ38HxAhg3x3D89tYDBXzfZ9LxjscjRqMRoiiC53kYDAZwHAd5niMIAuYGQY0sy9But1EUhXrQ6XS0fobWt3AA1Moign6/T1U1LAxDTqbnSZKQnDV7mwS73U7zdrvFfr+nujYT1lpsNhuWJGJv8xXiOJY0TeV0OknVxJpZz8/ns1S+SKXM3xn1K3CCWpmqh8OBNY1S1YqAK3EVTsIeRtNEus4mRq/Xo+vqR7fbrddYrVZ4RpOgGlPffzgccneaSCXuTBL9TkwmEyb9G89ms1f1ClRmE8N1XV2h8oFPWp8RN5d9eqomvhTL5VKNa6xAxheCygY3+AdSq3K+SO25KQAAAABJRU5ErkJggg%3D%3D%5D%5B%5D%5Bthis.onClick%3D%20function%28e%29%0A%7B%0A%09var%20current%3D%20content.document.location.href%3B%0A%09var%20url%3D%20%27view-source%3A%27%20+%20current%3B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20if%20%28document.getElementById%28%27sidebar-box%27%29.getAttribute%28%27sidebarcommand%27%29%29%20//%20close%20sidebar%0A%09%09%09%09toggleSidebar%28%29%3B%0A%09%09%09else%20%20//%20open%20in%20sidebar%0A%09%09%09%09openWebPanel%28current%2C%20url%29%3B%20%0A%09%09%09break%3B%0A%09%09case%201%3A%20%0A%09%09%7B%0A%09%09%09var%20t%3D%20gBrowser.mTabs%3B%0A%09%09%09var%20i%3D%20t.length%3B%20%0A%09%09%09while%20%28true%29%0A%09%09%09%7B%0A%09%09%09%09if%20%28--i%3C0%29%20%0A%09%09%09%09%7B%0A%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.addTab%28url%29%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%09if%20%28t%5Bi%5D.linkedBrowser.currentURI.spec%3D%3Durl%29%20//%20popup%20loaded%0A%09%09%09%09%7B%0A%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.tabContainer.childNodes%5Bi%5D%3B%0A%09%09%09%09%09BrowserReload%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Error Console. и там и там - консоль ошибок. Выделить код Код:custombutton://Error%20Console%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAChklEQVR4Xn1TTUtbQRQ9L3lqIvnAWFNjQPxauOgPEPEn2J3iRkqzUASLRUSXLl1IQRdCu3VTN9L8ARGJkgrdCLbRmC4kIdqo0aZp8qJJnN4z9BWhtgcOj5m5d+45d+4zRkdHX87Ozs47HA7jXoD/QCml2dTUZB4fH+fm5uZeGQcHB9/6+vqenp2dwe1ywWmacDqdjyYTtVoNxWIR/f39mJ6efmc+aW11xeNx5C0LPo8HJ4eH+CkBhmHgMdTrdbDY6uoqmpubvaZE6oqpoyO8mJpCMBzG2+Vl3Eug4XD8dRFd+v1+lMtlqlGmeAfRFgohurGB+M4OMqenOtGkHaFtgXt3d3fsAUqlEgizoaEBt7e3mJmYgFsOgsEgno+MoLWtDV+TSezv7jKZ1TQvLi7Q0dEBGybl8+ZatYq6XFa2LMS2t+GShloikxXpm0UsOSMZzz2C+rXUlpYWBAIBeL1eWCKvWCiwD/TLPU2fzwePNLqxsVGrIRwCkPTldrsZYF/GL5OYzH2e6zja/qOAcii3p6cHXV1d6O7uJvW6t7dXf+0z+zwcDrMvfD3DzOfzlcHBQf/W1hZl0TP9sgKfzG4e1/Ru72sblUqlagwPD89EIpHXnJFCoVAKhUKdMpmBqjSVZAKrXV9f15PJZFr2fsgA+WRtra2tzUNgCL3C8OTk5JtYLPY9lUqpdDqtMpmM/kqikpFX0Wj0ZGhoKALAL/TgIcbHxxfUb1xdXanz83OVy+VUNptViURCrwm5vCjNfQbCfkZib29vf3NzM3t5eclOa9pP3N7ezrmHqMH6+nri5uamgH+gc2BgYEGsfFhaWvokP8yXlZWVz4uLix/HxsbeS2+mOPV4gF+2zl1OzFwo7QAAAABJRU5ErkJggg%3D%3D%5D%5B%5D%5Bthis.url2xul%3D%20%27chrome%3A//global/content/console.xul%27%3B%0Athis.onClick%3D%20function%28e%29%0A%7B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20if%20%28document.getElementById%28%27sidebar-box%27%29.getAttribute%28%27sidebarcommand%27%29%29%20//%20close%20sidebar%0A%09%09%09%09toggleSidebar%28%29%3B%0A%09%09%09else%20%20//%20open%20in%20sidebar%0A%09%09%09%09openWebPanel%28this.tooltipText%2C%20this.url2xul%29%3B%20%0A%09%09%09break%3B%0A%09%09case%201%3A%20%0A%09%09%7B%0A%09%09%09var%20t%3D%20gBrowser.mTabs%3B%0A%09%09%09var%20current%3D%20content.document.location.href%3B%0A%09%09%09var%20i%3D%20t.length%3B%0A%09%09%09if%20%28current%3D%3Dthis.url2xul%29%20gBrowser.removeCurrentTab%28%29%3B%20%0A%09%09%09else%20while%20%28true%29%0A%09%09%09%7B%0A%09%09%09%09if%20%28--i%3C0%29%20%0A%09%09%09%09%7B%0A%09%09%09%09%09if%20%28current%3D%3D%27about%3Ablank%27%29%20//%20replace%20blank%20tab%0A%09%09%09%09%09%09loadURI%28this.url2xul%29%3B%0A%09%09%09%09%09else%20//%20add%20new%20tab%20%0A%09%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.addTab%28this.url2xul%29%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%09if%20%28t%5Bi%5D.linkedBrowser.currentURI.spec%3D%3Dthis.url2xul%29%20//%20popup%20loaded%0A%09%09%09%09%7B%0A%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.tabContainer.childNodes%5Bi%5D%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Stylish. и там и там - менеджер стилей. в табе не нажимайте кнопку "ОК", а то браузер закроется ;-) Выделить код Код:custombutton://Downloads%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gQPFTcXrGmnbAAAAo9JREFUOMuNkk1sjEEYx38z79hd+1rd3aq2WlrEqjrhIIREiYuPg5BGpDiQCCIO4uSECIKERBBE4uNAhAvRRdKLCAckNDTiQKhU6lDdt/vO7nbfGYftllUJz2Uyz8z85/c8z1/sOXgpszgVV/wjPn3tH5oyrXX+1va23t/SgjWnegr2P+Psucv9F652NgEQiYedZPNB+cWzUmtNNpvF93183yeXy42uWmu01nz42Mfundtq+np7nuJOjoVrWx6GJtQ8VYXAEY7j4HkeAFJKjDElPiEASCQSNNYnAaitrqpW1TPT0YmJ3ED3g0dq2AohhCCZTFY8Koe1FmvBjuxPXLgWmlTXPC/77W0KQClhbKFQEGWCskhZKAgMgTF43hA7D5xgUAsZVdlL3uc3vQAqpLCu6+K67pjOW2sxxlIMDPsPn+bdF4/pDTXmZdftveU7KuRYtNYMDAwgpUQIgZRyFL0YBBw6eZ70s/e0zGymrTURvOz69YkKOQJrLfF4HCnlSAlylODMxevc6upm1ozpbF41j9j4aAWlHC7mbTQaJZ/Po7XG930ynsdgJkNnOs2Nm7dJNTXQvizFru1bsdZWCvT98OWxOy8Ih8NEIhFC4TBBMUe68z5udDz7dnSwoW0O7evXl6j+6JMaEjF55O5zIt9fUetkePHkHp9eP2Hy3JW0LFxNXX0DaxcvxRk37q8WV8M4tKbquf/4CrO/3SEkoXYCNDY2srFjCyAIjCUIzAhBJYPKFy0Z6lixbhfx50NE3BhNizaxYOES+vu/Y0xpGsYETK1LjqlBSWBSrIqjHfOhY3nF4dT6mrHegAqrqiplMsM9DwePHtfdQgg5MsOSvy1CCClLeYQQQuZz+eLvAj8BP0QydNxNldoAAAAASUVORK5CYII%3D%5D%5B%5D%5Bthis.url2xul%3D%20%27chrome%3A//stylish/content/stylish.xul%27%3B%0Athis.onClick%3D%20function%28e%29%0A%7B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20stylishBrowserOverlay.openSidebar%28%29%3B%20break%3B%0A%09%09case%201%3A%20%0A%09%09%7B%0A%09%09%09var%20t%3D%20gBrowser.mTabs%3B%0A%09%09%09var%20current%3D%20content.document.location.href%3B%0A%09%09%09var%20i%3D%20t.length%3B%0A%09%09%09if%20%28current%3D%3Dthis.url2xul%29%20gBrowser.removeCurrentTab%28%29%3B%20%0A%09%09%09else%20while%20%28true%29%0A%09%09%09%7B%0A%09%09%09%09if%20%28--i%3C0%29%20%0A%09%09%09%09%7B%0A%09%09%09%09%09if%20%28current%3D%3D%27about%3Ablank%27%29%20//%20replace%20blank%20tab%0A%09%09%09%09%09%09loadURI%28this.url2xul%29%3B%0A%09%09%09%09%09else%20//%20add%20new%20tab%20%0A%09%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.addTab%28this.url2xul%29%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%09if%20%28t%5Bi%5D.linkedBrowser.currentURI.spec%3D%3Dthis.url2xul%29%20//%20popup%20loaded%0A%09%09%09%09%7B%0A%09%09%09%09%09gBrowser.selectedTab%3D%20gBrowser.tabContainer.childNodes%5Bi%5D%3B%20%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B Open Location. по средней кнопке просто открывает новый таб, а по левой - сайдбар с диалогом для ввода урла. не забываем, что в это поле можно дрегендропить текст, ссылки, табы и тд. Выделить код Код:custombutton://Open%20Location%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAB+ElEQVR4nK2TP2hTURSHv/teXmpTi0iUalHbLq0IdqirolBcHBTqUgWtdBWKAa2bCC7axclZUXAoglsXcbG6dLFoaONkkNBKmpjiS9/fe+9xSFt1iYV6pgOH38c5v3OOEhF2E86u1P8DkNlKzlydfpJauWCs099O4Dq27Dlqbv7lzE0ANj1wR8YK5WKpJHG0LnG0LlHYkCisSxTUJQxqEjTXJGiuyeJSUUbGCmXAFZHtDpxUS9/gQC+NHzXS1EesIdeVQ6wgWLQ2eF6WwWN5Ui19m+ObLQ+U1hqlHBxXWKrmcV0Xq2OMjtBJiE4Cmn4dBLTWAOovD4wxWLvBno4Oaqvr5Aa6mV/8TLURINayvyvDo9JDKrrCyr7fq98GADhODs+LuHz+EGkacer4YUzaGiGNQ0oLy7y+94zRG+MAWSDJDF8qyMmLt1oA18WaCJsGmCSl0/PQyjAxd5uF7x+x2jD7c7bV/CS+unIAdfTspJTfzAAu2viIibFWo43Fak0QRpx4eo4Hd+7ytvqODc8n53lM5acYnRhH9Z6+3vaWxWpWD76CzgSA4UI/nx6XW8UwS2bl/fOhdoBNn3qAbq4x4/fEQ3h84QXTkPgZoPwPAMA3oANL8ev9VYNlGfgAxGqn36iUygJHgL1AE6iISLJjwB8QBYiIJAC/AEheAlhU2OEsAAAAAElFTkSuQmCC%5D%5B%5D%5Bthis.url2xul%3D%20%27chrome%3A//local/content/open_location.xul%27%3B%0Athis.onClick%3D%20function%28e%29%0A%7B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20openWebPanel%28this.tooltipText%2C%20this.url2xul%29%3B%20break%3B%0A%09%09case%201%3A%20gBrowser.selectedTab%3D%20gBrowser.addTab%28%27about%3Ablank%27%29%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B чтобы это заработало нужно в папке с установленой мозиллой в папке chrome создать файл local.manifest с таким содержимым: потом создать там же папку local и внутри нее файл open_location.xul с такими потрохами: Выделить код Код:<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <!DOCTYPE window SYSTEM "chrome://browser/locale/openLocation.dtd"> <window id="openLocation" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="document.getElementById('url2open').focus()"> <hbox align="center"> <textbox id="url2open" flex="1" type="autocomplete" completeselectedindex="true" autocompletesearch="history" enablehistory="true" style="height:1.75em" /> <button label="open" oncommand="document.location=document.getElementById('url2open').value;" /> </hbox> </window> весьма простенько, но с поставленной задачей справляется на ура. не подскажите, как реализовать такие же кнопки для, например, Page Info или DOM Inspector'a? | ||||||||
Lain_13 > 04-07-2006 11:13:32 | ||||||||
Не знаю почему, но и одна из этих кнопок у мну сайдбар открыть не ухитрилась... Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1a3) Gecko/20060619... Более того Bookmark и History у мну не открылись даже в обычной панели... Ж( | ||||||||
Dark-Demon > 04-07-2006 23:49:02 | ||||||||
Оформил страничку со своими кнопочками: http://dark-demon.nm.ru/soft/custombuttons/ | ||||||||
Dark-Demon > 04-07-2006 23:50:49 | ||||||||
Lain_13 какая у тебя версия FF? | ||||||||
stoneflash > 04-07-2006 23:54:25 | ||||||||
Dark-Demon | ||||||||
igorsub > 05-07-2006 01:09:11 | ||||||||
Запрашиваемая страница не найдена. | ||||||||
Lain_13 > 05-07-2006 10:55:04 | ||||||||
Dark-Demon пишет
см. мой пост внимательно. Ж) Они к расширениям к каким либо привязаны или все должны работать отдельно? з.ы. Есть идея для всех, тут присутствующих. Надо создать плагин со списком возможных кнопок из которого их можно будет установить при условии наличия в системе КастомБаттонсов. Или прямо в баттонсы такую панельку вшить со страничкой. Много не займет, но если ее обновлять, то тем, кто поставит себе расширение, не понадобится лезть в инет за кнопочками... Они сразу там будут! (Хотя, конечно, самые новые версии кнопок будут тут...) | ||||||||
stoneflash > 05-07-2006 19:04:21 | ||||||||
Lain_13
Идея хорошая, но вшивать в расширение - это каждый раз обновлять само расширение. Сделать-то легко отдельное. | ||||||||
Dark-Demon > 06-07-2006 01:14:54 | ||||||||
версия ядра мне ни о чём не говорит. а оффициальная альфа датируется 20060526, которая у меня и стоит. думаю, дело в твоей ночнушке...
Сори
Не привязаны. Окромя Stylish Button ес-сно.
нет, нужно просто создать сайт потипу http://userstyles.org/
под FF
не понял фразу :-\
как я уже сказал, создать сайт, а в расширении разместить ссылку на него.
а ты посмотри более древние странички | ||||||||
Dark-Demon > 06-07-2006 01:17:17 | ||||||||
Ой, глянул своё творение, - действительно жуть. Я забыл закачать обновлённую таблицу стилей. Сейчас всё в порядке. | ||||||||
Lain_13 > 06-07-2006 11:11:10 | ||||||||
Dark-Demon пишет
1. реализация в видео отдельного плагина с обновлением открывающегося в сайдбаре не менее удобна в плане юзабилити. не надо на сайт заходить. смотреть что там поменялось... просто нажал найти обновления и если нету значит нету Ж(. А генерировать плагин можно со страничке на сайте. Никто ее не отменяет, идея хорошая. | ||||||||
Dark-Demon > 06-07-2006 20:02:32 | ||||||||
Новая кнопочка. Flip Tabbar. Если таббар у вас расположен вертикально (http://userstyles.org/style/show/603), то сия кнопка по среднему щелчку переключает режим увеличения ширины таббара при наведении. Выделить код Код:custombutton://Flip%20Tabbar%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAABGklEQVR4nKWTO04DMRiEx3ayixZR0aAgRGjoSEHNNkg0FCBBRwFXIBQcgp7TcAEOgKKU2yGhhSwg2IcfQwEFyT6yUUZy5fHn8a+xIIllJBc9sBleTd24MGBWnbqN8OL2XjseWyf7jQSSpQVA7Z8No6fxmHmWMM8SZumEWfrK3sEl/3vrEkhtuL2708PkLYbWn6CzCFaDsrEGIIwxEEJCKmL0sg6lFJzJWwNgrYVzX1jxfcTPCYJgDY+jqD0AAKQM0O36OD/aQMfzEA76JU9pBoPTIfdOrn8BSsHZDE5/wxYapJsPSN4/ED3cAVAwRQzaHKSDkAJppucDrDXYOrxpetm0KjrQqNke1A3RaxugBPgjF1UNrUoolv3OP69LsdagzuDeAAAAAElFTkSuQmCC%5D%5B/*%20you%20need%20to%20install%20this%20stylesheet%3A%20http%3A//userstyles.org/style/show/603%20*/%20%5D%5Bthis.PS%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.pref%3D%20%27custombuttons.fliptabbar.enable%27%3B%0A%0Avar%20tb%3D%20gBrowser.mStrip%3B%0Atb.openwidth%3D%20tb.boxObject.width%3B%0Atb.closewidth%3D%2078%3B%0A%0Athis.onClick%3D%20function%28e%29%0A%7B%0A%09switch%20%28e.button%29%0A%09%7B%0A%09%09case%200%3A%20BrowserOpenTab%28%29%3B%20break%3B%0A%09%09case%201%3A%20this.PS.setBoolPref%28this.pref%2C%20%21getBoolPref%28this.pref%2Ctrue%29%29%3B%20break%3B%0A%09%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%27this.onClick%28event%29%3B%27%29%3B%0A%0Atb.fliptabbar%3D%20function%28s%29%0A%7B%0A%09if%20%28s%3D%3Dthis.tabbarstate%29%20this.width%3D%20%28s%29%3Ftb.openwidth%3Atb.closewidth%3B%0A%7D%3B%0A%0Athis.changeFTB%3D%20function%28%29%0A%7B%0A%09var%20tb%3D%20gBrowser.mStrip%3B%0A%09if%20%28getBoolPref%28this.pref%2Ctrue%29%29%0A%09%7B%0A%09%09tb.omov%3D%20tb.onmouseover%3B%20tb.omou%3D%20tb.onmouseout%0A%09%09tb.onmouseover%3D%20function%20%28%29%20%0A%09%09%7B%0A%09%09%09tb.tabbarstate%3Dtrue%3B%20%0A%09%09%09setTimeout%28%22gBrowser.mStrip.fliptabbar%28true%29%22%2C500%29%3B%0A%09%09%7D%3B%0A%09%09tb.onmouseout%3D%20function%20%28%29%20%0A%09%09%7B%0A%09%09%09tb.tabbarstate%3Dfalse%3B%20%0A%09%09%09setTimeout%28%22gBrowser.mStrip.fliptabbar%28false%29%22%2C250%29%3B%0A%09%09%7D%3B%0A%09%09tb.width%3D%20tb.closewidth%3B%0A%09%09this.image%3D%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAABGklEQVR4nKWTO04DMRiEx3ayixZR0aAgRGjoSEHNNkg0FCBBRwFXIBQcgp7TcAEOgKKU2yGhhSwg2IcfQwEFyT6yUUZy5fHn8a+xIIllJBc9sBleTd24MGBWnbqN8OL2XjseWyf7jQSSpQVA7Z8No6fxmHmWMM8SZumEWfrK3sEl/3vrEkhtuL2708PkLYbWn6CzCFaDsrEGIIwxEEJCKmL0sg6lFJzJWwNgrYVzX1jxfcTPCYJgDY+jqD0AAKQM0O36OD/aQMfzEA76JU9pBoPTIfdOrn8BSsHZDE5/wxYapJsPSN4/ED3cAVAwRQzaHKSDkAJppucDrDXYOrxpetm0KjrQqNke1A3RaxugBPgjF1UNrUoolv3OP69LsdagzuDeAAAAAElFTkSuQmCC%27%3B%0A%09%7Delse%7B%0A%09%09tb.onmouseover%3D%20tb.omov%3B%0A%09%09tb.onmouseout%3D%20tb.omou%3B%0A%09%09tb.width%3D%20tb.openwidth%3B%0A%09%09this.image%3D%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAB+ElEQVR4nK2TP2hTURSHv/teXmpTi0iUalHbLq0IdqirolBcHBTqUgWtdBWKAa2bCC7axclZUXAoglsXcbG6dLFoaONkkNBKmpjiS9/fe+9xSFt1iYV6pgOH38c5v3OOEhF2E86u1P8DkNlKzlydfpJauWCs099O4Dq27Dlqbv7lzE0ANj1wR8YK5WKpJHG0LnG0LlHYkCisSxTUJQxqEjTXJGiuyeJSUUbGCmXAFZHtDpxUS9/gQC+NHzXS1EesIdeVQ6wgWLQ2eF6WwWN5Ui19m+ObLQ+U1hqlHBxXWKrmcV0Xq2OMjtBJiE4Cmn4dBLTWAOovD4wxWLvBno4Oaqvr5Aa6mV/8TLURINayvyvDo9JDKrrCyr7fq98GADhODs+LuHz+EGkacer4YUzaGiGNQ0oLy7y+94zRG+MAWSDJDF8qyMmLt1oA18WaCJsGmCSl0/PQyjAxd5uF7x+x2jD7c7bV/CS+unIAdfTspJTfzAAu2viIibFWo43Fak0QRpx4eo4Hd+7ytvqODc8n53lM5acYnRhH9Z6+3vaWxWpWD76CzgSA4UI/nx6XW8UwS2bl/fOhdoBNn3qAbq4x4/fEQ3h84QXTkPgZoPwPAMA3oANL8ev9VYNlGfgAxGqn36iUygJHgL1AE6iISLJjwB8QBYiIJAC/AEheAlhU2OEsAAAAAElFTkSuQmCC%27%3B%0A%09%7D%3B%0A%7D%0A%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.changeFTB.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0A%0Athis.changeFTB%28%29%3B | ||||||||
Dimanish > 23-07-2006 13:46:59 | ||||||||
Ребят, а реально замутить кнопку для SessionSaver, т.е., чтобы по нажатию левой кнопки мыши на кнопке SessionSaver выдвигался бы список, аналогичный SessionSaver из пункта меню "Инструменты"? Добавлено: | ||||||||
Dark-Demon > 03-08-2006 01:41:01 | ||||||||
Ян, Люцифер тут интересную фишку сварганил (http://forums.mozillazine.org/viewtopic.php?p=2402639) не хочешь к своему расширению подцепить? | ||||||||
Dimanish > 03-08-2006 02:07:30 | ||||||||
Люди, состряпайте кнопку Online\Offline для Thunderbird, пожалуйста. | ||||||||
kuroneko > 09-08-2006 20:11:19 | ||||||||
Пытаюсь сделать кнопку с выпадающим списком букмарков. Результат - видны только 3 предопределённых пункта. Посоветуйте, пожалуйста, как добавить недостающее ^_^ | ||||||||
Dark-Demon > 10-08-2006 03:52:53 | ||||||||
kuroneko, там это меню специальным скриптом создаётся. смотри свойство onpopupshowing. | ||||||||
kuroneko > 10-08-2006 11:07:32 | ||||||||
Dark-Demon пишет
Угу. В том-то и дело, и вызов этого скрипта "в лоб" не срабатывает.
Читал я эту тему. Устанавливать дополнительное расширение ради одной кнопки не хочется, а посмотреть, как оно реализовано... я не слишком силён в XUL-программировании, и пока не совсем понимаю. Сейчас пытаюсь пойти по другому пути - имитировать клик по оригинальному меню. | ||||||||
Anton > 10-08-2006 13:55:26 | ||||||||
kuroneko пишет
Я как то делал скрипт для keyconfig, вроде работало. | ||||||||
kuroneko > 10-08-2006 14:14:18 | ||||||||
Anton пишет
Угу. До чего-то похожего я уже дошёл. | ||||||||
m435tr0d > 10-08-2006 21:43:50 | ||||||||
http://custombuttons2.com/forum/ | ||||||||
Dark-Demon > 11-08-2006 00:30:47 | ||||||||
kuroneko, попробуй внаглую выдрать это меню и вставить в свою кнопку. | ||||||||
kuroneko > 11-08-2006 03:47:55 | ||||||||
Вот, может кому пригодится. При первом нажатии меняет заголовок активного таба на (Untitled) с соответствующей иконкой, при повторном - возвращает. Чтобы особо любопытные сотрудники не видели, что за табы открыты в фоне ^_^ Выделить код Код:custombutton://TRename%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHnSURBVDjLpZLbaxNREMZjk7obSHYtXmtD21QtxiIWJK2+GG+UilQsFaLWS0StiYpBFGkpGGmeauhFo1JFzVMRRCjkHwiCoA95zqOuDwEtirgPIqj5ObsJglC1iwMfw8yZ7zvnzIwLcP0P/mj3dXWdYGpCU9olXOJyakJ+kw+3M6OrbyX0OhIRcupZRws8SWP5m5oyIWllsWRd8Kk8dhYeXKE8dtp6xecexROUY/diBHKF3i5KiVOUUilK52MU9oWZ0pSncqz+ixzJrdEx71zFmM5gmXErg3nvMlZ+xLf0oJR5/iZQKB7ZC9mLGPFoVSARpZI9RzG6k6ymvpQy/4INFfLJ2dZV8HAYknswdm2oCoRW8i2ynsroCWYDy0n7laSU1y/cuOFBuC43H9uK0dnE80iE163L+LJ5BV8HtlGO9doN7VM9zUKr+21s+c42mLwABzbBjiBGLld9gXgz1MDHNh/fL/WTDwUY9yuTvxoq5NUCzBsxKoPbqXQH+BFuojw3ZwtY/n3Qx7tmLx+6WjATfVj1h731G+2xWuta3N8N43FID1UhOzAfP4SRPMP8UD+MHoeRo3AtaqO4ewsZTXlkb6j8afqurr64ramvnEAEHnd46hpdtbk2CKxgrQM01ni2uWtCTuH+CTReO8ZCTKnoAAAAAElFTkSuQmCC%5D%5Bvar%20CurTab%20%3D%20document.getElementById%28%27content%27%29.selectedTab%3B%0Aif%20%28CurTab.hasAttribute%28%22prev_label%22%29%29%20%7B%0A%20CurTab.setAttribute%28%22label%22%2CCurTab.getAttribute%28%22prev_label%22%29%29%3B%0A%20CurTab.removeAttribute%28%22prev_label%22%29%3B%0A%20CurTab.setAttribute%28%22image%22%2CCurTab.getAttribute%28%22prev_image%22%29%29%3B%0A%20CurTab.removeAttribute%28%22prev_image%22%29%3B%0A%7D%20else%20%7B%0A%20CurTab.setAttribute%28%22prev_label%22%2CCurTab.getAttribute%28%22label%22%29%29%3B%0A%20CurTab.setAttribute%28%22label%22%2C%22%28Untitled%29%22%29%3B%0A%20CurTab.setAttribute%28%22prev_image%22%2CCurTab.getAttribute%28%22image%22%29%29%3B%0A/*%20CurTab.setAttribute%28%22image%22%2C%22chrome%3A//browser/skin/Bookmarks-folder.png%22%29%3B%0A*/%0A%20CurTab.setAttribute%28%22image%22%2C%22%22%29%3B%0A%7D%0A%5D%5B/*Initialization%20Code*/ | ||||||||
m435tr0d > 11-08-2006 15:47:50 | ||||||||
Выделить код Код:custombutton://TRename%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHnSURBVDjLpZLbaxNREMZjk7obSHYtXmtD21QtxiIWJK2+GG+UilQsFaLWS0StiYpBFGkpGGmeauhFo1JFzVMRRCjkHwiCoA95zqOuDwEtirgPIqj5ObsJglC1iwMfw8yZ7zvnzIwLcP0P/mj3dXWdYGpCU9olXOJyakJ+kw+3M6OrbyX0OhIRcupZRws8SWP5m5oyIWllsWRd8Kk8dhYeXKE8dtp6xecexROUY/diBHKF3i5KiVOUUilK52MU9oWZ0pSncqz+ixzJrdEx71zFmM5gmXErg3nvMlZ+xLf0oJR5/iZQKB7ZC9mLGPFoVSARpZI9RzG6k6ymvpQy/4INFfLJ2dZV8HAYknswdm2oCoRW8i2ynsroCWYDy0n7laSU1y/cuOFBuC43H9uK0dnE80iE163L+LJ5BV8HtlGO9doN7VM9zUKr+21s+c42mLwABzbBjiBGLld9gXgz1MDHNh/fL/WTDwUY9yuTvxoq5NUCzBsxKoPbqXQH+BFuojw3ZwtY/n3Qx7tmLx+6WjATfVj1h731G+2xWuta3N8N43FID1UhOzAfP4SRPMP8UD+MHoeRo3AtaqO4ewsZTXlkb6j8afqurr64ramvnEAEHnd46hpdtbk2CKxgrQM01ni2uWtCTuH+CTReO8ZCTKnoAAAAAElFTkSuQmCC%5D%5Bvar%20CurTab%20%3D%20document.getElementById%28%27content%27%29.selectedTab%3B%0A%0Aif%20%28CurTab.hasAttribute%28%22prev_label%22%29%29%20%7B%0A%20CurTab.setAttribute%28%22label%22%2CCurTab.getAttribute%28%22prev_label%22%29%29%3B%0A%20CurTab.removeAttribute%28%22prev_label%22%29%3B%0A%20CurTab.setAttribute%28%22image%22%2CCurTab.getAttribute%28%22prev_image%22%29%29%3B%0A%20CurTab.removeAttribute%28%22prev_image%22%29%3B%0A%20this.image%20%3D%20this.truetitle%3B%0A%7D%20else%20%7B%0A%20CurTab.setAttribute%28%22prev_label%22%2CCurTab.getAttribute%28%22label%22%29%29%3B%0A%20CurTab.setAttribute%28%22label%22%2C%22%28Untitled%29%22%29%3B%0A%20CurTab.setAttribute%28%22prev_image%22%2CCurTab.getAttribute%28%22image%22%29%29%3B%0A/*%20CurTab.setAttribute%28%22image%22%2C%22chrome%3A//browser/skin/Bookmarks-folder.png%22%29%3B%0A*/%0A%20CurTab.setAttribute%28%22image%22%2C%22%22%29%3B%0A%20this.image%20%3D%20this.falsetitle%3B%0A%7D%0A%5D%5Bthis.truetitle%20%3D%20this.image%3B%0Athis.falsetitle%20%3D%20%22data%3Aimage/png%3Bbase64%2C%5C%0AiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%5C%0A/9hAAACRElEQVR4XpWSS0hUURzGf+fcedy66owKcp%5C%0A3RwbJEfJRklglGSAsfgSRSgyZkExHiC3pgBbVrUwt%5C%0AbuDVyF0RQ0NqF0QOiLMzS0opepIKINjovTzIXQZ0M%5C%0A+sHHdw6H7+PPnyMGy/krdsG2aJTTp0a4M7nIOJsgN%5C%0AWCjhAJp4/quKi5fyuMGYGMTxOMDJKBCVGbu1wa3dx%5C%0AVoU32jHOmP1b/4zUMSQUYUrFU4irTrXMturtbIe0J%5C%0AGczXdO+nRBQaJIIY2TBBb5OiOWuN+qLWPoac6FWVB%5C%0AvHfbaboVDDyYpf+fOxAxnEnpXM1sbWDkQwrDL1/x/%5C%0AI2DLf562oq44IS0hALWEuGkWeMqEbl+tjqWUAqS9Q%5C%0AjkHaOiITm/KYMzCQVhBStiKYzbyKLH9NcCBl5PmFg%5C%0AshGkuATrG8SrO7qUjXeJbV2AXYAMciq6sxtQc6SkH%5C%0AJjHNeaQMkuVdAMbALGR3U5LnhEl3wg4I43Pl05nWs%5C%0AAeYAyZwu3/Q2Kgwze9WATM46nMJHCJgahRjgVy2Ps%5C%0A15b4uRJgwX8Bb4yOzsGPPz35ieHovf4T0YdgoDjpT%5C%0A2HM4BAkBGQxSnlhJwH3YDn4HxeGBgYJS6umF6e98B%5C%0An6w3fiIOOmmpwV+kUwkgnS6u+DrkVrQg8AX4Gvei0%5C%0Al+U7FtY8Zl4EKYtaYtkd+Jsy+eiBF1M+FnwdUpDaH%5C%0AZQglWkTQEK1DKxyOpZgVBoEl7fJFx2jwLR7KG1IJm%5C%0AKiEICCoRlgBDxPCjWoQnEsznGH01xW2BhAyT/RwxQ%5C%0AfwCvBroM3KF3TQAAAABJRU5ErkJggg%3D%3D%22%3B | ||||||||
kuroneko > 11-08-2006 17:09:29 | ||||||||
m435tr0d пишет Не идеально. Если переключиться на другой таб, иконка кнопки не поменяется. | ||||||||
m435tr0d > 11-08-2006 17:21:47 | ||||||||
я понимаю | ||||||||
Dark-Demon > 18-08-2006 01:15:31 | ||||||||
что-то кнопочки в новых окнах не работают, только в первом... видимо не инициализируются. | ||||||||
Dimanish > 18-08-2006 13:25:34 | ||||||||
Кнопка "Быстро процитировать": Выделить код Код:custombutton://%u0411%u044B%u0441%u0442%u0440%u043E%20%u043F%u0440%u043E%u0446%u0438%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%7C%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0436%u0438%u0440%u043D%u044B%u043C%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACfElEQVQ4jc2SXUiTYRTHd5NYkIEfVEgXhbtQRCiNEQ1iZmhR70owQ2TsKlvdlKVBZFRY1ruZX2u6EG3BTGtapqn0MZN07SP3adqWH6lUrpZzbs5M9N/eZ7iLCKm7DhyeA8/z/50/5zks1n8R7WptTiDl/5g56zZEryEAVccr+bzrHn54uv4qmbeMJgCIIADFw6dy5sJt2gK3OQ4zA8nwjgjhG8+HdzgX3tE8+J018E0WYaURowkAoghAWtco909VofwmhdISClViPjyDezDrOATZLT6qyw6Tul6WiblPVwiI0YQA18vvEAefNVGY0kUTByuAmQFOoE6Fb6Iw6GC6mThgNCFA4WU65KCCpuB6uxHSUj6pZWVZ6FHXwz0zjZ+Li9COfEND9xtcEkt0O7icbQRw/PQF4uCLNio0A7dpM2Y/ZMM5cQ0DY3q09k9CZXMhUW6CqLMXT3SK7z06ZToBHBWeJA6Yrk59DDmlEj7Ghm/AMK2GxGrEQbkeKbdNSFPa0GbXQONQLduGe5sIICMzN/gL5q2YtR+BZ2g/mTxteIe0+0ZwKl8HxAYk15iRQb/Ec6seDwzvYfs4/pUAdu/j/3EPtrcMIq7GgviSPiRWGhFf3IOiF3Z4/T7Mzc/D7RxbIICEZG5eEoen+D3PND1D8+hjJFUbEXOuD5HCBsg6NXCMWGCxtGKovzHogAlmLZnNCn1NIKSq2rp22ylUaYtBidsQcawWEYK72JtfgRP0+aWO7tJG1mohLChgXy0XOVvUouXsyjqspWiwcmsRdkC8RJ2lrWLxxcxVAQlZWWECQQ5vFzdVGb5p5xRrffoCK5LnCo9NecRJF1BsNjv2F9wYBxnBxXjGAAAAAElFTkSuQmCC%5D%5B%5D%5Bthis.onclickFunction%3Dfunction%28event%29%7B%0Aswitch%20%28event.button%29%7B%0A%20%20case%200%3A%20loadURI%28%22javascript%3A%7Bta%20%3D%20%09%09%20%09window.document.getElementsByTagName%28%27textarea%27%29%3B%20%09ta%5Bta.length-1%5D.value%20+%3D%20%27%5Bquote%5D%27+document.getSelection%28%29+%27%5B/quote%5D%5Cn%27%3B%20ta%5Bta.length-1%5D.focus%28%29%3B%7D%22%29%3B%20break%3B%0A%20%20case%201%3A%20loadURI%28%22javascript%3A%7Bta%20%3D%20%09%09%20%09window.document.getElementsByTagName%28%27textarea%27%29%3B%20%09ta%5Bta.length-1%5D.value%20+%3D%20%27%5Bb%5D%27+document.getSelection%28%29+%27%5B/b%5D%5Cn%27%3B%20ta%5Bta.length-1%5D.focus%28%29%3B%7D%22%29%3B%20break%3B%0A%7D%0A%7D%0Athis.setAttribute%28%27onclick%27%2C%27this.onclickFunction%28event%29%3B%27%29%3B Работает на форумах. | ||||||||
petrovich > 26-08-2006 13:07:45 | ||||||||
Что случилось с Yan ом? Кто-нибудь знает? Его уже два месяца не видно. Может в армию забрали? | ||||||||
Yan > 04-09-2006 19:26:15 | ||||||||
petrovich В ближайшее время планирую привести мысли в порядок, прочесть все отзывы и пожелания, что накопились за это время, и заняться выпуском новой версии. | ||||||||
Dimanish > 07-09-2006 23:26:31 | ||||||||
Yan | ||||||||
Yan > 09-09-2006 12:36:35 | ||||||||
Dimanish nn-zh пишет
( url ) Вот "Enhanced Proxy" кнопка: Выделить код Код:custombutton://Enhanced%20Proxy%20Button%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUA/wCIiIgAAADd3d3///8AAICAAAD/AAAAAP8pkhnQAAAAAXRSTlMAQObYZgAAAF1JREFUeF4tyUERg0AQRNEJDjprAAYFQztYCglYWAlwzi2y053kn17Vj4AK9djJmo3jPP94exqv7zR6prFXvy8D+AG59DGExiJpoKC0gFQ9pmxUzwhNbqsBJ2iq+QNw+RI4rlZUrAAAAABJRU5ErkJggg%3D%3D%5D%5B/*%0AEnhanced%20Proxy%20Button%20by%20Yan%0A%0AEdit%20proxy%20settings%20in%20the%20Initialization%20Code.%0A%0A*/%5D%5Bvar%20Proxies%3D%5B%5D%3B%0Avar%20AutoCfgProxyFiles%3D%5B%5D%3B%0A//------Proxies--------%0AProxies.push%28%5B%27localhost%20%28example%29%27%2C%27127.0.0.1%27%2C%278080%27%5D%29%3B%0AProxies.push%28%5B%27Proxomitron%20%28example%29%27%2C%27127.0.0.1%27%2C%279090%27%5D%29%3B%0AAutoCfgProxyFiles.push%28%5B%27autoconf%20file1%20%28example%29%27%2C%27http%3A//localhost/conf.pac%27%5D%29%3B%0AAutoCfgProxyFiles.push%28%5B%27file2%20%28example%29%27%2C%27http%3A//example.com//file.pac%27%5D%29%3B%0A//------/Proxies-------%0A%0Athis.pref%3D%27network.proxy.type%27%3B%0Athis.setProxy%3Dfunction%28prtype%2Cprvalue%2Cport%29%7B%0A%20switch%28prtype%29%7B%0A%20%20case%20%27http%27%3A%09%7Bthis.PS.setIntPref%28this.pref%2C1%29%3B%0A%09%09%20this.PS.setCharPref%28%27network.proxy.http%27%2Cprvalue%29%3B%0A%09%09%20this.PS.setIntPref%28%27network.proxy.http_port%27%2Cport%29%3B%0A%20%20%09%09%7D%3Bbreak%3B%0A%20%20case%20%27file%27%3A%09%7Bthis.PS.setIntPref%28this.pref%2C2%29%3B%0A%09%09%20this.PS.setCharPref%28%27network.proxy.autoconfig_url%27%2Cprvalue%29%3B%0A%20%20%09%09%7D%3Bbreak%3B%0A%20%20case%20null%3A%09%7Bthis.PS.setIntPref%28this.pref%2C0%29%3B%0A%20%20%09%09%7D%3Bbreak%3B%0A%20%7D%0A%7D%0A%0A%20var%20nMItem%3Dfunction%28label%2Cp1%2Cp2%2Cp3%2Cobj%29%7B%0A%20%20%20var%20m%3Ddocument.createElement%28%27menuitem%27%29%3B%0A%20%20%20m.setAttribute%28%27label%27%2Clabel%29%3B%0A%20%20%20m.f%3Dobj.setProxy.bind%28obj%29%3B%0A%20%20%20m.setAttribute%28%27oncommand%27%2C%27this.f%28%27+%28p1%3F%28%27%22%27+p1+%27%22%27%29%3A%28%27null%27%29%29+%27%2C%27+%28p2%3F%28%27%22%27+p2+%27%22%27%29%3A%28%27null%27%29%29+%27%2C%27+%28p3%3F%28%27%22%27+p3+%27%22%27%29%3A%28%27null%27%29%29+%27%29%27%29%3B%0A%20%20%20var%20pr%3Dnull%3B%20%0A%20%20%20if%20%28p1%26%26p2%29%20pr%3Dp1+%27%3A%27+p2+%28p3%3F%28%27%3A%27+p3%29%3A%28%27%27%29%29%3B%0A%20%20%20if%20%28pr%29%20m.setAttribute%28%27pr%27%2Cpr%29%3B%0A%20%20%20m.setAttribute%28%27type%27%2C%27radio%27%29%3B%0A%20%20%20m.setAttribute%28%27name%27%2C%27radio%27%29%3B%0A%20%20%20return%20m%3B%0A%20%7D%0A%20var%20mP%3Ddocument.createElement%28%27menupopup%27%29%3B%0A%20%20for%20%28var%20i%3D0%3Bi%3CProxies.length%3Bi++%29%7B%0A%20%20%20mP.appendChild%28nMItem%28Proxies%5Bi%5D%20%5B0%5D%2C%27http%27%2CProxies%5Bi%5D%20%5B1%5D%2CProxies%5Bi%5D%20%5B2%5D%2Cthis%29%29%3B%0A%20%20%7D%0A%20%20if%20%28AutoCfgProxyFiles.length%3E0%29%7B%0A%20%20%20mP.appendChild%28document.createElement%28%27menuseparator%27%29%29%3B%0A%20%20%20for%20%28var%20i%3D0%3Bi%3CAutoCfgProxyFiles.length%3Bi++%29%7B%0A%20%20%20%20mP.appendChild%28nMItem%28AutoCfgProxyFiles%5Bi%5D%20%5B0%5D%2C%27file%27%2CAutoCfgProxyFiles%5Bi%5D%20%5B1%5D%2Cnull%2Cthis%29%29%3B%0A%20%20%20%7D%0A%20%20%7D%0A%20%20mP.appendChild%28document.createElement%28%27menuseparator%27%29%29%3B%0A%20%20mP.appendChild%28nMItem%28%27No%20proxy%27%2Cnull%2Cnull%2Cnull%2Cthis%29%29%3B%0A%20%20mP.f%3Dfunction%28%29%7B%0A%20%20%20var%20PS%3Dthis.parentNode.PS%3B%0A%20%20%20var%20pref%3D%27network.proxy.type%27%3B%0A%20%20%20var%20pr%3Dnull%3B%0A%20%20%20switch%28PS.getIntPref%28this.parentNode.pref%29%29%7B%0A%09case%201%3A%20pr%3D%27http%3A%27+PS.getCharPref%28%27network.proxy.http%27%29+%27%3A%27%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+PS.getIntPref%28%27network.proxy.http_port%27%29%3Bbreak%3B%0A%09case%202%3A%20pr%3D%27file%3A%27+PS.getCharPref%28%27network.proxy.autoconfig_url%27%29%3Bbreak%3B%0A%20%20%20%7D%0A%20%20%20if%20%28%21pr%29%20this.lastChild.setAttribute%28%27checked%27%2Ctrue%29%3B%0A%20%20%20for%20%28var%20i%3D0%3Bi%3Cthis.childNodes.length%3Bi++%29%7B%0A%20%20%20%20if%20%28this.childNodes%5Bi%5D.getAttribute%28%27pr%27%29%3D%3Dpr%29%7B%0A%20%20%20%20%20this.childNodes%5Bi%5D.setAttribute%28%27checked%27%2Ctrue%29%3B%0A%20%20%20%20%20break%3B%0A%20%20%20%20%7D%0A%20%20%20%7D%0A%20%20%7D%0A%20%20mP.setAttribute%28%27onpopupshowing%27%2C%27this.f%28%29%3B%27%29%3B%0A%20%20this.type%3D%22menu%22%3B%0A%20%20this.orient%3D%22vertical%22%3B%0A%20%20this.appendChild%28mP%29%3B%0A%20%20this.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0A%0A%0A/*images*/%0Athis.offImage%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUA/wAAAACIiIjd3d2AgID///9WXziYAAAAAXRSTlMAQObYZgAAAFRJREFUeF4tydERgCAMBNFABUQr8KjAXAcODTD034s5cb/ezJohs6wuMpow3X8MTeH5prBnXTHHEIAN+LHRGSQFBLJcgGfTindml1lO3qcAJRTP2gv/MBEl7nzAMAAAAABJRU5ErkJggg%3D%3D%27%3B%0Athis.onImage%3Dthis.image%3B%0A%0Athis.setState%3Dfunction%28%29%7B%0A%20var%20state%3Dthis.PS.getIntPref%28this.pref%29%3B%0A%20if%20%28state%3D%3D0%29%7B%0A%20%20this.image%3Dthis.offImage%3B%0A%20%7Delse%7B%0A%20%20this.image%3Dthis.onImage%3B%0A%20%7D%0A%7D%0A%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B HTTP-прокси и URL'ы настройки прокси задаются вручную в коде инициализации. | ||||||||
Dark-Demon > 12-09-2006 12:09:42 | ||||||||
Ян, не вижу смысла изобретать велосипед. http://www.xulplanet.com/references/elemref/ref_toolbarpalette.html надо просто создать XUL-файл с кнопками и оверлеить им стандартную "BrowserToolbarPalette". более того этот механизм позволяет подвергнуть редактированию и неCustomButtons кнопки. к томуже кнопки будут появляться сразу и не будет проблем с новыми окнами. | ||||||||
Yan > 12-09-2006 13:11:15 | ||||||||
Dark-Demon Второе, и самое важное. Код: Получаем null. Это значит, что <toolbarpalette id="BrowserToolbarPalette"> удаляется из документа после создания панелей инструментов. Т.е. после загрузки браузера его уже никак не достать. Можно было бы конечно, создавать статический оверлей в каталоге расширения, НО: К счастью, Anton нашёл отличное решение, как из скрипта добраться-таки до <toolbarpalette>, и добавить туда нужные кнопки. Оно и будет использовано в след. версии. | ||||||||
Philip > 12-09-2006 13:35:55 | ||||||||
А поддержка второй версии браузера планируется? А то я давно уже сижу на ней и без CB уж очень не уютно. | ||||||||
Пит Бэнкман > 14-09-2006 13:06:05 | ||||||||
Просьба о создании кнопки. Требуется следующее: чтобы кнопки "Прервать..." и "Обновить..." были бы "кнопками-списками" (при нажатии непосредственно на кнопку действие осуществлялось только для текущей страницы, а при нажатии на кнопку из выпадающего списка - чтобы действие осуществлялось для ВСЕХ страниц, загруженных в текущем окне ФФ, т.е. "Обновить все страницы" или же "Прервать загрузку всех страниц"). Чтобы было более наглядно: если кто юзает (юзал) плагин для Осла под названием Avant Browser, там как раз такая фича реализована. | ||||||||
Yan > 15-09-2006 21:35:18 | ||||||||
Philip Выделить код Код:custombutton://Reload%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANbY1E9YMgAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAwZJREFUeNpdkktoXHUUxn//+5g7D5N5GidMk7QxtWpL09aAOC4MmkWplNKC4oMaFETBlTs3UulCKlZMLS5URMVNRSi1KApNShdCHk1LMp3QJg2ZppOkmSE2d2aSm5l7596/i6Q15qwOB74H33cEW6dntA34BOgGtm9c7yC933CtM1zpztEz2gv00d+VEFvAvcFGve/FI82Rlo4Qiqbi86mslR1ujZmMXClilas/64bvuGN70N8VE5vAncEGbeyND3ZQNKtULIGi+9AMA39AJ9Wk8lijx+/n8hx4LsY3p6agvyupbdLv6znWjG4IDFeQaPIRTwaoOoL7q5LF+x6rNcErva0oinwI0japd09mKlz8ISeRLggxqPv96X3pOC8cbMLTNRZMycQ8PJFUHhKsb9I7alXq5LL5e4o9N07pxjtcTh92Jr5svzowe+7Hr2ZojgoiQYkQHup/+A0HUu70+a1hv8xdKle9LNffPw+4tL/Xhuo/2NkVYWZyBU2BsAKF3FaC1emPog3zUbPgCmriLuCs+/O1Ib3MwIVZdeCCVP7XmPRKAEJ/+fpyOG5Etr6DVXGwyrWTDDx7CgiROhYPpXbE9IZY0FwKKox/mAHqWjhuRD7+7EmqDrieJKgLhoZLnP9+OsvtMz9t5FSi7fgRIyWTZjn1LnE5DLwFuBrAkgULpgRP8ngCios2SFmm9fVDtLz6F4g3UQKH1uzwzm0d0ejdzMzXgA442nqGAk0VrNUlN+95dD4f46m9DenstVJ67o6FY3skkga79oW59Os8FPovAx4gNYB4SBALwO0imCsKc0t1pAvbdj/Crv0h3LpLwK8wfbPG0mzhO6ZO5zeCXk92ZMjk8xO30NaqtCYEfl3gOBKz4lL4x0bXFYqLkr//yE8wffY0UAVcABE8Oibrtp21CzdO+Jr2nOzY++jup/eHaWkPIQQUFqpkri4zOVoYtMc/fZuFi0Vg5UHVgpdG+pj64iz5X5YBm2e+PUBo+2HUwB6E2ki9Moi9nGXotT+BGmAB9oO6/wVl0kFzmdAMvwAAAABJRU5ErkJggg%3D%3D%5D%5Bif%20%28event.shiftKey%29%20BrowserReloadSkipCache%28%29%3B%20else%20BrowserReload%28%29%3B%5D%5Bthis.ReloadAll%3Dfunction%28%29%7B%0A%20%20gBrowser.reloadAllTabs%28gBrowser.mContextTab%29%3B%20%20%0A%7D%0A%0A%20var%20nMItem%3Dfunction%28label%2Cimg%2Cobj%29%7B%0A%20%20%20var%20m%3Ddocument.createElement%28%27menuitem%27%29%3B%0A%20%20%20m.setAttribute%28%27label%27%2Clabel%29%3B%0A%20%20%20m.f%3Dobj.ReloadAll.bind%28obj%29%3B%0A%20%20%20m.setAttribute%28%27oncommand%27%2C%27this.f%28%29%27%29%3B%0A%20%20%20m.setAttribute%28%27image%27%2Cimg%29%3B%0A%20%20%20m.setAttribute%28%27class%27%2C%27menuitem-iconic%27%29%3B%0A%20%20%20return%20m%3B%0A%20%7D%0A%0A%20var%20mP%3Ddocument.createElement%28%27menupopup%27%29%3B%0A%20mP.appendChild%28nMItem%28%27Reload%20All%20Tabs%27%2Cthis.image%2Cthis%29%29%3B%0A%0A%20this.appendChild%28mP%29%3B%0A%20this.type%3D%22menu-button%22%3B%0A%0A Stop: Выделить код Код:custombutton://Stop%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gkPDzESY3gWcgAAAqFJREFUeNplkz1sE0kYhp9dZzfBXq8HYpQUBxjOinQUVhBQRKIB3XFSjkgIAlQUAV1/6VPS5yip0FFCwU8kBxSJSG7QFXBgCayDIEwgQPjd7Np79s7uDIWDiXOfNBppPj2v3u9nDDbEpdzAqOtkFp1MWmx8x4BGM/RW/ebPf/itB4DekPoO57dtXTw2dULYfQriBJK4c8cxkWExd/WO//D9p/ELjegeoLoCXfj8KWF/eQuvlkFKiNaPlDA8TLTrR+auLfSIpLrw76eFHXxg6e8aq6GJSMWk0Mh2zNPWFtZWPpA32hQPHej3l99NjsioUomSFdN1MovHzk0K21tl6d4Ttl/8i+L1BapBmjCMqMbbKM5X2H7lBs+erGDUakycOOzuFdkykDGdTFrYtobXy0jTJl0oYAlB6WaZ2q4xSrfmsYQgXSggtzjIF3VSzYCsk3aBnAl0GiUlxWxM9fg40vOwhGD/5ctYQiA9j0fjRynITyil0bo7BKsjkMQQxVhofur7QnV6umeK1elpRoKXmIBSCrTq5r47iCQybFGTgtLsbI9AaXaWf7M7acsYlSi00t0FMDHWHUjJUtOmdHO+a/v+1FS3nNHyAi/tPEmyyUGjGXqR7oOhIaymT1ivd2r+7Sgj98s8Gv8F6XmE9TpmsIa9ewfazRE0Qh/A+NMd2P9DfuvdiTO/uvbzpzx7/Ao54FCIP5NC04pi6lYeM/Ao7Bmkf1+JuRsV/9bKx7NX/pMPUrfb8bsRGVX8+pvJ4qGD/YO6Re7zW3SiSJIEnSiybZ/B3cOb4X+AtW9/wZxx7LHRocHyxMkjbioMQOtOs7RCK4V2c5thD2gaG5ptzjj22F6RLa8vSc93Cxqhf/uj3wMDyqA3TCAD5ACL/4cE1r7BAF8BBX1jYyT/fJkAAAAASUVORK5CYII%3D%5D%5BBrowserStop%28%29%3B%5D%5Bthis.StopAll%3Dfunction%28%29%7B%0A%20try%7B%0A%20%20for%20%28var%20i%3D0%3Bi%3CgBrowser.browsers.length%3Bi++%29%7B%0A%20%20%20%20gBrowser.browsers%5Bi%5D.stop%28%29%3B%0A%20%20%7D%0A%20%7Dcatch%28ex%29%20%7B%7D%0A%7D%0A%20var%20nMItem%3Dfunction%28label%2Cimg%2Cobj%29%7B%0A%20%20%20var%20m%3Ddocument.createElement%28%27menuitem%27%29%3B%0A%20%20%20m.setAttribute%28%27label%27%2Clabel%29%3B%0A%20%20%20m.f%3Dobj.StopAll.bind%28obj%29%3B%0A%20%20%20m.setAttribute%28%27oncommand%27%2C%27this.f%28%29%27%29%3B%0A%20%20%20m.setAttribute%28%27image%27%2Cimg%29%3B%0A%20%20%20m.setAttribute%28%27class%27%2C%27menuitem-iconic%27%29%3B%0A%20%20%20return%20m%3B%0A%20%7D%0A%0A%20var%20mP%3Ddocument.createElement%28%27menupopup%27%29%3B%0A%20mP.appendChild%28nMItem%28%27Stop%20All%20Tabs%27%2Cthis.image%2Cthis%29%29%3B%0A%0A%20this.appendChild%28mP%29%3B%0A%20this.type%3D%22menu-button%22%3B Так? Update: в пред. раз забыл картинку в base64 отконвертировать. Исправил. | ||||||||
Пит Бэнкман > 15-09-2006 22:57:54 | ||||||||
Yan Спасибо! Это то, что нужно! Давно хотел наличие этой фичи в ФФ. Лови "+" | ||||||||
Philip > 16-09-2006 16:37:43 | ||||||||
Прошу прощения за назойливость, но когда? Хотя бы примерные сроки, уж очень мне этого расширения не хватает. | ||||||||
Yan > 16-09-2006 16:56:47 | ||||||||
Philip | ||||||||
Philip > 16-09-2006 19:18:11 | ||||||||
Yan пишет
Скачал, попробовал, но... в общем после долгих опытов, выяснил:
Подсветил те расширения, присутствие которых "убивает" работоспособность Custom Buttons. | ||||||||
Yan > 16-09-2006 19:30:01 | ||||||||
Philip | ||||||||
Philip > 16-09-2006 19:33:18 | ||||||||
Yan | ||||||||
GASon > 16-09-2006 23:09:02 | ||||||||
Установил сегодня это расширение и наслаждался его функционалом, а именно кнопками BBcode. Хотелось бы выразить огромный респект создателю! ЗЫ: Кнопки были у меня помещены на панель меню. Сейчас восстановил кнопки, пока вроде работает. | ||||||||
Yan > 16-09-2006 23:30:19 | ||||||||
GASon | ||||||||
Dark-Demon > 17-09-2006 02:44:04 | ||||||||
а его и не надо после загрузки доставать. При редактировании кнопок просто правим оверлеящий файл, а чтобы изменения вступили без перезагрузки - руками добавляем кнопку, как ты это делаешь сейчас. только сейчас у тебя кнопки хранятся в мозильном реестре, что не есть гуд. а я предлагаю хранить их в соответствующем файле.
и таких проблем бы небыло.... а также кнопки бы появлялись сразу, и во всех окнах, а не только в первом. | ||||||||
Anton > 17-09-2006 10:12:15 | ||||||||
Dark-Demon пишет
Эх, если бы... Но не так просто на самом деле: 1. Местонахождение оверлея должно быть известно до первого запуска расширения. Т. е., оверлей должен находиться в каталоге расширения. А иначе придётся править chrome.manifest, extensions.ini и/или ещё что-нибудь. Вроде бы я правильно обрисовал суть проблемы, если вкратце. К слову, своё решение я идеальным не считаю, с оверлеями было бы проще. Возможно, имеет смысл подумать о feature request на bugzill'у. | ||||||||
GASon > 18-09-2006 09:13:16 | ||||||||
Расширение однозначно супер! У меня на работе юзеры FF уже заценили. | ||||||||
Пит Бэнкман > 18-09-2006 10:59:22 | ||||||||
Yan пишет
Возникла одна проблема: со всплывающими подсказками. Если вывести всплывающую подсказку для любой другой кнопки панели инструментов (к примеру, "Открывает новую вкладку"), а потом посмотреть ее для кнопки "Stop All Tabs", то она будет такой же (т.е. "Открывает новую вкладку"). И только после повторного обращения к кнопке "Stop All Tabs" ее всплывающая подсказка становится адекватной содержанию кнопки. Аналогочно и с кнопкой "Reload All Tabs". | ||||||||
Levabati > 18-09-2006 12:36:02 | ||||||||
Вопрос. | ||||||||
petrovich > 18-09-2006 13:16:55 | ||||||||
| ||||||||
GASon > 18-09-2006 13:31:28 | ||||||||
Отлично! Может тогда кто-нибудь кнопочки наваяет "получить всё" и "удалить всё помеченное как спам"? Заранее признателен. | ||||||||
Dimanish > 18-09-2006 16:28:32 | ||||||||
GASon 2. "удалить всё помеченное как спам": | ||||||||
Dark-Demon > 18-09-2006 19:33:15 | ||||||||
Anton, во первых, путь вегда можно определить: %путькпапке профиля%/extensions/custombuttons@xsms.org/что-тотам | ||||||||
Yan > 18-09-2006 19:42:49 | ||||||||
Пит Бэнкман
Не знаю, воспроизвести не получается. Возможно, что-то с чем-то конфликтует..
Не очень понял, какой функционал нужен для кнопки? | ||||||||
GASon > 18-09-2006 20:06:43 | ||||||||
Зачет! Большое человеческое спасибо! Всё работает. ЗЫ: Видимо я криво сделал постановку задачи...сорри. | ||||||||
Yan > 18-09-2006 20:07:10 | ||||||||
Dark-Demon Я так понимаю, ты предлагаешь: Внимание, вопрос:
Ага, свою справку могу тебе предъявить. | ||||||||
Levabati > 18-09-2006 21:29:27 | ||||||||
Yan | ||||||||
Yan > 18-09-2006 21:44:49 | ||||||||
Levabati Или попроще, только для одного приложения, например "Блокнота": Выделить код Код:custombutton://Launch%20Notepad%5D%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhCwAQAPcAAFVVVWRkZKmpqa+wr7SztLa2tr28vL2+vcLDw8TDxMfHx8nJysrKys7Ozc/P0NHR0dLR0tTU1NbW1tfX19va2tvb29zc3d7e3eDh4eLi4uTj4+Xm5ebm5ufn5+jo6Orq6uzr7O7u7e/v7vDv7/Hw8PPz8vT09PX19fn4+fn6+vr6+/z8/P/+/v///v/+//7//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///yH5BAEAAP8ALAAAAAALABAAAAhxAP8RGEiQIAACMBIqVHhwocOGASJKDACjYUIXMF4wRNjCIYsUECdGHGGxIwwUJUBssPhixQkRHjJUCCkSwkEVJkJ0wEAhQgMFB0l80HBhwgMGCQ4c5CAyIoGDFiQ4WIDAQIEBAqBKpWoVK4CvYMN+DQgAOw%3D%3D%5D%5Bvar%20path%3D%27C%3A%5C%5Cwindows%5C%5Cnotepad.exe%27%3B%0A%0Avar%20arguments%3D%5B%27%27%5D%3B%0Avar%20file%20%3D%20Components.classes%5B%27@mozilla.org/file/local%3B1%27%5D%0A%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0Avar%20process%20%3D%20Components.classes%5B%27@mozilla.org/process/util%3B1%27%5D%0A%20%20%20%20.getService%28Components.interfaces.nsIProcess%29%3B%0A%20file.initWithPath%28path%29%3B%20%0A%20process.init%28file%29%3B%0A%20process.run%28false%2Carguments%2Carguments.length%29%3B%5D%5B | ||||||||
Levabati > 19-09-2006 01:18:45 | ||||||||
Yan | ||||||||
Yan > 19-09-2006 01:45:36 | ||||||||
(Для установки кнопки нужно выделить код из пред. сообщения и вставить его в адресную строку) Выделить код Код:var path='C:\\windows\\notepad.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); Соответственно, путь к notepad.exe может быть другой. | ||||||||
petrovich > 19-09-2006 02:15:49 | ||||||||
Yan | ||||||||
Dark-Demon > 19-09-2006 11:28:19 | ||||||||
нет | ||||||||
Yan > 19-09-2006 13:23:06 | ||||||||
Dark-Demon
Недостаток номер 1: | ||||||||
Anton > 19-09-2006 14:50:16 | ||||||||
Dark-Demon пишет
Логично. Во время установки расширения права есть. Потом может не быть.
На этом форуме у меня нет раздвоения личности. idee fix по поводу статических оверлеев была, я даже бредил чего-то на xml Yan'у в PM. Но логика победила, и я поправился... В очередной раз : ) | ||||||||
Levabati > 19-09-2006 16:52:15 | ||||||||
Yan!
ничего не выходит. | ||||||||
Dark-Demon > 20-09-2006 12:07:20 | ||||||||
хранить копию в корне профиля.
думаю, стоит проверить... в общем на днях помучаю лису оверлеями и отпишусь... | ||||||||
Yan > 20-09-2006 13:06:53 | ||||||||
Levabati
Контекстное меню на кнопке -> редактировать -> код инициализации Добавлено Срд 20 Сен 2006 13:10:01 :
Ну да, но при переустановке расширения пользователь запустит Лису, а там нет ни одной кнопки! Копия из профиля сработает только при следующем запуске. Вот такие пироги.
На сколько я знаю, нет такой возможности. Добавлено Срд 20 Сен 2006 13:12:27 :
Да не мучайся. | ||||||||
Dark-Demon > 21-09-2006 11:27:15 | ||||||||
есть
одно другому не мешает... | ||||||||
Anton > 21-09-2006 14:34:42 | ||||||||
Dark-Demon пишет
Здорово : ) | ||||||||
Yan > 21-09-2006 23:56:01 | ||||||||
Dark-Demon | ||||||||
Dark-Demon > 22-09-2006 12:18:42 | ||||||||
Yan, ну так что, берёшь на вооружение? | ||||||||
Yan > 23-09-2006 16:45:05 | ||||||||
Dark-Demon | ||||||||
Крыска > 24-09-2006 13:26:48 | ||||||||
не работают кнопки. в чем может быть проблема? | ||||||||
Yan > 24-09-2006 17:28:29 | ||||||||
Крыска | ||||||||
Dimanish > 24-09-2006 17:37:09 | ||||||||
Люди, напишите пожалуйста кнопку Multi-Scrapbook, аналогичную кнопке, входящей в Scrapbook. | ||||||||
Yan > 24-09-2006 20:14:19 | ||||||||
Dimanish Кнопка Multi-ScrapBook: Выделить код Код:custombutton://Multi-ScrapBook%5D%5Bchrome%3A//scrapbook/skin/main_16.png%5D%5B%5D%5B%20var%20nMItem%3Dfunction%28label%2Cp%2Cobj%29%7B%0A%20%20%20var%20m%3Ddocument.createElement%28%27menuitem%27%29%3B%0A%20%20%20m.setAttribute%28%27label%27%2Clabel%29%3B%0A%20%20%20if%20%28p%29%7B%20m.setAttribute%28%27path%27%2Cp%29%3B%0A%20%20%20%7Delse%7B%0A%20%20%20%20%20m.setAttribute%28%27isDefault%27%2Ctrue%29%0A%20%20%20%7D%0A%20%20%20m.setAttribute%28%27type%27%2C%27radio%27%29%3B%0A%20%20%20m.setAttribute%28%27name%27%2C%27radio%27%29%3B%0A%20%20%20return%20m%3B%0A%20%7D%0A%0Athis.%20orient%20%3D%20%22vertical%22%3B%0Athis.type%3D%27menu%27%3B%0Avar%20popup%3Ddocument.createElement%28%27menupopup%27%29%3B%0Apopup.setAttribute%28%27oncommand%27%2C%27this.parentNode.changeScrapbookDirectory%28event%29%27%29%3B%0Apopup.f%3Dfunction%28%29%7B%0A%09while%20%28this.childNodes.length%3E0%29%20this.removeChild%28this.childNodes%5B0%5D%29%3B%0A%0A%09var%20file%3DsbCommonUtils.DIR.get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29.clone%28%29%3B%0A%09file.append%28%22ScrapBook%22%29%3B%0A%09file.append%28%22multibook.txt%22%29%3B%0A%0A%09var%20ret%20%3D%20%5B%5D%3B%0A%09var%20lines%20%3D%20sbCommonUtils.convertToUnicode%28sbCommonUtils.readFile%28file%29%2C%20%0A%09%09%09%09%09%09%09%09%22UTF-8%22%29.split%28%22%5Cn%22%29%3B%0A%09for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20lines.length%3B%20i++%20%29%0A%09%7B%0A%09%09var%20item%20%3D%20lines%5Bi%5D.replace%28/%5Cr%7C%5Cn/g%2C%20%22%22%29.split%28%22%5Ct%22%29%3B%0A%09%09if%20%28%20item.length%20%3D%3D%202%20%29%20ret.push%28item%29%3B%0A%09%7D%0A%0A%09var%20i%3D0%3B%0A%09while%20%28i%3Cret.length%29%7B%0A%09%09this.appendChild%28nMItem%28ret%5Bi%5D%20%5B0%5D%2Cret%5Bi%5D%20%5B1%5D%2Cthis%29%29%3B%0A%09%09i++%3B%0A%09%7D%0A%09this.appendChild%28document.createElement%28%27menuseparator%27%29%29%3B%0A%09this.appendChild%28nMItem%28%27Profile%20Folder%27%2Cnull%2Cthis%29%29%3B%0A%09/*----*/%0A%09var%20PS%3Dthis.parentNode.PS%3B%0A%09if%20%28PS.getBoolPref%28%27scrapbook.data.default%27%29%29%7B%0A%09%09this.getElementsByAttribute%28%27isDefault%27%2C%27true%27%29%5B0%5D%0A%09%09%09.setAttribute%28%27checked%27%2Ctrue%29%3B%0A%09%7Delse%7B%0A%09%09var%20path%3DPS.getCharPref%28%27scrapbook.data.path%27%29%3B%0A%09%09for%20%28var%20i%3D0%3Bi%3Cthis.childNodes.length%3Bi++%29%7B%0A%09%09%09if%20%28this.childNodes%5Bi%5D.nodeType%3D%3D1%29%7B%0A%09%09%09%20%20%20%20if%20%28this.childNodes%5Bi%5D.getAttribute%28%27path%27%29%3D%3Dpath%29%7B%0A%09%09%09%09this.childNodes%5Bi%5D.setAttribute%28%27checked%27%2Ctrue%29%3B%0A%09%09%09%09break%3B%0A%09%09%09%20%20%20%20%7Delse%7B%0A%09%09%09%20%20%20%20%20%20%20%20this.childNodes%5Bi%5D.removeAttribute%28%27checked%27%29%3B%0A%09%09%09%20%20%20%20%7D%0A%09%09%09%7D%0A%09%09%7D%09%0A%09%7D%0A%7D%0Apopup.setAttribute%28%27onpopupshowing%27%2C%27this.f%28%29%3B%27%29%3B%0Athis.%20appendChild%20%28popup%29%3B%0A%0Athis.%20changeScrapbookDirectory%20%3D%20function%20%28event%29%7B%0A%09if%20%28event.%20target.%20getAttribute%20%28%22isDefault%22%29%3D%3D%27true%27%29%7B%0A%09%09this.PS.setBoolPref%28%27scrapbook.data.default%27%2Ctrue%29%3B%0A%09%7Delse%7B%0A%09%09var%20path%3Devent.target.getAttribute%28%22path%22%29%3B%0A%09%09var%20title%3Devent.target.getAttribute%28%22label%22%29%3B%0A%09%09this.PS.setBoolPref%28%27scrapbook.data.default%27%2Cfalse%29%3B%0A%09%09this.PS.setCharPref%28%27scrapbook.data.path%27%2Cpath%29%3B%0A%09%09this.PS.setCharPref%28%27scrapbook.data.title%27%2Ctitle%29%3B%0A%09%7D%0A%09try%20%7B%0A%09%09var%20winEnum%20%3D%20sbCommonUtils.WINDOW.getEnumerator%28%22navigator%3Abrowser%22%29%3B%0A%09%09while%20%28%20winEnum.hasMoreElements%28%29%20%29%7B%0A%09%09%09var%20win%20%3D%20winEnum.getNext%28%29%0A%09%09%09%09.QueryInterface%28Components.interfaces.nsIDOMWindow%29%3B%0A%09%09%09try%20%7B%0A%09%09%09%09win.sbBrowserOverlay.refresh%28%29%3B%0A%09%09%09%09win.sbBrowserOverlay.onLocationChange%28%29%3B%0A%09%09%09%09win.document.getElementById%28%22sidebar%22%29.contentWindow%0A%09%09%09%09%09.sbMainService.refresh%28%29%3B%0A%09%09%09%7D%20catch%28ex%29%20%7B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20catch%28ex%29%20%7B%0A%7D%0A%7D%0A%0Athis.PS%3Dcustombuttons.ps%3B Тестировалась для ScrapBook 1.2.0.5 P.S. С днём рождения! | ||||||||
Dimanish > 24-09-2006 22:11:47 | ||||||||
Yan | ||||||||
Крыска > 24-09-2006 23:35:46 | ||||||||
Yan Кнопка нужна очень-очень | ||||||||
Dimanish > 24-09-2006 23:42:33 | ||||||||
Крыска | ||||||||
Yan > 25-09-2006 02:06:17 | ||||||||
Dimanish
Ага, оказывается, у меня Scrapbook старой версии стоял, и имена функций не совпадали. | ||||||||
Dark-Demon > 25-09-2006 11:17:21 | ||||||||
Yan, я тут продолжаю развивать мысль... , то можно его добавить более эстетично | ||||||||
Yan > 25-09-2006 12:46:57 | ||||||||
Dark-Demon | ||||||||
Dark-Demon > 25-09-2006 17:33:14 | ||||||||
Yan, xbl более удобен для писателей кнопок. С его помощью можно задавать конструктор и деструктор, хендлеры позволяют вешать обработчики событий без нагромождения яваскрипт условий, да и вообще, код получается красивым и понятным. я думаю окно редактирования кнопки можно сделать так: | ||||||||
Yan > 25-09-2006 19:05:00 | ||||||||
Dark-Demon IMHO, надо наоборот идти по пути упрощения написания кнопки. В общем, пока я к таким радикальным преобразованиям не готов. Надо всё хорошенько обдумать. | ||||||||
Dark-Demon > 25-09-2006 19:24:13 | ||||||||
Yan, достаточно снабдить хорошими примерами и любой интересующийся разберётся. я с xbl освоился разбирая нехитрый пример. | ||||||||
Крыска > 26-09-2006 00:29:15 | ||||||||
не работает... отключение указанных расширений и установка 1,2 mod не помогла | ||||||||
Dark-Demon > 26-09-2006 15:47:08 | ||||||||
Крыска, юзай мою модификацию | ||||||||
Крыска > 27-09-2006 01:38:08 | ||||||||
Dark-Demon и новые кнопки создаются в одном и том же файле или под каждую кнопку новый файл? | ||||||||
Dark-Demon > 27-09-2006 11:32:52 | ||||||||
Крыска, в одном файле. custombuttons2.xbl а вообще, какие кнопки-то интересуют? | ||||||||
pongo > 27-09-2006 17:08:04 | ||||||||
Можно ли создать кнопку, которая бы удаляла текущую страницу из закладок? | ||||||||
Крыска > 27-09-2006 23:33:30 | ||||||||
Dark-Demon пока сложновато таак делать кнопки... но идея с возможностью кликать тремя способами по одной кнопки и получать разные действия - это круто... например ББ-код "Цитата". правая кнопка выделить цитату, а левая - вставить как цитату | ||||||||
GASon > 28-09-2006 07:28:57 | ||||||||
Если всё таки можно, накропайте кнопочку для TB "Получить почту из всех ящиков". | ||||||||
trolll > 28-09-2006 09:02:14 | ||||||||
GASon
А ведь же есть такая в mr.tech local install!!! | ||||||||
Yan > 29-09-2006 00:44:03 | ||||||||
custombuttons 0.0.2 alpha Совместимость: FF 1.5.0.* - 2.0 Функциональных изменений никаких, но изменился принцип работы расширения и формат хранения кнопок. Теперь они хранятся в каталоге custombuttons профиля. При установке расширение удалит все кнопки из prefs.js и сохранит их в новом формате. Так что если Вы планируете в будущем вернуться на старую версию, сделайте backup файла prefs.js.
При тестировании просьба особое внимание обратить на совместимость с другими расширениями. Если в Firefox2 не работает кнопка с выпадающем меню, нужно в коде её инициализации поместить this.type='menu'. Из-за этого в частности не работала кнопка "Multi-ScrapBook". | ||||||||
Крыска > 29-09-2006 01:12:16 | ||||||||
Опаньки.... фигасе компромисик Добавлено Птн 29 Сен 2006 01:14:51 : но самое интересное, что теперь у меня 2е!!! строки поиска! Добавлено Птн 29 Сен 2006 01:20:26 : Добавлено Птн 29 Сен 2006 01:21:20 : Добавлено Птн 29 Сен 2006 01:23:36 : вставил код из сообщения 133681 и добавил код инициализации (появилась стрелочка)... | ||||||||
GASon > 29-09-2006 08:42:35 | ||||||||
trolll пишет
Точно есть. | ||||||||
Dark-Demon > 29-09-2006 11:37:44 | ||||||||
И ещё на один шажок ближе к идеалу: http://dark-demon.jino-net.ru/~files/cb2-tp3.rar Yan, ща посмотрим, что ты там замутил... | ||||||||
Yan > 29-09-2006 14:20:48 | ||||||||
Крыска
Странно. У меня работает. Scrapbook 1.2.0.4, кнопка из 133681 (неизмененная, я её уже там отредактировал). Dark-Demon
Одну явную ошибку я уже нашел - не определяется event в oncommand-коде. | ||||||||
Dark-Demon > 29-09-2006 15:03:14 | ||||||||
Продолжу аггитировать за xul+css+xbl... | ||||||||
Yan > 29-09-2006 15:53:53 | ||||||||
Dark-Demon В общем, пока у меня большие сомнения. Впрочем, я опять буду рад, если я ошибаюсь.
Это безусловный плюс. Правда, я не думаю, что xbl для большинства так уж и прозрачен. Добавлено Птн 29 Сен 2006 15:56:03 : Добавлено Птн 29 Сен 2006 15:59:14 : | ||||||||
Dark-Demon > 29-09-2006 16:39:59 | ||||||||
думаю да, ведь в xul хранится только указание, что кнопка наличиствует, а xbl подключается через css. потом попробую сделать... | ||||||||
Anton > 29-09-2006 20:33:05 | ||||||||
Dark-Demon пишет
имхо, на каждую кнопку по xbl - слишком расточительно.
не уверен. можно попробовать соорудить какую-нибудь кнопку на xbl, чтобы посмотреть - будет ли это проще. Yan пишет
Можно. Выделить код Код:var b = document. getElementById ("go-button"); //b. style. MozBinding = "url(chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton)"; b. style. MozBinding = "url(chrome://custombuttons/content/bind1.xml#bind1)"; // или document. addBinding (b, "chrome://custombuttons/content/bind1.xml#bind1"); // жаль, removeBinding не работает + xbl Выделить код Код:<?xml version="1.0" encoding="UTF-8"?> <bindings id="binds1" xmlns="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl" xmlns:html="http://www.w3.org/1999/xhtml"> <binding id="bind1" extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton"> <handlers> <handler event="click"> alert ("bind1"); </handler> </handlers> </binding> </bindings> правда, после привязки bind1 не получилось отредактировать его из внешнего редактора. | ||||||||
Крыска > 30-09-2006 00:16:57 | ||||||||
Yan | ||||||||
Крыска > 30-09-2006 00:39:43 | ||||||||
Продолжаю радовать всех своими глюками... на этот раз под раздачу влетела версия Dark-Demon обнаружил там свою желанную кнопку мульти-бука... ставлю.... а она сразу пропадает.... и нет её. стер и поставил заново... понажимал пару раз на кнопку (кстати не естественно приподнятой) результат нулевой. в настройках кнопок новые кнопки "дрожат"... вобщем надо бы с нуля попробовать все сделать. а то моему профилю уже стока времени (не меньше года так точно). на время теста отключался оригинальный кастомбуттонс кстати скрэпбуки находяться на другом логическом диске, если конечно это может влиять. | ||||||||
Yan > 30-09-2006 00:53:05 | ||||||||
Anton
Не очень понял. Т.е. привязать bind1, потом его изменить, и потом попробовать опять привязать? Добавлено Сбт 30 Сен 2006 01:08:46 :
Пожалуй, действительно стоит попробовать на чистом профиле. Dark-Demon Крыска пишет
Подтверждаю. По-моему так, я в xbl не силён. Но в последней своей сборке я так сделал, и вроде всё прошло успешно. Добавлено Сбт 30 Сен 2006 01:12:27 : | ||||||||
Крыска > 30-09-2006 01:21:23 | ||||||||
Yan при нажатиии на кнопку она выделяется, но ничего не происходит. даже меню не появляется.... есть у меня подозрения, что я что-то не то делаю.... Добавлено Сбт 30 Сен 2006 01:24:36 : Добавлено Сбт 30 Сен 2006 01:33:37 : | ||||||||
Yan > 30-09-2006 02:33:46 | ||||||||
Крыска | ||||||||
Anton > 30-09-2006 10:26:22 | ||||||||
Yan пишет
Да. | ||||||||
Крыска > 30-09-2006 12:00:10 | ||||||||
Yan | ||||||||
Yan > 02-10-2006 00:59:14 | ||||||||
Интересно, у кого-нибудь кроме меня эта последняя alpha работает? | ||||||||
INFOMAN > 02-10-2006 01:57:15 | ||||||||
Yan, а ты не можешь в .htaccess прописать ? | ||||||||
Yan > 02-10-2006 02:00:35 | ||||||||
INFOMAN | ||||||||
INFOMAN > 02-10-2006 02:17:57 | ||||||||
Сборку поставил, добавил кнопку, после перезапуска кнопка исчезла. Добавлено Пнд 02 Окт 2006 02:24:35 : | ||||||||
Yan > 02-10-2006 02:31:58 | ||||||||
INFOMAN | ||||||||
Dark-Demon > 02-10-2006 12:06:39 | ||||||||
сорри, забыл убрать extends для #allbuttons - теперь он совершенно не нужен
переезжай на jino-net.ru поковырялся xbl-ками. динамически их применять можно, но трабла в том, что они кешируются, а потому единственное решение, что я смог пока придумать - это объявлять кнопки так: Выделить код Код:<toolbaritem id="cb2-images" class="custombutton" style="-moz-binding: url('chrome://cb2-profile/content/custombuttons2.xbl#cb2-imagesh');" /> ,а после редактирования xbl-файла создать его временную копию с другим именем и выполнить такого плана код: Выделить код Код:button.style.cssText= "-moz-binding: url('chrome://cb2-profile/content/cb2-temp-234.xbl#cb2-imagesh'); "; | ||||||||
INFOMAN > 02-10-2006 14:23:33 | ||||||||
Dark-Demon, на jino-net тоже AddType запрещён Добавлено Пнд 02 Окт 2006 14:24:50 : | ||||||||
Dark-Demon > 02-10-2006 18:48:29 | ||||||||
по ходу дела xbl-ки надо править через вот эту функцию: ща буду ковырять... | ||||||||
Yan > 04-10-2006 21:45:46 | ||||||||
custombuttons 0.0.2 alpha Совместимость: FF 1.5.0.* - 2.0 Скачать custombuttons 0.0.2 alpha New: custombuttons 0.0.1.3 alpha Совместимость: FF 1.5.0.* - 2.0 Скачать custombuttons 0.0.1.3 alpha New: | ||||||||
Dimanish > 04-10-2006 22:07:15 | ||||||||
Yan | ||||||||
Yan > 04-10-2006 22:18:10 | ||||||||
Dimanish Поэтому пока я сделал 0.0.1.3, чтоб можно было нормально пользоваться расширением в Firefox2. | ||||||||
Dark-Demon > 05-10-2006 12:00:24 | ||||||||
в общем через ту функцию сделать ничего не получится | ||||||||
Anton > 05-10-2006 12:19:27 | ||||||||
Dark-Demon пишет
Интересно, можно сделать ссылку на якорь (#) в data:// ? | ||||||||
Dark-Demon > 05-10-2006 16:38:29 | ||||||||
Anton, что ты имеешь ввиду? | ||||||||
Anton > 05-10-2006 18:45:12 | ||||||||
Если можно сделать ссылку на якорь, можно было бы "подшивать" образ *.xbl-файла по data:// протоколу. | ||||||||
Dark-Demon > 05-10-2006 19:09:08 | ||||||||
ой какой изврат... зачем? | ||||||||
Anton > 05-10-2006 20:33:44 | ||||||||
Dark-Demon пишет
Ладно-ладно, не буду спорить. : ) Конечно, временные файлы гораздо естественней и, скорее всего, единственный приемлимый вариант. | ||||||||
Dark-Demon > 06-10-2006 12:31:41 | ||||||||
Anton, в общем, как и обещал сделал кнопку к своему расширению реализующую выпадающее меню. в xul надо добавить такой код: Выделить код Код:<toolbaritem id="cb2-useragent" class="chromeclass-toolbar-additional" style="-moz-binding: url('chrome://cb2-profile/content/custombuttons2.xbl#cb2-useragent');" /> а в xbl такой: Выделить код Код:<binding id="cb2-useragent" extends="chrome://custombuttons2/content/custombuttons2.xbl#allbuttons"> <content context=""> <xul:menulist> <xul:menupopup> <xul:menuitem label="default UA" value="" /> <xul:menuitem label="FF 2.0b2 UA" value="Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2" /> <xul:menuitem label="IE 6.0sp2 UA" value="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" /> <xul:menuitem label="Op 9.00 UA" value="Opera/9.00 (Windows NT 5.1; U; ru)" /> </xul:menupopup> </xul:menulist> </content> <implementation> <field name="prefservice">Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch)</field> <field name="prefname"> 'general.useragent.override' </field> <property name="pref"> <getter> return navigator.userAgent; </getter> <setter> <![CDATA[ if (val=='') this.prefservice.clearUserPref(this.prefname); else this.prefservice.setCharPref(this.prefname,val); return val; ]]> </setter> </property> </implementation> <handlers> <handler event="command"> this.pref= this.boxObject.firstChild.value; </handler> </handlers> </binding> css в данном случае не используется. есть мысль вообще от него отказаться... | ||||||||
pongo > 06-10-2006 12:53:58 | ||||||||
К сожалению, в прошлый раз никто не ответил. Спрашиваю еще раз. Можно ли создать кнопку, которая бы удаляла текущую страницу из закладок? | ||||||||
Dark-Demon > 06-10-2006 14:55:30 | ||||||||
pongo, можно, разрешаю. | ||||||||
pongo > 06-10-2006 15:03:49 | ||||||||
Dark-Demon, здорово! Но дело в том, что я не разбираюсь в программировании расширенией. Может быть, кто-нибудь напишет? | ||||||||
Dimanish > 06-10-2006 16:01:03 | ||||||||
pongo | ||||||||
Anton > 06-10-2006 19:56:40 | ||||||||
pongo Выделить код Код:custombutton://%u0423%u0434%u0430%u043B%u0438%u0442%u044C_%u0412%u0421%u0415_%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438_%u043D%u0430_%u0442%u0435%u043A%u0443%u0449%u0438%u0439_%u0430%u0434%u0440%u0435%u0441%5D%5B%5D%5Btry%0A%7B%0A%20%20%20%20var%20rdfs%20%3D%20Components.%20classes%20%5B%22@mozilla.org/rdf/rdf-service%3B1%22%5D.%20getService%20%28Components.%20interfaces.%20nsIRDFService%29%3B%0A%20%20%20%20var%20bmds%20%20%3D%20rdfs.%20GetDataSource%20%28%22rdf%3Abookmarks%22%29%3B%0A%20%20%20%20var%20urlr%20%3D%20rdfs.%20GetResource%20%28%22http%3A//home.netscape.com/NC-rdf%23URL%22%29%3B%0A%20%20%20%20var%20urlv%20%3D%20rdfs.%20GetLiteral%20%28getBrowser%20%28%29.%20currentURI.%20spec%29%3B%0A%20%20%20%20var%20tbms%20%3D%20bmds.%20GetSources%20%28urlr%2C%20urlv%2C%20true%29%3B%0A%20%20%20%20var%20tbm%2C%20alo%2C%20res%2C%20tar%2C%20ali%2C%20src%3B%0A%20%20%20%20while%20%28tbms.%20hasMoreElements%20%28%29%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20tbm%20%3D%20tbms.%20getNext%20%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28tbm%20instanceof%20Components.%20interfaces.%20nsIRDFResource%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20alo%20%3D%20bmds.%20ArcLabelsOut%20%28tbm%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20%28alo.%20hasMoreElements%20%28%29%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%20res%20%3D%20alo.%20getNext%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28res%20instanceof%20Components.%20interfaces.%20nsIRDFResource%29%0A%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%20tar%20%3D%20bmds.%20GetTarget%20%28tbm%2C%20res%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28tar%20instanceof%20Components.%20interfaces.%20nsIRDFResource%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bmds.%20Unassert%20%28tbm%2C%20res%2C%20tar%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20ali%20%3D%20bmds.%20ArcLabelsIn%20%28tbm%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20%28ali.%20hasMoreElements%20%28%29%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%20res%20%3D%20ali.%20getNext%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28res%20instanceof%20Components.%20interfaces.%20nsIRDFResource%29%0A%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%20src%20%3D%20bmds.%20GetSource%20%28res%2C%20tbm%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28res%20instanceof%20Components.%20interfaces.%20nsIRDFResource%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bmds.%20Unassert%20%28src%2C%20res%2C%20tbm%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20var%20rds%20%3D%20bmds.%20QueryInterface%20%28Components.%20interfaces.%20nsIRDFRemoteDataSource%29%3B%0A%20%20%20%20setTimeout%20%28function%20%28%29%20%7Brds.%20Flush%20%28%29%7D%2C%20100%29%3B%0A%7D%0Acatch%20%28e%29%0A%7B%0A%20%20%20%20alert%20%28e%29%3B%0A%7D%5D%5B Удаляет все закладки на текущий адрес. Историю удалений не ведёт. Dark-Demon пишет
Ну, во-первых, если перечитаешь старые PM, то заметишь, что я говорил о контекстном меню. | ||||||||
pongo > 06-10-2006 20:56:44 | ||||||||
Anton, спасибо, но мне кажется, что код слижком сложный. Есть же BookmarksCommand.deleteBookmark или http://home.netscape.com/NS-rdf#command?cmd=deletebookmark. Вот только я не знаю что с ними делать | ||||||||
Anton > 07-10-2006 13:32:50 | ||||||||
pongo пишет
Я начинал разработку кнопки с DoCommand, но не разобрался с аргументами cmd=deletebookmark, так что я тоже не знаю, что с ним делать. И BookmarksCommand/BookmarkRemoveTransaction тоже копал, но, имхо, с ними проще не будет, так как перед их вызовом надо формировать массив аргументов node/parentNode/nodeProperties - но, коль скоро они найдены, зачем их помещать их в массив и вызывать функцию ? Лишняя работа, проще сделать вызов Unassert. | ||||||||
pongo > 07-10-2006 14:32:32 | ||||||||
Anton, понятно. Но можете написать код, который бы удалял только текущую страницу из закладок? | ||||||||
Anton > 07-10-2006 14:38:43 | ||||||||
pongo пишет
Вот именно это кнопка и делает. | ||||||||
pongo > 07-10-2006 14:44:23 | ||||||||
Anton, ой. Извините. Я прочитал «адрес» как «сеанс». | ||||||||
Dark-Demon > 08-10-2006 04:59:19 | ||||||||
новый билд: http://dark-demon.jino-net.ru/~files/cb2-tp4.rar | ||||||||
Anton > 08-10-2006 11:04:12 | ||||||||
Dark-Demon пишет
Опять эти <toolbaritem>... Чтобы нужная кнопка появилась в диалоге нужно вручную править xul и/или extens'ы в xbl. Очень юзабельно. Выделить код Код:<script type="application/x-javascript" src="chrome://global/content/nsUserSettings.js"/> <script type="application/x-javascript"> <![CDATA[ function showAlert (v) { var sa = Components. classes ["@mozilla.org/alerts-service;1"]. getService (Components.interfaces.nsIAlertsService); sa. showAlertNotification (null, "User Agent:", v, false, "", null); } ]]> </script> <toolbaritem id="cb2-useragent"> <menulist oncommand="nsPreferences.setUnicharPref('general.useragent.override',this.value);showAlert(this.value);"> <menupopup> <menuitem label="default UA" value="" /> <menuseparator /> <menuitem label="FF 2.0b2 UA" value="Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2" /> <menuitem label="IE 6.0sp2 UA" value="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" /> <menuitem label="Op 9.00 UA" value="Opera/9.00 (Windows NT 5.1; U; ru)" /> </menupopup> </menulist> </toolbaritem> 2. Кнопка с контекстным меню Выделить код Код:<toolbarbutton id="cb2-about" context="cb2-about-context" oncommand="openAboutDialog();"> <label value="[about]" /> <menupopup id="cb2-about-context" onclick="event.stopPropagation()"> <menuitem label="config" oncommand="loadURI('about:config');" /> <menuitem label="mozilla" oncommand="loadURI('about:mozilla');" /> <menuitem label="plugins" oncommand="loadURI('about:plugins');" /> <menuitem label="license" oncommand="loadURI('about:license');" /> <menuitem label="neterror" oncommand="loadURI('about:neterror');" /> <menuitem label="blank" oncommand="loadURI('about:blank');" /> <menuitem label="buildconfig" oncommand="loadURI('about:buildconfig');" /> <menuitem label="feeds" oncommand="loadURI('about:feeds');" /> <menuitem label="credits" oncommand="loadURI('bout:credits');" /> <menu label="cache"> <menupopup> <menuitem label="memory" oncommand="loadURI('about:cache?device=memory')" /> <menuitem label="disk" oncommand="loadURI('about:cache?device=disk')"/> </menupopup> </menu> </menupopup> </toolbarbutton> Кратко и без всяких namespaces, handlers, getters/setters. | ||||||||
Dark-Demon > 08-10-2006 18:25:54 | ||||||||
ничего подобного. xul генерится автоматом и пользователю его править не надо. только xbl.
в кокретном примере с контекстным меню преимуществ у xbl практически нет. однако в других случаях (bb-кнопки, например) xbl смотрится много более привлекательно, чем xul или dom.
ну давай меряться пиписьками... реализуй тогда cb2-imagesh на xul. | ||||||||
Anton > 08-10-2006 22:19:06 | ||||||||
Dark-Demon пишет
Может быть, но чтобы кнопка с контекстным меню появилась в моём диалоговом окне настройки панелей инструментов, мне пришлось этот самый xul править.
(кстати, и с выпадающим тоже). Вот как частный случай: а если пользователю не нужен тег [ code] из твоего расширения ? Вот либо придётся ставить ненужную кнопку, либо все преимущества насмарку. Это ведь смотря как организовать.
Ну давай. Вот твоя: Выделить код Код:<toolbaritem id="cb2-imagesh" class="custombutton" style="-moz-binding: url('chrome://cb2-profile/content/custombuttons2.xbl#cb2-imagesh')" /> +xbl: Выделить код Код:<binding xbl:id="cb2-imagesh" id="cb2-imagesh" extends="chrome://custombuttons2/content/custombuttons2.xbl#allbuttons"> <content context="" tooltiptext="image show/hide" > <xul:deck xbl:inherits="selectedIndex=image" > <xul:toolbarbutton label="show all images" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg==" /> <xul:toolbarbutton label="hide all images" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC" /> <xul:toolbarbutton label="hide external" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACdklEQVR42mL4//8/g3zm6f8AAcQAYvz69es/QACBeSAOQAAx/Pnz5//Z20/+AwQQWOrHv///n7x89R8kCxBAYIEuXdb/f//+/X/w8oP/AAHEADMFphcggEAc1pdv3vyHCQIEEMPPnz//gwy8dPcpWAAggMCmnzp16v+Rqw/BAgABBDOD9RfQpncf3v1/9RahHSQHEEBwBd+BCh4DnXLv6Yv/Nx89/3/l/jOwIoAAAisAGXv9+vX/MOedvvn4//Frj8AKAAII7keQBAj//v37//M///8/+/0frAAggFD8gYxB4iAMEEBwBR8+vvv/5v1bYJC8/v/733+4IoAAgit4/e7t/+evX/9/9OIVskmsAAEEV/D01ev/D56//H/78Yv/1x48+//uD9gUVoAAYlizZg04pGAYxD8PjIbXUAUAAQRWMMmA9f+VK1f+dwK9CeKfuP7o/0uoAoAAAivo02f9f+7cuf9tOhAFh4DR9BziTVaAAAIrgIUBCIP4IEloOLACBBADzL8gDsixIC+C4uUnFP+AYmxhBMIAAYRhwE9wpL79/wYYLKCIfQEMmofPIUHz6e///2///EcxCCCAMAwA2fYCmKCeATWC0uFDYNDdf/by/50nL/5fBQbf5ftP/7//CzeEFSCAwJpB/iKErwJTz6V7T/9fBCZMJFewAgQQ3ABQAE0BBjcoyCcAQxUUsj16rP///fsHNuAcMG7OAFPZqRuP/79CMgAggOAGgCIRpBEUX6BkCYqWDh1WeMiD4u4oMBeAcsILJAMAAgjFgF6gjSDNII2gOG3RRhhw+MrD/wcvPfi//+J9eFIGGQAQQESHAa4kDxBgAMjdAQviliYiAAAAAElFTkSuQmCC" /> </xul:deck> </content> <implementation> <constructor> <![CDATA[ /*this.observer= {observe: Function.prototype.bind.apply(this.observe,[this]) };*/ //работает только до загрузки браузера %-/ this.observer= { el:this, observe: function() {this.el.observe();}, }; this.prefservice.addObserver(this.prefname,this.observer,false); this.observe(); ]]> </constructor> <destructor> <![CDATA[ this.prefservice.removeObserver(this.prefname,this.observer); ]]> </destructor> <method name="observe"> <body> <![CDATA[ this.setAttribute('image', this.pref-1); ]]> </body> </method> <field name="prefservice"> Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch) </field> <field name="prefname"> 'permissions.default.image' </field> <property name="image" onget="return this.getAttribute('image')" onset="this.setAttribute('image',val);return val" /> <property name="pref" onget="return this.prefservice.getIntPref(this.prefname)" onset="this.prefservice.setIntPref(this.prefname,val); return val" /> </implementation> <handlers> <handler event="click" button="0" modifiers="any"><![CDATA[ this.pref= 1; ]]></handler> <handler event="click" button="1" modifiers="any"><![CDATA[ this.pref= 3; ]]></handler> <handler event="click" button="2" modifiers="any"><![CDATA[ this.pref= 2; ]]></handler> </handlers> </binding> а вот моя: Выделить код Код:<script type="application/x-javascript" src="chrome://global/content/nsUserSettings.js"/> <script type="application/x-javascript"> <![CDATA[ function setDeckImage () { document. getElementById ("cb22-imageshdeck"). selectedIndex = nsPreferences. getIntPref ('permissions.default.image', 0); } var ps = nsPreferences. mPrefService; var ps2 = ps. QueryInterface (Components. interfaces. nsIPrefBranch2); var imageshObserver = { observe: function (s, t, d) { setDeckImage (); } }; ps2. addObserver ('permissions.default.image', imageshObserver, false); setTimeout (setDeckImage, 0); ]]> </script> <toolbarbutton id="cb22-imagesh"> <deck id="cb22-imageshdeck" onclick="nsPreferences.setIntPref('permissions.default.image',event.button)"> <toolbarbutton label="show all images" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg==" /> <toolbarbutton label="hide all images" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC" /> <toolbarbutton label="hide external" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACdklEQVR42mL4//8/g3zm6f8AAcQAYvz69es/QACBeSAOQAAx/Pnz5//Z20/+AwQQWOrHv///n7x89R8kCxBAYIEuXdb/f//+/X/w8oP/AAHEADMFphcggEAc1pdv3vyHCQIEEMPPnz//gwy8dPcpWAAggMCmnzp16v+Rqw/BAgABBDOD9RfQpncf3v1/9RahHSQHEEBwBd+BCh4DnXLv6Yv/Nx89/3/l/jOwIoAAAisAGXv9+vX/MOedvvn4//Frj8AKAAII7keQBAj//v37//M///8/+/0frAAggFD8gYxB4iAMEEBwBR8+vvv/5v1bYJC8/v/733+4IoAAgit4/e7t/+evX/9/9OIVskmsAAEEV/D01ev/D56//H/78Yv/1x48+//uD9gUVoAAYlizZg04pGAYxD8PjIbXUAUAAQRWMMmA9f+VK1f+dwK9CeKfuP7o/0uoAoAAAivo02f9f+7cuf9tOhAFh4DR9BziTVaAAAIrgIUBCIP4IEloOLACBBADzL8gDsixIC+C4uUnFP+AYmxhBMIAAYRhwE9wpL79/wYYLKCIfQEMmofPIUHz6e///2///EcxCCCAMAwA2fYCmKCeATWC0uFDYNDdf/by/50nL/5fBQbf5ftP/7//CzeEFSCAwJpB/iKErwJTz6V7T/9fBCZMJFewAgQQ3ABQAE0BBjcoyCcAQxUUsj16rP///fsHNuAcMG7OAFPZqRuP/79CMgAggOAGgCIRpBEUX6BkCYqWDh1WeMiD4u4oMBeAcsILJAMAAgjFgF6gjSDNII2gOG3RRhhw+MrD/wcvPfi//+J9eFIGGQAQQESHAa4kDxBgAMjdAQviliYiAAAAAElFTkSuQmCC" /> </deck> </toolbarbutton> ой... и правда короче : ) Зато выглядит аккуратнее и работает, в отличие от первой. Использовать по отдельной привязке на каждый отдельный элемент управления - всё равно что тексты на одном компьютере набирать, музыку слушать - на другом, а чтобы кино посмотреть или интернет посерфить - позарез нужны третий и четвёртый. Но тебя, я чувствую, не переубедить, посему пустой этот спор со своей стороны прекращаю. Удачи, может кто и оценит такой подход. | ||||||||
Dark-Demon > 09-10-2006 12:19:00 | ||||||||
смешной ты человек
я не вижу тут ничего особо зазорного. впрочем, если очень хочется, то можно сделать эту кнопку невидимой, тобишь специальным флагом указывать - добавлять ли для неё запись в xul.
уже вижу, что она работает неправильно такой ценой и я могу сократить свои кнопки раза в два, однако я намеренно этого не делаю, дабы тем, кто их будет переделывать было бы проще это сделать.
кстати, это было бы весьма неплохо! но дорого... пока... Yan, может ты выскажешься по этому поводу? | ||||||||
Yan > 09-10-2006 17:50:33 | ||||||||
Я бы прежде всего предложил не превращать эту ветку в холивар "xbl vs xul", и перенести обсуждение в форум Разработка. Всё-таки здесь лучше обсуждать уже готовые релизы расширения, и кнопки к нему. Короче, создаю тему "Разработка Сustom Buttons", и предлагаю продолжить там. | ||||||||
SAdmn > 05-11-2006 16:09:07 | ||||||||
И снова приходится редактировать - баг вернулся. | ||||||||
stoneflash > 07-11-2006 13:56:33 | ||||||||
Я уже спрашивал здесь, спрошу теперь и в этой теме. | ||||||||
Yan > 07-11-2006 15:36:39 | ||||||||
stoneflash Выделить код Код:custombutton://%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%20%u043D%u043E%u0432%u044B%u0445%20%u0442%u0430%u0431%u0430%u0445%20%u0432%u0441%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0441%20%u0444%u0440%u0430%u0437%u043E%u0439%5D%5B%5D%5Bvar%20caseSensitive%3Dtrue%3B%0Avar%20s%3Dprompt%28%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%20%u043D%u043E%u0432%u044B%u0445%20%u0442%u0430%u0431%u0430%u0445%20%u0432%u0441%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0441%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0441%20%u0444%u0440%u0430%u0437%u043E%u0439%3A%27%29%0Aif%20%28%21caseSensitive%29%20s%3Ds.toLowerCase%28%29%3B%0Avar%20doc%3Dcontent.document%3B%0Avar%20ar%3Ddoc.getElementsByTagName%28%27a%27%29%3B%0Avar%20hrefs%3D%7B%7D%3B%0Afor%20%28var%20i%3D0%3Bi%3Car.length%3Bi++%29%7B%0A%20%20var%20text%3Dar%5Bi%5D.innerHTML%3B%0A%20%20if%20%28%21caseSensitive%29%20text%3Dtext.toLowerCase%28%29%3B%0A%20%20if%20%28%20%20%28text%09.replace%28/%26nbsp%3B/g%2C%27%20%27%29%0A%20%20%09%09.replace%28/%26amp%3B/g%2C%27%26%27%29%0A%20%20%09%09.replace%28/%26quot%3B/g%2C%27%22%27%29%0A%20%20%09%09.indexOf%28s%29%21%3D-1%0A%09%29%0A%09%26%26%28ar%5Bi%5D.href%29%0A%09%29%0A%20%20%7B%0A%09hrefs%5Bar%5Bi%5D.href%5D%3D1%3B%0A%20%20%7D%0A%7D%0Afor%20%28var%20h%20in%20hrefs%29%7B%0A%20%20%20%20gBrowser.addTab%28h%29%3B%0A%7D%5D%5B По умолчанию поиск регистрозависим. | ||||||||
stoneflash > 07-11-2006 16:40:16 | ||||||||
Yan | ||||||||
stoneflash > 07-11-2006 19:34:13 | ||||||||
Yan | ||||||||
Yan > 07-11-2006 23:40:20 | ||||||||
stoneflash Выделить код Код:custombutton://%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%20%u043D%u043E%u0432%u044B%u0445%20%u0442%u0430%u0431%u0430%u0445%20%u0432%u0441%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0441%20%u0444%u0440%u0430%u0437%u043E%u0439%5D%5B%5D%5Bvar%20caseSensitive%3Dtrue%3B%0Avar%20promptService%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/prompt-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPromptService%29%3B%0Avar%20onlyUnVisited%20%3D%20%7B%7D%3B%0Avar%20s%3D%7B%7D%3B%0ApromptService.prompt%28window%2C%27%27%2C%0A%20%20%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%20%u043D%u043E%u0432%u044B%u0445%20%u0442%u0430%u0431%u0430%u0445%20%u0432%u0441%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0441%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0441%20%u0444%u0440%u0430%u0437%u043E%u0439%3A%22%2Cs%2C%0A%20%20%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043D%u0435%u043F%u043E%u0441%u0435%u0449%u0451%u043D%u043D%u044B%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%22%2C%0A%20%20onlyUnVisited%29%3B%0AonlyUnVisited%3DonlyUnVisited.value%3B%0As%3Ds.value%3B%0Aif%20%28s%29%7B%0A%09if%20%28%21caseSensitive%29%20s%3Ds.toLowerCase%28%29%3B%0A%09var%20doc%3Dcontent.document%3B%0A%09var%20ar%3Ddoc.getElementsByTagName%28%27a%27%29%3B%0A%09var%20hrefs%3D%7B%7D%3B%0A%09var%20z%3D0%3B%0A%09var%20his%3DComponents.classes%5B%22@mozilla.org/browser/global-history%3B2%22%5D%0A%09%09.getService%28Components.interfaces.nsIGlobalHistory2%29%3B%0A%09var%20IO%3DComponents.%20classes%5B%22@mozilla.org/network/io-service%3B1%22%5D.%0A%09%09getService%28Components.interfaces.nsIIOService%29%3B%0A%09for%20%28var%20i%3D0%3Bi%3Car.length%3Bi++%29%7B%0A%09%20%20var%20text%3Dar%5Bi%5D.innerHTML%3B%0A%09%20%20if%20%28%21caseSensitive%29%20text%3Dtext.toLowerCase%28%29%3B%0A%09%20%20if%20%28%20%20%28text%09.replace%28/%26nbsp%3B/g%2C%27%20%27%29%0A%09%20%20%09%09.replace%28/%26amp%3B/g%2C%27%26%27%29%0A%09%20%20%09%09.replace%28/%26quot%3B/g%2C%27%22%27%29%0A%09%20%20%09%09.indexOf%28s%29%21%3D-1%0A%09%09%29%0A%09%09%26%26%28ar%5Bi%5D.href%29%0A%09%09%26%26%28%28%21onlyUnVisited%29%7C%7C%28%21his.isVisited%28%20IO.newURI%28ar%5Bi%5D.href%2Cnull%2Cnull%29%20%29%29%29%0A%09%09%29%0A%09%20%20%7B%0A%09%09hrefs%5Bar%5Bi%5D.href%5D%3D1%3B%0A%09%09z++%3B%0A%09%20%20%7D%0A%09%7D%0A%09//alert%28z%29%3B%0A%09for%20%28var%20h%20in%20hrefs%29%7B%0A%09%20%20%20%20gBrowser.addTab%28h%29%3B%0A%09%7D%0A%7D%5D%5B/*Initialization%20Code*/ Исправил код 8.11.06 в 20:39 | ||||||||
stoneflash > 08-11-2006 20:18:18 | ||||||||
Yan | ||||||||
Yan > 08-11-2006 20:41:04 | ||||||||
stoneflash | ||||||||
stoneflash > 08-11-2006 20:46:23 | ||||||||
Yan | ||||||||
SAdmn > 11-11-2006 12:21:51 | ||||||||
Можно попросить помощи в создании кнопки с ниспадающим списком фильтров URL corrector - чтоб можно было быстро отключить один из них. Сам, не зная основ создания расширений, уже вторую неделю пытаюсь, но ничего не выходит. | ||||||||
AK-74 > 14-11-2006 20:09:24 | ||||||||
Пиплы, а как зафигачить кнопку на панельку, шоб страницу сразу в Scrapbook отправлять? В этой теме было что-то подобное, но там средняя кнопка учавствовала и у меня не перло. Так вот, хотца обычную без всяких средних кликов и др. наворотов... | ||||||||
Yan > 14-11-2006 21:34:42 | ||||||||
AK-74 Добавлено Втр 14 Ноя 2006 21:40:22 : Выделить код Код:custombutton://Capture%20with%20Scrapbook%5D%5Bchrome%3A//scrapbook/skin/capture_entire_as.png%5D%5BsbBrowserOverlay.execCapture%28false%2Cfalse%2Cfalse%2C%27%27%29%3B%5D%5B Захватить как...: Выделить код Код:custombutton://Capture%20web-page%20as...%5D%5Bchrome%3A//scrapbook/skin/capture_entire_as.png%5D%5BsbBrowserOverlay.execCapture%28false%2Cfalse%2Ctrue%2C%27%27%29%3B%5D%5B | ||||||||
stoneflash > 16-11-2006 20:35:46 | ||||||||
А можно сделать кнопочку, считающую, сколько раз на странице встречается та или иная фраза? | ||||||||
AndreyD > 16-02-2007 23:52:05 | ||||||||
Yan
у меня не работает почему-то. | ||||||||
Modex > 17-02-2007 00:34:45 | ||||||||
AndreyD | ||||||||
AndreyD > 17-02-2007 01:00:50 | ||||||||
Modex Версия 1.2.0.6 | ||||||||
MySh > 17-02-2007 20:40:30 | ||||||||
Scrapbook 1.2.0.8. — всё работает | ||||||||
AndreyD > 17-02-2007 21:41:18 | ||||||||
Обновил до 1.2.0.8, все равно не работает, может я делаю что-то не так? | ||||||||
AndreyD > 17-02-2007 22:18:21 | ||||||||
Как выглядит код при создании кнопки для вставки текста в позицию курсора в форме (для смайла например?) | ||||||||
Yan > 17-02-2007 22:44:21 | ||||||||
Примерно так: Выделить код Код:var open="[b]"; var close="[/b]"; var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); text +=open+theBox.value.substring(startPos, endPos)+close; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; theBox.selectionStart = startPos; theBox.selectionEnd = endPos + open.length + close.length; var nHeight = theBox.scrollHeight - oHeight; theBox.scrollTop = oPosition + nHeight; | ||||||||
AndreyD > 18-02-2007 12:40:01 | ||||||||
Yan, я так понимаю, этот код вставляет b перед выделенным текстом и /b после него. А просто вставка тескста? Извините, но в программировании не силен. | ||||||||
stoneflash > 18-02-2007 12:53:32 | ||||||||
AndreyD | ||||||||
Yan > 18-02-2007 12:56:37 | ||||||||
AndreyD Выделить код Код:var t=":)"; var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; theBox.value=theBox.value.substring(0,startPos) +t +theBox.value.substring(endPos, theBox.value.length); theBox.selectionStart=theBox.selectionEnd=startPos+ t.length; var nHeight = theBox.scrollHeight - oHeight; theBox.scrollTop = oPosition + nHeight; | ||||||||
AndreyD > 18-02-2007 13:17:51 | ||||||||
stoneflash Добавлено Вск 18 Фев 2007 13:29:47 : | ||||||||
AndreyD > 19-02-2007 11:20:03 | ||||||||
А можно сделать кнопку, которая прячет-показывает другие панели, как панель закладок? Если да, расскажите, как. | ||||||||
Dark-Demon > 19-02-2007 12:58:16 | ||||||||
http://forum.mozilla-russia.org/viewtopic.php?pid=147506#p147506 | ||||||||
AndreyD > 19-02-2007 17:12:17 | ||||||||
Dark-Demon, такая кнопка у меня есть. Что нужно поменять, чтобы пряталась другая панель? Я пробовал вместо "Personal toolbar" вставить имя настраиваемой панели со смайлами (smiles), но так не работает. | ||||||||
Dark-Demon > 19-02-2007 18:13:02 | ||||||||
AndreyD, возьми dom inspector и посмотри какой идентификатор у этой панели. | ||||||||
AndreyD > 19-02-2007 23:01:32 | ||||||||
Dark-Demon, вы меня пугаете! | ||||||||
Dark-Demon > 20-02-2007 11:55:12 | ||||||||
Ну а как ты хотел? мне отсюда не видно что там у тебя за панелька... могу предложить поставить расширение Inspect Context, тогда на панельке можно щёлкнуть ПКМ, выбрать inspect, после чего откроется дом инспектор. потом нужно перейти вверх по дереву до элемента toolbar И посмотреть его id во 2 колонке. | ||||||||
AndreyD > 20-02-2007 21:07:37 | ||||||||
Я разобрался с ID панелей с помощью поиска Total Comander в папке профиля по имени панели. Настриваемые панели имеют вид "__customToolbar_имя" | ||||||||
AndreyD > 23-02-2007 22:47:13 | ||||||||
Афигенное расширение!!!! Все действия, которые часто приходится делать в браузере и раньше выполнялись набором кликов-нажатий, теперь выполняются единственным нажатием на нужную кнопку. Еще сделал панели для BB code и 3D смайлов, которые прячутся-вызываются кнопками на меню баре. | ||||||||
Dark-Demon > 24-02-2007 20:08:46 | ||||||||
угу, а вот когда поставишь keyconfig - совсем о тулбарах и кнопочках забудешь | ||||||||
itomonster > 27-02-2007 12:59:51 | ||||||||
ребята, никак не могу разобраться в этом коде, на котором нужно писать кнопки. | ||||||||
Dimanish > 27-02-2007 14:39:15 | ||||||||
http://forum.mozilla-russia.org/viewtop … 68#p100868 | ||||||||
itomonster > 27-02-2007 20:42:01 | ||||||||
прочитал и тему, и вики, но все равно у меня ничего не получается заставить работать. поэтому и прошу привести конретный пример, чтобы сравнить и понять, что у меня неправильно. | ||||||||
Infant > 27-02-2007 20:52:49 | ||||||||
itomonster | ||||||||
Anton > 27-02-2007 21:34:39 | ||||||||
в текущей вкладке в новой вкладке | ||||||||
itomonster > 27-02-2007 21:40:25 | ||||||||
Infant | ||||||||
AndreyD > 27-02-2007 22:30:56 | ||||||||
itomonster
Извини, но стоит ли для этого делать кнопку. Не проще ли использовать закладки. | ||||||||
itomonster > 27-02-2007 22:51:20 | ||||||||
AndreyD Собственно, для меня Custom Buttons тем и ценно, что все сайты нужные я могу на кнопки повесить | ||||||||
and23 > 28-02-2007 10:38:13 | ||||||||
Простите, если ужЕ обсуждалось: я не нашёл :-( | ||||||||
Anton > 28-02-2007 14:15:58 | ||||||||
Вообще-то я custombuttons в Thunderbird не пользуюсь, возможно, изобретаю велосипед. Сделай новую кнопку с кодом Потом с помощью этой кнопки инсталлируй готовые. | ||||||||
and23 > 28-02-2007 15:01:31 | ||||||||
2Anton: Спасибо, работает! :-) (только я не кнопку добавил, а пункт меню). | ||||||||
369 > 28-02-2007 20:31:47 | ||||||||
Значится так. Долго не мог понять, почему custombuttons и кнопки BBcode с домашней страницы расширения у меня напрочь не работали. Причем совсем. | ||||||||
Modex > 28-02-2007 20:36:58 | ||||||||
369 | ||||||||
Yan > 28-02-2007 20:49:46 | ||||||||
369 | ||||||||
Modex > 28-02-2007 21:15:44 | ||||||||
Yan | ||||||||
369 > 28-02-2007 21:20:46 | ||||||||
...ничего не понимаю... Снес NoScript в другой сборке - кнопки по прежнему не работают... | ||||||||
Anton > 28-02-2007 22:04:28 | ||||||||
иногда происходит, не уловил только, какие действия приводят к их (временной) работе. кажется, проблема связана с Добавлено Срд 28 Фев 2007 22:30:12 : не пойму только, что тут к чему. после перезапуска бб-коды "завелись". | ||||||||
alexmac > 06-03-2007 13:01:28 | ||||||||
Возможно ли добавлять кнопки чтобы небыло поля с названием самой кнопки? Так как при добавлениии кнопки на панель навигациии или в панель меню сами панели становятся шире. Если да, то как? Если нет, то не планируется ли сделать такое? | ||||||||
Anton > 06-03-2007 15:08:19 | ||||||||
1. Правой кнопкой по панели инструментов, "Настроить...", в списке "Показывать" выбрать "Только значки" | ||||||||
alexmac > 06-03-2007 15:35:15 | ||||||||
Спасибо, но это не совсем то. Хотелось бы запихнуть кнопку на панель с главным меню. При этом чтобы панель главного меню не расширялась, а текст у кнопок с тулбара оставался виден. Если сделать так как ты предлагаешь: Вопрос к автору расширения: | ||||||||
Anton > 06-03-2007 16:00:30 | ||||||||
можно прописать в секцию "Инициализация" одной из этих кнопок строку | ||||||||
Dark-Demon > 06-03-2007 17:14:26 | ||||||||
я так понимаю нужно всего-лишь поменять ориентацию охватывающего бокса - это можно сделать через userCrome.css | ||||||||
alexmac > 06-03-2007 21:37:11 | ||||||||
To Anton: to Dark-Demon: Добавлено Втр 06 Мар 2007 21:43:37 : И всё таки хотелось бы подробностей от Dark-Demon | ||||||||
Dark-Demon > 07-03-2007 12:04:39 | ||||||||
не, мне лень ковыряться %-) | ||||||||
alexmac > 07-03-2007 12:25:58 | ||||||||
to Dark-Demon: А кто нибудь может сделать кнопки: На вопрос зачем всё это, отвечу так: перехожу с макстона на лису и хочется сохранить макстоновскую функциональность. | ||||||||
Anton > 08-03-2007 10:19:59 | ||||||||
где-то была в этой теме
и как оно там это в Maxthone'е реализовано ? | ||||||||
alexmac > 08-03-2007 12:19:29 | ||||||||
К сожелению не знаю как выложить свой скриншот этой кнопки. Поэтому попытаюсь объяснить на словах: | ||||||||
Anton > 08-03-2007 13:24:54 | ||||||||
Кнопка для выбора кодировки (выкладываю снова, т. к., в старой у меня почему-то перестали работать кириллические имена функций и переменных): Выделить код Код:custombutton://%u0412%u044B%u0431%u043E%u0440%20%u043A%u043E%u0434%u0438%u0440%u043E%u0432%u043A%u0438%5D%5B%5D%5B%5D%5Bvar%20menu%20%3D%0A%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%20%20%20oncommand%3D%22this.parentNode.changeEncoding%28event%29%22%3E%0A%09%3Cmenuitem%20charset%3D%22KOI8-R%22%20label%3D%22%u041A%u0438%u0440%u0438%u043B%u043B%u0438%u0446%u0430%20%28KOI8-R%29%22/%3E%0A%09%3Cmenuitem%20charset%3D%22IBM866%22%20label%3D%22%u041A%u0438%u0440%u0438%u043B%u043B%u0438%u0446%u0430/%u0420%u043E%u0441%u0441%u0438%u044F%20%28CP-866%29%22/%3E%0A%09%3Cmenuitem%20charset%3D%22windows-1251%22%20label%3D%22%u041A%u0438%u0440%u0438%u043B%u043B%u0438%u0446%u0430%20%28Windows-1251%29%22/%3E%0A%09%3Cmenuitem%20charset%3D%22UTF-8%22%20label%3D%22Unicode%20%28UTF-8%29%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%0Athis.%20orient%20%3D%20%22horizontal%22%3B%0Athis.%20type%20%3D%20%22menu-button%22%3B%0Athis.%20appendChild%20%28menu%29%3B%0Athis.%20changeEncoding%20%3D%20function%20%28event%29%0A%7B%0A%09var%20encoding%20%3D%20event.%20target.%20getAttribute%20%28%22charset%22%29%3B%0A%09SetForcedCharset%20%28encoding%29%3B%0A%09SetDefaultCharacterSet%20%28encoding%29%3B%0A%7D Что касается второй кнопки, я думаю для custombuttons-кнопки это будет сложно, особенно, если выяснится, что при выборе, например, "загружать изображения" нужно будет загрузить изображения для текущей/всех страниц. Поэтому, лучше поискать расширения - ILO, NoScript, например. В общем, это конечно в принципе реализуемо, но потребует немалых затрат времени. Лучше поискать готовые решения. | ||||||||
alexmac > 08-03-2007 13:51:53 | ||||||||
Спасибо за кнопку со сменой кодировки, в сообщениях выше я её так ине нашёл По поводу загрузки изображений: нужно что б данная кнопка работала только для текущей страницы(вкладки). Жаль что ни кто не возьмётся за реализацию | ||||||||
Лаэда > 08-03-2007 21:06:17 | ||||||||
Есть такое расширение ImageShack Toolbar. UPD: Поиграл с DOM инспектором... Понял, что расширение это великая вещь... Еще бы понять, как делать radio buttons (я правильно называю, дырочки ЗЫ Выделить код Код:custombutton://Upload%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAACXBIWXMAAAsSAAALEgHS3X78AAABa0lEQVR4nJWSLWjDQBiGP3kyVMUGagKDEjExO1OojKiIjRmcW8QIsaFqYqKmI6aiUBMZqImNKpGBmZiJyKr1y2reiWuTaynddvBwfzz3fncc8b7Fif0lzNgzQ0g6jtsz6DdZSMJ4M4SQBG6//yh/9eLL5yOm29GxAl3mFtcQkuAszU6cbkdwlqaq4BhGzC0ci5AGivdngpAEMzLglw6m2xHGmyHuMxPW2sBgJroD6CSq9goh6Qx7bnTi5R7p4iXlxxMGM9ElunMbK73sNCCA46tkhYfBTMBIBERImGeTK/Iu6u6sE0iCiAliTjCkeg99X8mN7O/NeUeUeUoOCXZsApyjKWOAq17m2lfybgU0AdAEiNIHiFAl25EBPq6X6zswp1py5fVyLeEntnrRkOAnNprKA2oJ1FLJO10uXaQB4dAsgMq7iZJXWtnFRCXXb0Dhggv3rIc2LxMLh2ahyXkvcz65yZmsf83/4FiEH0rWltfnBPlKAAAAAElFTkSuQmCC%5D%5BImageShack_upload%28event%29%3B%20event.preventBubble%28%29%3B%5D%5B/*Initialization%20Code*/ | ||||||||
alexmac > 12-03-2007 15:06:32 | ||||||||
Можно ли отменить действие прописанное в секции "CODE", при выполнении действия по нажатию на пункт в ниспадающем меню кнопки? to Yan: | ||||||||
Dark-Demon > 13-03-2007 12:20:52 | ||||||||
alexmac, опиши по шагам чего ты хочешь... | ||||||||
alexmac > 13-03-2007 14:16:20 | ||||||||
У меня есть кнопка с ниспадающим меню, по нажатию на саму кнопку должно происходить 1-ое действие, при нажатии на 1-ый пункт в ниспад. меню 2-ое действие, при нажатии на 2-ой пункт в ниспад. меню 3-е действие и т.д. Но возникает проблемма: при нажатии на любой пункт в нисп. меню (1-ый или 2-ой) происходит нужное действие (2-ое или 3-е) + 1-ое. | ||||||||
Dark-Demon > 13-03-2007 14:37:55 | ||||||||
а, понял, тебе нужно вставить event.stopPropagation(), чтобы событие не всплывало дальше. | ||||||||
alexmac > 13-03-2007 14:58:21 | ||||||||
а куда именно? Выделить код Код:/*Initialization Code*/ this.SaveSelToMaf=function(){ MafGUI.addSelectedTabsToArchive(Maf); } this.SaveAllToMaf=function(){ MafGUI.addAllTabsToArchive(Maf); } var nMItem=function(label,img,obj){ var m=document.createElement('menuitem'); m.setAttribute('label',label); m.f=obj.SaveSelToMaf.bind(obj); m.setAttribute('oncommand','this.f()'); m.setAttribute('image',img); m.setAttribute('class','menuitem-iconic'); return m; } var nMItem2=function(label,img,obj){ var m=document.createElement('menuitem'); m.setAttribute('label',label); m.f=obj.SaveAllToMaf.bind(obj); m.setAttribute('oncommand','this.f()'); m.setAttribute('image',img); m.setAttribute('class','menuitem-iconic'); return m; } var mP=document.createElement('menupopup'); mP.appendChild(nMItem('Save selection to MAF',this.image,this)); mP.appendChild(nMItem2('Save all to MAF',this.image,this)); this.appendChild(mP); this.type="menu-button"; Замечания по реализации приветствуются | ||||||||
stoneflash > 13-03-2007 15:50:05 | ||||||||
Был бы очень благодарен,если бы кто-нибудь написал кнопочку для удаления с диска просматриваемой страницы по протоколу file://. Заранее спасибо. | ||||||||
Anton > 13-03-2007 23:01:48 | ||||||||
у меня не выполняется первое действие при выполнении второго. я, правда, заменил MafGUI.xxx alert'ами, может, это особенность maf ? stoneflash Выделить код Код:custombutton://%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u0444%u0430%u0439%u043B%5D%5B%5D%5Btry%0A%7B%0A%09var%20file%20%3D%20Components.%20classes%20%5B%22@mozilla.org/file/local%3B1%22%5D.%20createInstance%20%28Components.%20interfaces.%20nsILocalFile%29%3B%0A%09var%20fn%20%3D%20getBrowser%20%28%29.%20contentDocument.%20location.%20href.%20replace%20%28/file%3A%28%5C/%29%7B2%2C3%7D/%2C%20%22%22%29%3B%0A%09fn%20%3D%20fn.%20replace%20%28/%2520/g%2C%20%22%20%22%29%3B%0A%09fn%20%3D%20fn.%20replace%20%28/%5C//g%2C%20%22%5C%5C%22%29%3B%20//%20for%20windows%0A%09file.%20initWithPath%20%28fn%29%3B%0A%09file.%20remove%20%28false%29%3B%0A%09file.%20initWithPath%20%28fn.%20replace%20%28/%5C.%28htm%7Chtml%29%24/%2C%20%22%22%29%20+%20%22_files%22%29%3B%0A%09file.%20remove%20%28true%29%3B%0A%7D%20catch%20%28e%29%20%7Balert%28e%29%3B%7D%5D%5B | ||||||||
alexmac > 13-03-2007 23:30:22 | ||||||||
может, это особенность maf? | ||||||||
stoneflash > 14-03-2007 10:56:17 | ||||||||
Anton
Но файл удаляется. Если файл с русскими буквами в названии, то выдаёт примерно такое же сообщение, но файл не удаляется. Хотя стоило, в принципе, ожидать. Никак не фофиксить? например взять кусок кода из Human URL ? | ||||||||
Dark-Demon > 14-03-2007 12:18:58 | ||||||||
alexmac, вроде должно работать так... | ||||||||
alexmac > 14-03-2007 12:47:44 | ||||||||
Не помогло | ||||||||
Dark-Demon > 14-03-2007 13:39:42 | ||||||||
а так? также попробуй вместо onclick поставить oncommand | ||||||||
alexmac > 14-03-2007 13:53:12 | ||||||||
Спасибо, Dark-Demon!!! Поставил в этот код oncommand и всё заработало | ||||||||
Anton > 14-03-2007 15:50:38 | ||||||||
stoneflash
Вероятно, файл не имеет сопутствующей директории с картинками, css и т. п. Определённо, я забыл убрать отладочный alert из кода кнопки. В общем, надо открыть код кнопки и удалить символы | ||||||||
alexmac > 29-03-2007 15:30:19 | ||||||||
Подскажите, пожалуйста, код кнопки, аналогичной кнопки "Перейти(перейти по введённому адресу)". Хочу "прикрутить" к ней ниспадающее меню, с дополнительными функциями. | ||||||||
Dark-Demon > 29-03-2007 16:32:19 | ||||||||
а какие функции ты хочешь прикрутить? | ||||||||
alexmac > 29-03-2007 19:43:53 | ||||||||
Хочется иметь такую же кнопку как в maxthone с функциями перевода на различные языки используя веб-сервисы типа промт и т.д. Ну и ещё чего-нибудь, про запас | ||||||||
Dark-Demon > 30-03-2007 12:36:22 | ||||||||
alexmac, второе использует XBL и все его прелести (конструктор, деструктор, евенты, наследование итп), а первое - только яваскрипт: есть только конструктор и обработчик клика, который во многих случаях без надобности. часть кнопок custombuttons совместимо с customitems, но не все. если установлены оба расширения, то конфликтов быть не должно. | ||||||||
alexmac > 30-03-2007 13:36:03 | ||||||||
Dark-Demon, спасибо за ответ. Может по поводу кнопки что-нибудь подскажите? | ||||||||
Nem > 30-03-2007 13:41:01 | ||||||||
alexmac > 30-03-2007 13:51:08 | ||||||||
To Nem | ||||||||
Nem > 30-03-2007 14:06:09 | ||||||||
alexmac | ||||||||
alexmac > 30-03-2007 14:29:52 | ||||||||
Спасибо за участие | ||||||||
Nem > 30-03-2007 14:58:20 | ||||||||
alexmac Вот простой пример такой кнопки, переводящей через Google с de на en Чуть позже доделаю и выложу вариант, где будет с выпадающим списком. | ||||||||
alexmac > 30-03-2007 15:17:14 | ||||||||
Спасибо. | ||||||||
Nem > 30-03-2007 15:44:48 | ||||||||
Вот с меню. Да, "content.document.location.href" - текущий URL, а "loadURI()" - переход по адресу.
Не понял вопроса. А как работает функция "Перейти"? | ||||||||
alexmac > 30-03-2007 15:52:50 | ||||||||
Добавлено Птн 30 Мар 2007 15:55:16 : | ||||||||
Nem > 30-03-2007 16:42:31 | ||||||||
alexmac | ||||||||
alexmac > 31-03-2007 16:18:14 | ||||||||
To Nеm:Спасибо, помогло! А, вообще, это что за язык, javs script? | ||||||||
Nem > 31-03-2007 22:17:04 | ||||||||
alexmac | ||||||||
alexmac > 02-04-2007 16:16:23 | ||||||||
Кто-нибудь может подсказать, как при помощи Custom Buttons сделать так, что бы при наведении курсора мыши кнопка меняла свой цвет (менялась картинка)? | ||||||||
Anton > 02-04-2007 21:26:09 | ||||||||
вот так: Выделить код Код:this. mouseover = function (event) { this. oldimage = this. image; this. image = "file:///H:/greenicon.png"; } this. mouseout = function (event) { this. image = this. oldimage; } this. setAttribute ("onmouseover", "this.mouseover()"); this. setAttribute ("onmouseout", "this.mouseout()"); например, в разделе "Инициализация". | ||||||||
Jarov > 11-04-2007 23:16:40 | ||||||||
Народ, подскажите, как функцию из TMP "Закрыть вкладки справа" реализовать в кнопку?? | ||||||||
alexmac > 13-04-2007 11:42:52 | ||||||||
To Anton: Выделить код Код:custombutton://%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%5D%5B%5D%5B/*CODE*/%0AgBrowser.closeRightTabs%28gBrowser.mCurrentTab%29%3B%5D%5B/*Initialization%20Code*/ код взял отсюда _http://tmp.garyr.net/forum/rss.php?p=15016 (может тебе пригодится) | ||||||||
Лаэда > 28-04-2007 23:44:41 | ||||||||
А у когонить открывается сайт custombuttons.phpbbnow.com? UPD: Выделить код Код:custombutton://Export%20Custom%20Buttons%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACq0lEQVR4Xm2PzWtcVRiHn/fce2Ymk8ykk9YkpTWkCyvYVBvpImQhhdCYbgRdSYMLd5K0qaj0L2jpF+3GpVChGNSNllYMCn5uulEKJiGEiCQm1TSTTmYmmXvnfp1j6wwdAn3ggXPg/b0fYj4CLJg6+B67UIarQQyJ4TxNRMGff4HnQxiDookIOIoWll72qHHyatwYerGNmmoV4qTxBlC0QDlgAWshqTOWGj28v230xf31bcb8EMpV2CiCNbQyPAMTk5G8e1od3xQ9tCOS06dDn4zvt7bd3cA2TRrGNQb1sa4TstdDPVciPbjvhFdiMPAA09zAthoMI7wFTErGvSTZzLTu677lDKFRHiif7GuubjvUfUt3ZKadJzXC5P8Zy7CYc8zyUvcAx/KQqWG1Qnq6obAKdhMApAe7cZD6yhqRbwjWAta/8Vi7H8+JeZ/DJtsxLW+0H5fBIoQGIsCwGxdIAbFQ+tJh7tPkt1rJjov5AKIKL4SWjzOn1OvOEQNx60YUoJv/LQhmSO7d5vtanXOOZkkhoFIsmZC3K7fNnegXoNh0E5aXFBe/znHtqxzX7xY4+4NjKxETnZqlNKCSCJIErKJc3+Gi/wdb/ANsAI9gftFSLEzR/+YFgndG+LFfux8mRJMKphS4D1Z4ShKzN6/JswWYhoWyJf/KOrVDs2wvz5GKIlag6goAuMbQAo464FBqTL8ZtvNTlOKIttSDgKCeIEpICV+48BnwuTIJPDGJcVzFq+kqhIvw9wKe/t3/ZCnQiwNHewniAFccDgy3keTo9Aw/+wKyMEYTutJwP2vpe+jxaxhzpWb59t2Yg3teTs+MnDkwsLrq8+/l9WjfQ9trNCUAmT8JAAJ91nIvjLhhDTdJ2CpbeM+B7YDnpUu+66/Y/MQK5R6XUyGsAvwHk/0n+0qkvkwAAAAASUVORK5CYII%3D%5D%5Bvar%20rv%20%3D%20new%20Object%28%29%3B%0Avar%20cbPrefs%20%3D%20gPrefService.getChildList%28%22custombuttons.button%22%2C%20rv%29%3B%0AcbPrefs.sort%28%29%3B%0A%0Avar%20btnSource%2C%20btnValue%2C%20btnLabel%2C%20btnImage%2C%20btnURL%3B%0Avar%20btnLink%20%3D%20%22%22%3B%0A%0Afor%28var%20i%20%3D%200%3B%20i%20%3C%20cbPrefs.length%3B%20i++%29%20%7B%0A%20%20btnValue%20%3D%20gPrefService.getCharPref%28cbPrefs%5Bi%5D%29%3B%0A%20%20btnSource%20%3D%20%5B%5D%3B%0A%20%20btnSource%20%3D%20btnValue.split%28/%5C%5D%5C%5B/%29%3B%0A%20%20btnLabel%20%3D%20btnSource%5B0%5D%3B%0A%20%20btnImage%20%3D%20%28btnSource%5B1%5D%20%3D%3D%20%22%22%20%7C%7C%20btnSource%5B1%5D%20%3D%3D%20%22data%3A%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22chrome%3A//custombuttons/skin/button.png%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20btnSource%5B1%5D%3B%0A%20%20btnURL%20%3D%20%22custombutton%3A//%22%20+%20escape%28btnValue%29%3B%0A%0A%20%20btnLink%20+%3D%20%22%3Cli%20style%3D%27list-style-image%3A%20url%28%22%20+%20btnImage%20+%20%22%29%27%3E%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%22%3Ca%20href%3D%27%22%20+%20btnURL%20+%20%22%27%3E%22%20+%20btnLabel%20+%20%22%3C/a%3E%3C/li%3E%5Cn%22%3B%0A%7D%0A%0A%0Avar%20htmlData%20%3D%20%22%3C%21DOCTYPE%20html%20PUBLIC%20%5C%22-//W3C//DTD%20XHTML%201.0%20Strict//EN%5C%22%5Cn%5C%0A%20%20%20%20%5C%22http%3A//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd%5C%22%3E%5Cn%5C%0A%3Chtml%20xmlns%3D%5C%22http%3A//www.w3.org/1999/xhtml%5C%22%3E%5Cn%5C%0A%3Chead%3E%5Cn%5C%0A%3Ctitle%3EMy%20Custom%20Buttons%3C/title%3E%5Cn%5C%0A%3Cstyle%20type%3D%5C%22text/css%5C%22%3E%5Cn%5C%0A/*%3C%21%5BCDATA%5B*/%5Cn%5C%0Aul%20%7B%20-moz-column-count%3A%203%3B%20-moz-column-gap%3A%201em%3B%20%7D%5Cn%5C%0Aa%20%7B%20text-decoration%3A%20none%3B%20%7D%5Cn%5C%0Aa%3Ahover%20%7B%20text-decoration%3A%20underline%3B%20%7D%5Cn%5C%0A/*%5D%5D%3E*/%5Cn%5C%0A%3C/style%3E%3C/head%3E%5Cn%5C%0A%3Cbody%3E%5Cn%5C%0A%3Ch1%3EClick%20the%20links%20to%20install%20the%20buttons%3C/h1%3E%5C%0A%3Cul%3E%5Cn%22%3B%0A%0Avar%20htmlSource%20%3D%20htmlData%20+%20btnLink%20+%20%22%3C/ul%3E%5Cn%3C/body%3E%5Cn%3C/html%3E%22%3B%0A%0Avar%20nsIFilePicker%20%3D%20Components.interfaces.nsIFilePicker%3B%0Avar%20fp%20%3D%20Components.classes%5B%22@mozilla.org/filepicker%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20.createInstance%28nsIFilePicker%29%3B%0Afp.init%28window%2C%20%22%22%2C%20fp.modeSave%29%3B%0Afp.defaultString%20%3D%20%22my_custombuttons.html%22%3B%0Afp.appendFilters%28fp.filterHTML%29%3B%0Afp.appendFilters%28fp.filterAll%29%3B%0Aif%28fp.show%28%29%20%3D%3D%20fp.returnCancel%29%20return%3B%0A%0Avar%20stream%20%3D%20Components.classes%5B%27@mozilla.org/network/file-output-stream%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0A%0Astream.init%28fp.file%2C%200x20%7C0x02%7C0x08%2C%200666%2C%200%29%3B%0Astream.write%28htmlSource%2C%20htmlSource.length%29%3B%0Astream.close%28%29%3B%0A%0A%0A%0A%5D%5B Одна проблема у меня при попытке вставить в код строчку: И еще одна кнопка, которая должна оправлять тебя в низ страницы: Выделить код Код:custombutton://Go%20to%20bottom%20of%20the%20page%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAEG0lEQVR4AQEQBO/7Af///wAAAAAAAAAAAAAAAAABAQEKAAAACwAAAAkAAAAGAAAAAAAAAPoAAAD3AAAA9f////YAAAAAAAAAAAAAAAAB////AAAAAAArKysGC/X1EvQOMCsEDRVfAwAGQgEBARsAAAAA////5f79/cv79uiUDPLQ1fULC+7V1dX6AAAAAAH///8AVlZWBg3s7BnS/Shf/f0CgSlCRwA9QDIAKSQbAPr8AADS1eIAxb/QAODKugADA/5/LgPYofMUFOeqqqr6BAAAAABCCgoapQU3YwMG/3x1h3QAIBcUAPDpAADv4/8A/Pn7ABsLGABbW0oA4z8yAKaVk4HaATcFWwrnnQAAAOADK/LyErr7Nzzm5+CTdI56AB8TFADx6QAA9/QAAPz5/QD6+P4A+/f7APfw+wAMDgoAHScsAM/Fvz72FjrG/sCi6AQWKioX6LDgWypIRwAKCggAhoCoAPr39AD/Af8A//z/AP///gD///8A////AAYHCABHVkkAHC0+AOjj1lsWOCrUBBUbGxrz9tc6WEIyAOzm9gBNQSEAZV03AAAAAAAAAAAAAAAAAAAAAAAAAAAAm6PJAOXm8wAtLioAu9nJOhUbGxoCCxMTGPz6+RUvKBsAGRoWAMfa8QDU2egAAAAAAAAAAAAAAAAAAAAAANTZ6AC6x+kAExEQABwbGQD8+vkVCxMTGAIIEBALAAAAAP4AAAD/AQAARUs9AH+RwQDy8vcAAAAAAAAAAADy8vcAfoi7ADk1MQD///8A/Pz/AAAAAAAIEBALAgQICPkICArv0NnkAAIEAAAIDAgAP0k9AHmJugAAAAAAAAAAAHmEugAuNjcABQkHAAACAADh4OQACAgK7wQICPkEBQkJ6x4iLdvBvM82KWYcAPb4AQAbHRcA4uIdAI6WwQAAAAAAABAXABgaEwD7+f4AAQUCANbW1QAXGiPjBQkJ6wIB/PzfcGc+z9m5uQDd5+wACQwAAP8FAQA1Oi0A4wAMAN/6CgAwNSsAAAIBAAQLAgDq7ewA6NjHAHdvSMcB/PzfA4aMjOwWDgQK9f8RFqOXoiAkNTAAFBILAPv+AQAXGRcAGRgUAAEC/wAABgMA5ujsALemnABYV1DBUUIjqgoTE8EEAAAAAPn//79yYTcVBQEBB5dxgDghREgANzsvACEgHAD6BAEA3dbeAM/GzwDkzcIAXlxWyG1gNqv2+/u/BgAAAAH///8AAAAAAAAAABb9/f1L2d3tUpOexinW0s4Z8/LuCgAAAAANDhL2Ki4y521iOtcnIxOuAwMDtQAAAOoAAAAAAf///wAAAAAAAAAAAAAAAAAAAAAz/f39NAMDAykAAAAeAAAAAAAAAOL9/f3XAwMDzAAAAM0AAAAAAAAAAAAAAAAbzVfefBtHvQAAAABJRU5ErkJggg%3D%3D%5D%5Bcontent.scrollTo%280%2Cwindow.innerHeight*2%29%3B%0A%0A%5D%5B У меня она отправлает роно на одно нажатие Page Down и больше не работает. UPD2: Грубо, но заставил ее работать: Выделить код Код:custombutton://Go%20to%20bottom%20of%20the%20page%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAEG0lEQVR4AQEQBO/7Af///wAAAAAAAAAAAAAAAAABAQEKAAAACwAAAAkAAAAGAAAAAAAAAPoAAAD3AAAA9f////YAAAAAAAAAAAAAAAAB////AAAAAAArKysGC/X1EvQOMCsEDRVfAwAGQgEBARsAAAAA////5f79/cv79uiUDPLQ1fULC+7V1dX6AAAAAAH///8AVlZWBg3s7BnS/Shf/f0CgSlCRwA9QDIAKSQbAPr8AADS1eIAxb/QAODKugADA/5/LgPYofMUFOeqqqr6BAAAAABCCgoapQU3YwMG/3x1h3QAIBcUAPDpAADv4/8A/Pn7ABsLGABbW0oA4z8yAKaVk4HaATcFWwrnnQAAAOADK/LyErr7Nzzm5+CTdI56AB8TFADx6QAA9/QAAPz5/QD6+P4A+/f7APfw+wAMDgoAHScsAM/Fvz72FjrG/sCi6AQWKioX6LDgWypIRwAKCggAhoCoAPr39AD/Af8A//z/AP///gD///8A////AAYHCABHVkkAHC0+AOjj1lsWOCrUBBUbGxrz9tc6WEIyAOzm9gBNQSEAZV03AAAAAAAAAAAAAAAAAAAAAAAAAAAAm6PJAOXm8wAtLioAu9nJOhUbGxoCCxMTGPz6+RUvKBsAGRoWAMfa8QDU2egAAAAAAAAAAAAAAAAAAAAAANTZ6AC6x+kAExEQABwbGQD8+vkVCxMTGAIIEBALAAAAAP4AAAD/AQAARUs9AH+RwQDy8vcAAAAAAAAAAADy8vcAfoi7ADk1MQD///8A/Pz/AAAAAAAIEBALAgQICPkICArv0NnkAAIEAAAIDAgAP0k9AHmJugAAAAAAAAAAAHmEugAuNjcABQkHAAACAADh4OQACAgK7wQICPkEBQkJ6x4iLdvBvM82KWYcAPb4AQAbHRcA4uIdAI6WwQAAAAAAABAXABgaEwD7+f4AAQUCANbW1QAXGiPjBQkJ6wIB/PzfcGc+z9m5uQDd5+wACQwAAP8FAQA1Oi0A4wAMAN/6CgAwNSsAAAIBAAQLAgDq7ewA6NjHAHdvSMcB/PzfA4aMjOwWDgQK9f8RFqOXoiAkNTAAFBILAPv+AQAXGRcAGRgUAAEC/wAABgMA5ujsALemnABYV1DBUUIjqgoTE8EEAAAAAPn//79yYTcVBQEBB5dxgDghREgANzsvACEgHAD6BAEA3dbeAM/GzwDkzcIAXlxWyG1gNqv2+/u/BgAAAAH///8AAAAAAAAAABb9/f1L2d3tUpOexinW0s4Z8/LuCgAAAAANDhL2Ki4y521iOtcnIxOuAwMDtQAAAOoAAAAAAf///wAAAAAAAAAAAAAAAAAAAAAz/f39NAMDAykAAAAeAAAAAAAAAOL9/f3XAwMDzAAAAM0AAAAAAAAAAAAAAAAbzVfefBtHvQAAAABJRU5ErkJggg%3D%3D%5D%5Bcontent.scrollTo%280%2Cwindow.innerHeight*1000000%29%3B%0A%0A%5D%5B | ||||||||
Anton > 29-04-2007 17:39:51 | ||||||||
Может быть, нужно заэкранировать (\") кавычки ? | ||||||||
vadi61 > 13-05-2007 20:05:14 | ||||||||
Подскажите, что я не так делаю. FireFox 2.0.0.3 + Windows XP SP2 (и все последующие) Заренее спасибо. | ||||||||
Anton > 14-05-2007 00:02:58 | ||||||||
коды в wiki не рассчитаны на copy-paste : ) Замени вот эти: символы символами одинарной (') или двойной (") кавычек. p.s. wiki-страничку поправил, copy-paste сейчас должен работать корректно. | ||||||||
vadi61 > 14-05-2007 08:45:43 | ||||||||
Спасибо Anton. Сработало. Еще один коротенький вопросик. Где взять коды? MenuManipulator, на который тут ссылались не становится на FF 2.0 - говорит не та версия. Меня сейчас интересует код вызова меню кодировки страницы (KOI8-R, Windows-1251 и т. д.). (Save as... вроде нашел). | ||||||||
Merlyel > 14-05-2007 09:48:56 | ||||||||
vadi61 | ||||||||
Dimanish > 14-05-2007 10:33:24 | ||||||||
Dom Inspector, сырцы firefox, расширений | ||||||||
Anton > 14-05-2007 14:41:18 | ||||||||
Кнопка выбора кодировок есть где-то в этой теме. | ||||||||
vadi61 > 14-05-2007 19:27:15 | ||||||||
OK, поищем | ||||||||
alexmac > 15-05-2007 10:34:27 | ||||||||
А кто-нибудь может создать несколько кнопок следующего характера (все действия выполняются применительно к текущей вкладке по нажатию на соответствующую кнопку): | ||||||||
Mr. JeCk > 13-07-2007 02:47:52 | ||||||||
Не подскажите сайтики, где можно достать различные кнопки? (кроме официального сайта и сайта дарк-демона) | ||||||||
Anton > 13-07-2007 10:27:50 | ||||||||
Mr. JeCk | ||||||||
Dark-Demon > 13-07-2007 19:07:43 | ||||||||
хе-хе... набрёл сейчас на https://addons.mozilla.org/ru/firefox/addon/5066 которое ничем от custombuttons не отличается кроме нескольких незначительных настроек. Ян, естественно, в соавторах не указан... а я ужо было испугался, что зря делал customitems, ведь уже есть custombuttons в квадрате... | ||||||||
Anton > 13-07-2007 19:19:50 | ||||||||
На странице не указан, в install.rdf: Выделить код Код:em:developer="Custom Buttons Forum Development Group members are: Yan: Original Creator, ... em:contributor="Dark-Demon, | ||||||||
Dark-Demon > 13-07-2007 19:43:04 | ||||||||
гм... а мне за что такая честь? ps: проверил несколько ссылок - битые. в том числе и тот форум с кнопками.. Добавлено Птн 13 Июл 2007 19:48:03 : | ||||||||
Anton > 13-07-2007 19:49:38 | ||||||||
не скромничай, решение с оверлеями ты нашёл | ||||||||
Dark-Demon > 13-07-2007 19:55:40 | ||||||||
"идеи не подлежат потенции" | ||||||||
Philip > 31-07-2007 13:11:19 | ||||||||
Очень нужна кнопочка для бекапа Custom Buttons, нашел вот такую: Выделить код Код:custombutton://Backup%20Custom%20Buttons%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAAkVJREFUeJx90UtPE2EUxvF/59KWaaENhYIGSIgRTWPKxrgRooms0L0LvwNfg09h3LBz50Kj0YQYF2q6wcQbRcFekF5oOyntzLzvO/O6Mikk5ezO4vnlOTkxRmZ1dfXh9vb2TjqdNnv9ftQ6rmOYFjPz86SSSbtcLte2trY2gyD49T9jXAA2CoVC1g/E5OnBj0zhaj6zciWf8bqdzISTcorF4srS0tL6aMYaXbLZ7MKfWp3v717xZDFFzpHQOKL+4Q0vmw8wsznS6fTCWCCZTE43mk2sZIJk5SdUv0G/ywQ22jQZekMcx8mPBQzDSIeBT5Rf5AVzFGcz6JjJ177A6w8wlCKRSEyNBQBLKcVEPM5RZ8h+p4ppmphGgripMU0T27ZTY4EoilBKUa9XWZ6zWVtbR0Xw8VOJWivAtuNore1LgaEvmTJbPL6XI576Al6V+Wt7PHPvMpAWWutzlc+9UUpJFIZE1jTdZhvOyiB6uKwQxhykEIRheP7mCw1CtEIwyfO9HDeXc2gdY7/So+u2iKFRSumxgBAiCMMQopBq7YRq6y+WYUFgECExDAMhhH8ZMFBS0e6ecGt9gY37m0jl83b3NYclgZQSIcRgLOC6rqtERHwmIH2nwufhU9riN80bRzgHj2jXBgyHw95YIAiCTqgVlpfj7EAzd91hIZ4l1blNeSDxvAG+7zcua1Cz4xZC2Jy8dzAOZ9EajitNXPeUSEd4nlcZC5RKpR0p5WIsFssopcIw1GgdEUUaw8Dyfb/ZaDR2RzP/ACJMLvfI0dt2AAAAAElFTkSuQmCC%5D%5B%0A//%20Sun%20Jan%2028%202007%204%3A09%3A01%20PM%20GMT-0800%20%28Pacific%20Standard%20Time%29%20cblover%20http%3A//minidata.googlepages.com/%0A%0A//%20This%20button%20was%20given%20birth%20by%20deepakjoshi04%2C%20Custom%20Buttons%20Forum%20since%2014%20Aug%202006%0A//%20http%3A//custombuttons.phpbbnow.com/viewtopic.php%3Ft%3D199%26postdays%3D0%26postorder%3Dasc%26start%3D0%0A%0A//%20The%20purpose%20of%20this%20button%20is%20to%20create%20a%20backup%20HTML%20file%20of%20the%20Customs%20Buttons.%0A%0A//%20Creates%20an%20HTML%20file%20with%20no%20errors%20or%20warnings%20from%20Firefox%20Extension%20Html%20Validator%200.7.9.5%0A//%20as%20long%20as%20one%20uses%20no%20special%20characters%2C%20such%20as%20%26%20or%20%27%2C%20in%20the%20button%20name%2C%20uses%20an%20image%2C%0A//%20and%20does%20not%20use%20an%20imagelike%20the%20image%20for%20Yan%27s%20Clock%20button%3B%20even%20in%20these%20cases%20one%20only%0A//%20gets%20warnings%2C%20not%20errors.%0A%0A//%20See%20https%3A//addons.mozilla.org/firefox/249/%20or%20http%3A//users.skynet.be/mgueury/mozilla/%0A//%20and%20read%20the%20entire%20thread%20at%20http%3A//custombuttons.phpbbnow.com/viewtopic.php%3Ft%3D199%0A%0A//%20The%20file%20created%20will%20have%20a%20unique%20name.%0A%0A//%20This%20button%20and%20the%20Open%20File...%20button%20--%20BrowserOpenFileWindow%28%29%3B%20--%20will%20enable%20one%20to%20load%20the%0A//%20HTML%20file%20into%20Firefox%20for%20a%20printed%20output.%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20Get%20the%20Date%20%26%20Time%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%0A/*%20Constants%20%20%20%20*/%20var%20c%3D%22%3A%22%3Bb%3D%22%20%22%3B%0A/*%20Date%20%20%20%20%20%20%20%20%20*/%20var%20t%3Dnew%20Date%28%29%3B%0A/*%20Year%20%20%20%20%20%20%20%20%20*/%20var%20y%3D1900+t.getYear%28%29%3B%0A/*%20Minutes%20%20%20%20%20%20*/%20var%20min%3Dt.getMinutes%28%29%3B%20if%20%28min%3C10%29%7Bmin%3D%220%22+min%7D%3B%0A/*%20Seconds%20%20%20%20%20%20*/%20var%20s%3Dt.getSeconds%28%29%3B%20if%20%28s%3C10%29%7Bs%3D%220%22+s%7D%3B%0A/*%20Time%2012%20Hour%20*/%20var%20h%3Dt.getHours%28%29%3B%20var%20ap%3D%22AM%22%3B%20if%20%28h%3E%3D12%29%20ap%3D%22PM%22%3B%20if%20%28h%3E12%29%20h%3Dh-12%3B%20if%20%28h%3D%3D0%29%20h%3D12%3B%20h%3Dh+c+min+c+s+b+ap%3B%0A/*%20Day%20of%20Week%20%20*/%20var%20dw%3Dt.getDay%28%29%3Bswitch%28dw%29%7Bcase%200%3A%20dw%3D%22Sun%22%3Bbreak%3Bcase%201%3A%20dw%3D%22Mon%22%3Bbreak%3Bcase%202%3A%20dw%3D%22Tue%22%3Bbreak%3Bcase%203%3A%20dw%3D%22Wed%22%3Bbreak%3Bcase%204%3A%20dw%3D%22Thu%22%3Bbreak%3Bcase%205%3A%20dw%3D%22Fri%22%3Bbreak%3Bdefault%3A%20dw%3D%22Sat%22%3B%7D%0A/*%20Month%20%20%20%20%20%20%20%20*/%20var%20m%3Dt.getMonth%28%29%3Bswitch%28m%29%7Bcase%200%3A%20m%3D%22Jan%22%3Bbreak%3Bcase%201%3A%20m%3D%22Feb%22%3Bbreak%3Bcase%202%3A%20m%3D%22Mar%22%3Bbreak%3Bcase%203%3A%20m%3D%22Apr%22%3Bbreak%3Bcase%204%3A%20m%3D%22May%22%3Bbreak%3Bcase%205%3A%20m%3D%22Jun%22%3Bbreak%3Bcase%206%3A%20m%3D%22Jul%22%3Bbreak%3Bcase%207%3A%20m%3D%22Aug%22%3Bbreak%3Bcase%208%3A%20m%3D%22Sep%22%3Bbreak%3Bcase%209%3A%20m%3D%22Oct%22%3Bbreak%3Bcase%2010%3A%20m%3D%22Nov%22%3Bbreak%3Bdefault%3A%20m%3D%22Dec%22%3B%7D%0A/*%20Day%20of%20Month%20*/%20var%20d%3Dt.getDate%28%29%3B%0A/*%20Time%20Zone%20%20%20%20*/%20var%20tz%3DString%28t%29.substring%2825%29%3B%0A/*%20Output%20%20%20%20%20%20%20*/%20var%20p%3Ddw+b+m+b+d+b+y+b+h+b+tz%3B%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20End%20of%20Get%20the%20Date%20%26%20Time%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%0Avar%20dataURL%3D%22%5Cn%3C%21DOCTYPE%20html%20PUBLIC%20%27-//W3C//DTD%20XHTML%201.0%20Transitional//EN%27%22%3B%0A%0AdataURL%3DdataURL+%22%27http%3A//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%27%3E%5Cn%3Chtml%20xmlns%3D%27http%3A//www.w3.org/1999/xhtml%27%3E%22%3B%0A%0AdataURL%3DdataURL+%22%5Cn%3Chead%3E%3Clink%20rel%3D%27shortcut%20icon%27%20href%3D%27favicon.ico%27%20/%3E%22%3B%0A//D6D6D6%20gray%20background%0AdataURL%3DdataURL+%22%3Ctitle%3EMy%20Custom%20Buttons%3C/title%3E%3C/head%3E%5Cn%3Cbody%20style%3D%27background-color%3A%20%23E1E5C4%27%3E%5Cn%3Ccenter%3E%3Ch2%3EMy%20Custom%20Buttons%3C/h2%3E%3Cstrong%3E%22+p+%22%3C/strong%3E%3C/center%3E%5Cn%3Col%3E%5Cn%22%3B%0A%0Avar%20NumOfButtons%3B%0Avar%20buttons%3DgetButtons%28%29%3B%0A%0AdataURL+%3Dbuttons.sort%28%29+%22%5Cn%5Cn%3C/ol%3E%5Cn%3Ccenter%3E%3Ch1%3E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%3C/h1%3E%3C/center%3E%3C/body%3E%5Cn%3C/html%3E%5Cn%22%3B%0AdataURL%3DdataURL.replace%28/%3E%2C%3C/g%2C%27%3E%3C%27%29%3B%0A%0AwriteFile%28dataURL%29%3B%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Afunction%20getButtons%28%29%0A%20%20%7B%0A%20%20var%20buttons%3Dnew%20Array%3B%0A%20%20var%20i%3D0%3B%0A%20%20for%20%28var%20j%3D0%3Bj%3Ccustombuttons.gToolbox.palette.childNodes.length%3Bj++%29%0A%20%20%20%20%7B%0A%20%20%20%20var%20but%3Dcustombuttons.gToolbox.palette.childNodes%5Bj%5D%3B%0A%20%20%20%20if%20%28but.getAttribute%28%27id%27%29.indexOf%28%27custombuttons-button%27%29%21%3D-1%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20var%20num%3Dcustombuttons.getNumber%28but.getAttribute%28%27id%27%29%29%3B%0A%20%20%20%20%20%20var%20but_code%3DgetHyperlink%28num%29%3B%0A%20%20%20%20%20%20if%28but_code.length%3E2%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20buttons%5Bi++%5D%3D%22%3Cli%3E%22+but_code+%22%3C/li%3E%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20NumOfButtons%3Di%3B%0A%20%20%20%20return%20buttons%3B%0A%20%20%7D%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Afunction%20getHyperlink%28num%29%0A%20%20%7B%0A%20%20var%20values%20%3D%20custombuttons.getButtonParameters2%28num%29%3B%0A%20%20var%20altext%20%3D%20values.name%3B%0A%20%20var%20uri%3D%27custombutton%3A//%27+escape%28values.name+%27%5D%27+%27%5B%27+values.image+%27%5D%27+%27%5B%27+values.code+%27%5D%27+%27%5B%27+values.initCode%29%3B%0A%20%20var%20link%20%3D%20%22%5Cn%5Cn%3Ca%20href%3D%27%22%20+%20uri%20+%20%22%27%3E%5Cn%3Cimg%20alt%3D%27%22%20+%20altext%20+%20%22%27%20src%3D%5C%22%22%20+%20unescape%28values.image%29%20+%0A%20%20%20%20%22%5C%22%20border%3D%270%27%20height%3D%2716%27%20/%3E%5Cn%22%20+%20unescape%28values.name%29%20+%20%22%3C/a%3E%22%3B%0A%20%20return%20link%3B%0A%20%20%7D%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Afunction%20writeFile%28str%29%0A%20%20%7B%0A%20%20var%20nsIFilePicker%20%3D%20Components.interfaces.nsIFilePicker%3B%0A%20%20var%20fp%20%3D%20Components.classes%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28nsIFilePicker%29%3B%0A%20%20fp.init%28window%2C%20%22Save%20CB%20backup%20as%20%22%2C%20nsIFilePicker.modeSave%29%3B%0A%20%20/*%20The%20file%20name%20will%20be%20unique%20given%20MS%27%20time-stamp%20and%20will%20also%20have%20the%20number%20of%20buttons%20indicated%20*/%0A%20%20fp.defaultString%20%3D%20%22BackupCustomButtons%20%22+new%20Date%28%29.getTime%28%29+%22%20%28%22+NumOfButtons+%22%29.html%22%3B%0A%20%20fp.appendFilters%28fp.filterHTML%29%3B%0A%20%20fp.appendFilters%28fp.filterAll%29%3B%0A%20%20//%20other%20filters%0A%20%20var%20res%3Dfp.show%28%29%3B%0A%20%20if%20%28res%20%3D%3D%20nsIFilePicker.returnOK%20%7C%7C%20res%3D%3DnsIFilePicker.returnReplace%29%0A%20%20%20%20%7B%0A%20%20%20%20var%20outputStream%20%3D%20Components.classes%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D.%0A%20%20%20%20%20%20createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0A%20%20%20%20outputStream.init%28%20fp.file%2C%200x04%20%7C%200x08%2C777%2C%200%20%29%3B%0A%20%20%20%20var%20result%20%3D%20outputStream.write%28%20str%2C%20str.length%20%29%3B%0A%20%20%20%20outputStream.close%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%5D%5B но она коверкает кириллицу в названиях кнопок. | ||||||||
Anton > 31-07-2007 17:05:46 | ||||||||
Philip Выделить код Код:custombutton://Backup%20Custom%20Buttons%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAAkVJREFUeJx90UtPE2EUxvF/59KWaaENhYIGSIgRTWPKxrgRooms0L0LvwNfg09h3LBz50Kj0YQYF2q6wcQbRcFekF5oOyntzLzvO/O6Mikk5ezO4vnlOTkxRmZ1dfXh9vb2TjqdNnv9ftQ6rmOYFjPz86SSSbtcLte2trY2gyD49T9jXAA2CoVC1g/E5OnBj0zhaj6zciWf8bqdzISTcorF4srS0tL6aMYaXbLZ7MKfWp3v717xZDFFzpHQOKL+4Q0vmw8wsznS6fTCWCCZTE43mk2sZIJk5SdUv0G/ywQ22jQZekMcx8mPBQzDSIeBT5Rf5AVzFGcz6JjJ177A6w8wlCKRSEyNBQBLKcVEPM5RZ8h+p4ppmphGgripMU0T27ZTY4EoilBKUa9XWZ6zWVtbR0Xw8VOJWivAtuNore1LgaEvmTJbPL6XI576Al6V+Wt7PHPvMpAWWutzlc+9UUpJFIZE1jTdZhvOyiB6uKwQxhykEIRheP7mCw1CtEIwyfO9HDeXc2gdY7/So+u2iKFRSumxgBAiCMMQopBq7YRq6y+WYUFgECExDAMhhH8ZMFBS0e6ecGt9gY37m0jl83b3NYclgZQSIcRgLOC6rqtERHwmIH2nwufhU9riN80bRzgHj2jXBgyHw95YIAiCTqgVlpfj7EAzd91hIZ4l1blNeSDxvAG+7zcua1Cz4xZC2Jy8dzAOZ9EajitNXPeUSEd4nlcZC5RKpR0p5WIsFssopcIw1GgdEUUaw8Dyfb/ZaDR2RzP/ACJMLvfI0dt2AAAAAElFTkSuQmCC%5D%5B%0A//%20Sun%20Jan%2028%202007%204%3A09%3A01%20PM%20GMT-0800%20%28Pacific%20Standard%20Time%29%20cblover%20http%3A//minidata.googlepages.com/%0A%0A//%20This%20button%20was%20given%20birth%20by%20deepakjoshi04%2C%20Custom%20Buttons%20Forum%20since%2014%20Aug%202006%0A//%20http%3A//custombuttons.phpbbnow.com/viewtopic.php%3Ft%3D199%26postdays%3D0%26postorder%3Dasc%26start%3D0%0A%0A//%20The%20purpose%20of%20this%20button%20is%20to%20create%20a%20backup%20HTML%20file%20of%20the%20Customs%20Buttons.%0A%0A//%20Creates%20an%20HTML%20file%20with%20no%20errors%20or%20warnings%20from%20Firefox%20Extension%20Html%20Validator%200.7.9.5%0A//%20as%20long%20as%20one%20uses%20no%20special%20characters%2C%20such%20as%20%26%20or%20%27%2C%20in%20the%20button%20name%2C%20uses%20an%20image%2C%0A//%20and%20does%20not%20use%20an%20imagelike%20the%20image%20for%20Yan%27s%20Clock%20button%3B%20even%20in%20these%20cases%20one%20only%0A//%20gets%20warnings%2C%20not%20errors.%0A%0A//%20See%20https%3A//addons.mozilla.org/firefox/249/%20or%20http%3A//users.skynet.be/mgueury/mozilla/%0A//%20and%20read%20the%20entire%20thread%20at%20http%3A//custombuttons.phpbbnow.com/viewtopic.php%3Ft%3D199%0A%0A//%20The%20file%20created%20will%20have%20a%20unique%20name.%0A%0A//%20This%20button%20and%20the%20Open%20File...%20button%20--%20BrowserOpenFileWindow%28%29%3B%20--%20will%20enable%20one%20to%20load%20the%0A//%20HTML%20file%20into%20Firefox%20for%20a%20printed%20output.%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20Get%20the%20Date%20%26%20Time%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%0A/*%20Constants%20%20%20%20*/%20var%20c%3D%22%3A%22%3Bb%3D%22%20%22%3B%0A/*%20Date%20%20%20%20%20%20%20%20%20*/%20var%20t%3Dnew%20Date%28%29%3B%0A/*%20Year%20%20%20%20%20%20%20%20%20*/%20var%20y%3D1900+t.getYear%28%29%3B%0A/*%20Minutes%20%20%20%20%20%20*/%20var%20min%3Dt.getMinutes%28%29%3B%20if%20%28min%3C10%29%7Bmin%3D%220%22+min%7D%3B%0A/*%20Seconds%20%20%20%20%20%20*/%20var%20s%3Dt.getSeconds%28%29%3B%20if%20%28s%3C10%29%7Bs%3D%220%22+s%7D%3B%0A/*%20Time%2012%20Hour%20*/%20var%20h%3Dt.getHours%28%29%3B%20var%20ap%3D%22AM%22%3B%20if%20%28h%3E%3D12%29%20ap%3D%22PM%22%3B%20if%20%28h%3E12%29%20h%3Dh-12%3B%20if%20%28h%3D%3D0%29%20h%3D12%3B%20h%3Dh+c+min+c+s+b+ap%3B%0A/*%20Day%20of%20Week%20%20*/%20var%20dw%3Dt.getDay%28%29%3Bswitch%28dw%29%7Bcase%200%3A%20dw%3D%22Sun%22%3Bbreak%3Bcase%201%3A%20dw%3D%22Mon%22%3Bbreak%3Bcase%202%3A%20dw%3D%22Tue%22%3Bbreak%3Bcase%203%3A%20dw%3D%22Wed%22%3Bbreak%3Bcase%204%3A%20dw%3D%22Thu%22%3Bbreak%3Bcase%205%3A%20dw%3D%22Fri%22%3Bbreak%3Bdefault%3A%20dw%3D%22Sat%22%3B%7D%0A/*%20Month%20%20%20%20%20%20%20%20*/%20var%20m%3Dt.getMonth%28%29%3Bswitch%28m%29%7Bcase%200%3A%20m%3D%22Jan%22%3Bbreak%3Bcase%201%3A%20m%3D%22Feb%22%3Bbreak%3Bcase%202%3A%20m%3D%22Mar%22%3Bbreak%3Bcase%203%3A%20m%3D%22Apr%22%3Bbreak%3Bcase%204%3A%20m%3D%22May%22%3Bbreak%3Bcase%205%3A%20m%3D%22Jun%22%3Bbreak%3Bcase%206%3A%20m%3D%22Jul%22%3Bbreak%3Bcase%207%3A%20m%3D%22Aug%22%3Bbreak%3Bcase%208%3A%20m%3D%22Sep%22%3Bbreak%3Bcase%209%3A%20m%3D%22Oct%22%3Bbreak%3Bcase%2010%3A%20m%3D%22Nov%22%3Bbreak%3Bdefault%3A%20m%3D%22Dec%22%3B%7D%0A/*%20Day%20of%20Month%20*/%20var%20d%3Dt.getDate%28%29%3B%0A/*%20Time%20Zone%20%20%20%20*/%20var%20tz%3DString%28t%29.substring%2825%29%3B%0A/*%20Output%20%20%20%20%20%20%20*/%20var%20p%3Ddw+b+m+b+d+b+y+b+h+b+tz%3B%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20End%20of%20Get%20the%20Date%20%26%20Time%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%0Avar%20dataURL%3D%22%5Cn%3C%21DOCTYPE%20html%20PUBLIC%20%27-//W3C//DTD%20XHTML%201.0%20Transitional//EN%27%22%3B%0A%0AdataURL%3DdataURL+%22%27http%3A//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%27%3E%5Cn%3Chtml%20xmlns%3D%27http%3A//www.w3.org/1999/xhtml%27%3E%22%3B%0A%0AdataURL%3DdataURL+%22%5Cn%3Chead%3E%3Clink%20rel%3D%27shortcut%20icon%27%20href%3D%27favicon.ico%27%20/%3E%5Cn%3Cmeta%20http-equiv%3D%5C%22content-type%5C%22%20content%3D%5C%22text/html%3B%20charset%3DUTF-8%5C%22%20/%3E%22%3B%0A//D6D6D6%20gray%20background%0AdataURL%3DdataURL+%22%3Ctitle%3EMy%20Custom%20Buttons%3C/title%3E%3C/head%3E%5Cn%3Cbody%20style%3D%27background-color%3A%20%23E1E5C4%27%3E%5Cn%3Ccenter%3E%3Ch2%3EMy%20Custom%20Buttons%3C/h2%3E%3Cstrong%3E%22+p+%22%3C/strong%3E%3C/center%3E%5Cn%3Col%3E%5Cn%22%3B%0A%0Avar%20NumOfButtons%3B%0Avar%20buttons%3DgetButtons%28%29%3B%0A%0AdataURL+%3Dbuttons.sort%28%29+%22%5Cn%5Cn%3C/ol%3E%5Cn%3Ccenter%3E%3Ch1%3E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%3C/h1%3E%3C/center%3E%3C/body%3E%5Cn%3C/html%3E%5Cn%22%3B%0AdataURL%3DdataURL.replace%28/%3E%2C%3C/g%2C%27%3E%3C%27%29%3B%0A%0AwriteFile%28dataURL%29%3B%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Afunction%20getButtons%28%29%0A%20%20%7B%0A%20%20var%20buttons%3Dnew%20Array%3B%0A%20%20var%20i%3D0%3B%0A%20%20for%20%28var%20j%3D0%3Bj%3Ccustombuttons.gToolbox.palette.childNodes.length%3Bj++%29%0A%20%20%20%20%7B%0A%20%20%20%20var%20but%3Dcustombuttons.gToolbox.palette.childNodes%5Bj%5D%3B%0A%20%20%20%20if%20%28but.getAttribute%28%27id%27%29.indexOf%28%27custombuttons-button%27%29%21%3D-1%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20var%20num%3Dcustombuttons.getNumber%28but.getAttribute%28%27id%27%29%29%3B%0A%20%20%20%20%20%20var%20but_code%3DgetHyperlink%28num%29%3B%0A%20%20%20%20%20%20if%28but_code.length%3E2%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20buttons%5Bi++%5D%3D%22%3Cli%3E%22+but_code+%22%3C/li%3E%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20NumOfButtons%3Di%3B%0A%20%20%20%20return%20buttons%3B%0A%20%20%7D%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Afunction%20getHyperlink%28num%29%0A%20%20%7B%0A%20%20var%20values%20%3D%20custombuttons.getButtonParameters2%28num%29%3B%0A%20%20var%20altext%20%3D%20values.name%3B%0A%20%20var%20uri%3D%27custombutton%3A//%27+escape%28values.name+%27%5D%27+%27%5B%27+values.image+%27%5D%27+%27%5B%27+values.code+%27%5D%27+%27%5B%27+values.initCode%29%3B%0A%20%20var%20link%20%3D%20%22%5Cn%5Cn%3Ca%20href%3D%27%22%20+%20uri%20+%20%22%27%3E%5Cn%3Cimg%20alt%3D%27%22%20+%20altext%20+%20%22%27%20src%3D%5C%22%22%20+%20unescape%28values.image%29%20+%0A%20%20%20%20%22%5C%22%20border%3D%270%27%20height%3D%2716%27%20/%3E%5Cn%22%20+%20unescape%28values.name%29%20+%20%22%3C/a%3E%22%3B%0A%20%20return%20link%3B%0A%20%20%7D%0A%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Afunction%20writeFile%28str%29%0A%20%20%7B%0A%20%20var%20nsIFilePicker%20%3D%20Components.interfaces.nsIFilePicker%3B%0A%20%20var%20fp%20%3D%20Components.classes%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28nsIFilePicker%29%3B%0A%20%20fp.init%28window%2C%20%22Save%20CB%20backup%20as%20%22%2C%20nsIFilePicker.modeSave%29%3B%0A%20%20/*%20The%20file%20name%20will%20be%20unique%20given%20MS%27%20time-stamp%20and%20will%20also%20have%20the%20number%20of%20buttons%20indicated%20*/%0A%20%20fp.defaultString%20%3D%20%22BackupCustomButtons%20%22+new%20Date%28%29.getTime%28%29+%22%20%28%22+NumOfButtons+%22%29.html%22%3B%0A%20%20fp.appendFilters%28fp.filterHTML%29%3B%0A%20%20fp.appendFilters%28fp.filterAll%29%3B%0A%20%20//%20other%20filters%0A%20%20var%20res%3Dfp.show%28%29%3B%0A%20%20if%20%28res%20%3D%3D%20nsIFilePicker.returnOK%20%7C%7C%20res%3D%3DnsIFilePicker.returnReplace%29%0A%20%20%20%20%7B%0A%20%20%20%20var%20outputStream%20%3D%20Components.classes%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D.%0A%20%20%20%20%20%20createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0Avar%20suc%20%3D%20Components.%20classes%20%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.createInstance%28Components.%20interfaces.%20nsIScriptableUnicodeConverter%29%3B%0Asuc.charset%3D%22UTF-8%22%3B%0Astr%20%3D%20suc.%20ConvertFromUnicode%20%28str%29%3B%0A%20%20%20%20outputStream.init%28%20fp.file%2C%200x04%20%7C%200x08%2C777%2C%200%20%29%3B%0A%20%20%20%20var%20result%20%3D%20outputStream.write%28%20str%2C%20str.length%20%29%3B%0A%20%20%20%20outputStream.close%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%5D%5B ? | ||||||||
Philip > 31-07-2007 19:36:47 | ||||||||
Anton | ||||||||
Yan > 10-08-2007 19:54:32 | ||||||||
Меня-то указали, а вот Anton'а по каким-то причинам убрали, хотя в install.rdf из версии, на которой они базировались, было: Выделить код Код:<em:creator>Yan</em:creator> <em:developer>Anton</em:developer> <em:developer>Dark-Demon</em:developer> ... | ||||||||
Xaber > 10-08-2007 22:28:55 | ||||||||
Anton пишет
А можно сделать, что бы окно добавления закладки не появлялось, а она скажем автоматом добавлялась в "Unsorted"? | ||||||||
Anton > 11-08-2007 15:03:51 | ||||||||
Xaber Выделить код Код:custombutton://%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%5D%5B%5D%5Bvar%20docshell%20%3D%20getBrowser%20%28%29.%20webNavigation%3B%0Avar%20doc%20%3D%20docshell.%20document%3B%0Avar%20url%20%3D%20getBrowser%20%28%29.%20currentURI.%20spec%3B%0Avar%20title%2C%20charset%20%3D%20null%3B%0Avar%20description%3B%0Atry%0A%7B%0A%09title%20%3D%20doc.%20title%20%7C%7C%20url%3B%0A%09charset%20%3D%20doc.%20characterSet%3B%0A%09description%20%3D%20BookmarksUtils.%20getDescriptionFromDocument%20%28doc%29%3B%0A%7D%0Acatch%20%28e%29%0A%7B%0A%20%20%20%20title%20%3D%20url%3B%0A%7D%0Avar%20bmroot%20%3D%20RDF.%20GetResource%20%28%22NC%3ABookmarksRoot%22%29%3B%0Avar%20res%20%3D%20BMDS.%20createBookmark%20%28title%2C%20url%2C%20%22%22%2C%20description%2C%20charset%2C%20null%29%3B%0Avar%20sel%20%3D%20BookmarksUtils.%20getSelectionFromResource%20%28res%29%3B%0Avar%20target%20%3D%20BookmarksUtils.%20getTargetFromFolder%20%28bmroot%29%3B%0ABookmarksUtils.%20insertAndCheckSelection%20%28%22newbookmark%22%2C%20sel%2C%20target%29%3B%0Avar%20rds%20%3D%20BMDS.%20QueryInterface%20%28Components.%20interfaces.%20nsIRDFRemoteDataSource%29%3B%0Ards.%20Flush%20%28%29%3B%5D%5Bthis.%20mouseover%20%3D%20function%20%28event%29%0A%7B%0A%09this.%20oldimage%20%3D%20this.%20image%3B%0A%09this.%20image%20%3D%20%22file%3A///H%3A/redicon.png%22%3B%0A%7D%0Athis.%20mouseout%20%3D%20function%20%28event%29%0A%7B%0A%09this.%20image%20%3D%20this.%20oldimage%3B%0A%7D%0Athis.%20setAttribute%20%28%22onmouseover%22%2C%20%22this.%20mouseover%28%29%22%29%3B%0Athis.%20setAttribute%20%28%22onmouseout%22%2C%20%22this.%20mouseout%28%29%22%29%3B | ||||||||
and23 > 13-08-2007 20:46:50 | ||||||||
Подскажите, пожалуйста, как задействовать сабж для тулбаров в окнах чтения, составления письма в Tb? | ||||||||
Dmitriy777 > 14-08-2007 00:10:00 | ||||||||
А как создать новую тему? | ||||||||
Xaber > 14-08-2007 05:34:19 | ||||||||
Anton пишет
Делал копипастом, не пашет | ||||||||
Anton > 14-08-2007 08:40:15 | ||||||||
Xaber пишет
Нет, не надо - у меня работает. , а в конце последней - - что там выдаст алерт ? | ||||||||
Xaber > 16-08-2007 02:41:29 | ||||||||
Мб я вас не правильно понял? Выделить код Код:custombutton://%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%5D%5B%5D%5Bvar%20docshell%20%3D%20getBrowser%20%28%29.%20webNavigation%3B%0Avar%20doc%20%3D%20docshell.%20document%3B%0Avar%20url%20%3D%20getBrowser%20%28%29.%20currentURI.%20spec%3B%0Avar%20title%2C%20charset%20%3D%20null%3B%0Avar%20description%3B%0Atry%0A%7B%0A%09title%20%3D%20doc.%20title%20%7C%7C%20url%3B%0A%09charset%20%3D%20doc.%20characterSet%3B%0A%09description%20%3D%20BookmarksUtils.%20getDescriptionFromDocument%20%28doc%29%3B%0A%7D%0Acatch%20%28e%29%0A%7B%0A%20%20%20%20title%20%3D%20url%3B%0A%7D%0Avar%20bmroot%20%3D%20RDF.%20GetResource%20%28%22NC%3ABookmarksRoot%22%29%3B%0Avar%20res%20%3D%20BMDS.%20createBookmark%20%28title%2C%20url%2C%20%22%22%2C%20description%2C%20charset%2C%20null%29%3B%0Avar%20sel%20%3D%20BookmarksUtils.%20getSelectionFromResource%20%28res%29%3B%0Avar%20target%20%3D%20BookmarksUtils.%20getTargetFromFolder%20%28bmroot%29%3B%0ABookmarksUtils.%20insertAndCheckSelection%20%28%22newbookmark%22%2C%20sel%2C%20target%29%3B%0Avar%20rds%20%3D%20BMDS.%20QueryInterface%20%28Components.%20interfaces.%20nsIRDFRemoteDataSource%29%3B%0Ards.%20Flush%20%28%29%3B%5D%5Bthis.%20mouseover%20%3D%20function%20%28event%29%0A%7B%0A%09this.%20oldimage%20%3D%20this.%20image%3B%0A%09this.%20image%20%3D%20%22file%3A///H%3A/redicon.png%22%3B%0A%7D%0Athis.%20mouseout%20%3D%20function%20%28event%29%0A%7B%0A%09this.%20image%20%3D%20this.%20oldimage%3B%0A%7D%0Athis.%20setAttribute%20%28%22onmouseover%22%2C%20%22this.%20mouseover%28%29%22%29%3B%0Athis.%20setAttribute%20%28%22onmouseout%22%2C%20%22this.%20mouseout%28%29%22%29%3B Я тоже писал в Код. Выделить код Код:try{ custombutton://%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%5D%5B%5D%5Bvar%20docshell%20%3D%20getBrowser%20%28%29.%20webNavigation%3B%0Avar%20doc%20%3D%20docshell.%20document%3B%0Avar%20url%20%3D%20getBrowser%20%28%29.%20currentURI.%20spec%3B%0Avar%20title%2C%20charset%20%3D%20null%3B%0Avar%20description%3B%0Atry%0A%7B%0A%09title%20%3D%20doc.%20title%20%7C%7C%20url%3B%0A%09charset%20%3D%20doc.%20characterSet%3B%0A%09description%20%3D%20BookmarksUtils.%20getDescriptionFromDocument%20%28doc%29%3B%0A%7D%0Acatch%20%28e%29%0A%7B%0A%20%20%20%20title%20%3D%20url%3B%0A%7D%0Avar%20bmroot%20%3D%20RDF.%20GetResource%20%28%22NC%3ABookmarksRoot%22%29%3B%0Avar%20res%20%3D%20BMDS.%20createBookmark%20%28title%2C%20url%2C%20%22%22%2C%20description%2C%20charset%2C%20null%29%3B%0Avar%20sel%20%3D%20BookmarksUtils.%20getSelectionFromResource%20%28res%29%3B%0Avar%20target%20%3D%20BookmarksUtils.%20getTargetFromFolder%20%28bmroot%29%3B%0ABookmarksUtils.%20insertAndCheckSelection%20%28%22newbookmark%22%2C%20sel%2C%20target%29%3B%0Avar%20rds%20%3D%20BMDS.%20QueryInterface%20%28Components.%20interfaces.%20nsIRDFRemoteDataSource%29%3B%0Ards.%20Flush%20%28%29%3B%5D%5Bthis.%20mouseover%20%3D%20function%20%28event%29%0A%7B%0A%09this.%20oldimage%20%3D%20this.%20image%3B%0A%09this.%20image%20%3D%20%22file%3A///H%3A/redicon.png%22%3B%0A%7D%0Athis.%20mouseout%20%3D%20function%20%28event%29%0A%7B%0A%09this.%20image%20%3D%20this.%20oldimage%3B%0A%7D%0Athis.%20setAttribute%20%28%22onmouseover%22%2C%20%22this.%20mouseover%28%29%22%29%3B%0Athis.%20setAttribute%20%28%22onmouseout%22%2C%20%22this.%20mouseout%28%29%22%29%3B }catch(e){alert(e);} Алерта нету... | ||||||||
Anton > 16-08-2007 08:40:04 | ||||||||
Xaber пишет
Да, похоже что неправильно. Строки такого вида надо помещать не в секцию "Код" кнопок, а в адресную строку браузера. | ||||||||
Xaber > 16-08-2007 09:44:16 | ||||||||
Спасибо, заработало, но: | ||||||||
Anton > 16-08-2007 13:50:32 | ||||||||
Xaber пишет
Xaber пишет
А я так понял, что "Unsorted" и есть корень. Так что, не ко мне претензия.
Надо убрать код в секции "Инициализация". | ||||||||
globik > 21-08-2007 23:29:19 | ||||||||
привет, может кто знает, почему этот код не робит: Выделить код Код:var path='c:\\windows\\notepad.exe'; var arguments=['c:\\aa.txt']; 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); Вставляю его в code и по нажатию на кнопку ни чего не происходит, однако в initalization он срабатывает | ||||||||
Anton > 22-08-2007 14:02:16 | ||||||||
globik пишет
Переименование arguments в что-нибудь другое решит проблему. | ||||||||
globik > 22-08-2007 17:20:19 | ||||||||
благодарю ) Однако я нашел еще более изощренное решение : Выделить код Код:function yo() { var path='c:\\windows\\notepad.exe'; var arguments=['c:\\aa.txt']; 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); } yo(); | ||||||||
Al_H > 22-08-2007 18:33:49 | ||||||||
arguments - некорректно, потому что это зарезервированное слово. | ||||||||
Killy > 04-09-2007 17:50:37 | ||||||||
Обновил код кнопки "Fit to width": Выделить код Код:custombutton://Fit%20to%20Page%20Width%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAFVBMVEX///8AzP8AAAAAzP8Amf8AAMwAAACWs84cAAAAB3RSTlMAd3f/////1grLHQAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA1LzI4LzA2GvIWfQAAAEpJREFUeJxjYMAErKGhgRCGi0uIAJjhbBxiCGO4AIUUgIzQ0AAmhiQgw9gkQI0hTRXECEpDiChAGExgXUAGxEAXlwCIFUDtWOwGAHj3ENTzyS3QAAAAAElFTkSuQmCC%5D%5B%5D%5Bvar%20is_active%3D0%3B%0Avar%20rule%3D0%3B%0Athis.checked%3Dfalse%3B%0Athis.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20Off%22%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%0A%20if%20%28event.button%20%3D%3D%200%29%20%7B%0A%0A%20%20if%20%28is_active%20%3D%3D%200%29%20%7B%0A%20%20%20%20var%20s%3Dcontent.document.styleSheets%5B0%5D%3B%0A%20%20%20%20rule%3Ds.insertRule%28%27div%2Ctable%2Ctbody%2Ctr%2Ctd%2Cp%2Col%2Cul%2Ch1%2Ch2%2Ch3%2Chr%20%7Bmax-width%3A99%25%21important%3B%7D%27%2C1%29%3B%0A%0A%20%20%20%20var%20i%3Dcontent.document.images%3B%0A%20%20%20%20for%20%28var%20j%3D0%3B%20j%3Ci.length%3B%20j++%29%20%7B%0A%20%20%20%20%20%20var%20k%3Dcontent.window.innerWidth/i%5Bj%5D.width*.95%3B%0A%20%20%20%20%20%20if%20%28k%3C1%29%20%7Bi%5Bj%5D.width*%3Dk%3B%20i%5Bj%5D.height*%3Dk%3B%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20is_active%3D1%3B%0A%0A%20%20%20%20this.checked%3Dtrue%3B%0A%20%20%20%20this.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20On%22%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20s%3Dcontent.document.styleSheets%5B0%5D%3B%0A%20%20%20%20if%20%28rule%20%21%3D%200%20%29%20%7Bs.deleteRule%28rule%29%3B%20rule%3D0%3B%7D%0A%0A%20%20%20%20var%20i%3Dcontent.document.images%3B%0A%20%20%20%20for%20%28var%20j%3D0%3B%20j%3Ci.length%3B%20j++%29%20%7B%0A%20%20%20%20%20%20var%20k%3D%20content.window.innerWidth/i%5Bj%5D.width/.95%3B%0A%20%20%20%20%20%20if%20%28k%3C1%29%20%7Bi%5Bj%5D.width*%3Dk%3B%20i%5Bj%5D.height*%3Dk%3B%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20is_active%3D0%3B%0A%0A%20%20%20%20this.checked%3Dfalse%3B%0A%20%20%20%20this.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20Off%22%0A%20%20%7D%0A%0A%20%7D%0A%7D%0A%0Athis.setAttribute%28%22onleftclick%22%2C%20%22this.onclick%28%29%22%29%3B%0A Теперь она умеет включать-выключать режим... | ||||||||
Killy > 04-09-2007 20:59:27 | ||||||||
Подправил код - теперь и правда ужимает страницу (забыл про <pre>). Выделить код Код:custombutton://Fit%20to%20Page%20Width%5D%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAFVBMVEX///8AzP8AAAAAzP8Amf8AAMwAAACWs84cAAAAB3RSTlMAd3f/////1grLHQAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA1LzI4LzA2GvIWfQAAAEpJREFUeJxjYMAErKGhgRCGi0uIAJjhbBxiCGO4AIUUgIzQ0AAmhiQgw9gkQI0hTRXECEpDiChAGExgXUAGxEAXlwCIFUDtWOwGAHj3ENTzyS3QAAAAAElFTkSuQmCC%5D%5B%5D%5Bvar%20is_active%3D0%3B%0Avar%20rule1%3D0%3B%0Avar%20rule2%3D0%3B%0Athis.checked%3Dfalse%3B%0Athis.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20Off%22%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%0A%20if%20%28event.button%20%3D%3D%200%29%20%7B%0A%0A%20%20if%20%28is_active%20%3D%3D%200%29%20%7B%0A%20%20%20%20var%20s%3Dcontent.document.styleSheets%5B0%5D%3B%0A%20%20%20%20rule1%3Ds.insertRule%28%27div%2Ctable%2Ctbody%2Ctr%2Ctd%2Cp%2Col%2Cul%2Cdl%2Ch1%2Ch2%2Ch3%2Chr%20%7Bmax-width%3A99%25%21important%3B%7D%27%2C1%29%3B%0A%20%20%20%20rule2%3Ds.insertRule%28%27pre%20%7Bmax-width%3A99%25%21important%3B%20white-space%3Anormal%21important%3B%7D%27%2C1%29%3B%0A%0A%20%20%20%20var%20i%3Dcontent.document.images%3B%0A%20%20%20%20for%20%28var%20j%3D0%3B%20j%3Ci.length%3B%20j++%29%20%7B%0A%20%20%20%20%20%20var%20k%3Dcontent.window.innerWidth/i%5Bj%5D.width*.99%3B%0A%20%20%20%20%20%20if%20%28k%3C1%29%20%7Bi%5Bj%5D.width*%3Dk%3B%20i%5Bj%5D.height*%3Dk%3B%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20is_active%3D1%3B%0A%0A%20%20%20%20this.checked%3Dtrue%3B%0A%20%20%20%20this.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20On%22%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20s%3Dcontent.document.styleSheets%5B0%5D%3B%0A%20%20%20%20if%20%28rule2%20%21%3D%200%20%29%20%7Bs.deleteRule%28rule2%29%3B%20rule2%3D0%3B%7D%0A%20%20%20%20if%20%28rule1%20%21%3D%200%20%29%20%7Bs.deleteRule%28rule1%29%3B%20rule1%3D0%3B%7D%0A%0A%20%20%20%20var%20i%3Dcontent.document.images%3B%0A%20%20%20%20for%20%28var%20j%3D0%3B%20j%3Ci.length%3B%20j++%29%20%7B%0A%20%20%20%20%20%20var%20k%3D%20content.window.innerWidth/i%5Bj%5D.width/.99%3B%0A%20%20%20%20%20%20if%20%28k%3C1%29%20%7Bi%5Bj%5D.width*%3Dk%3B%20i%5Bj%5D.height*%3Dk%3B%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20is_active%3D0%3B%0A%0A%20%20%20%20this.checked%3Dfalse%3B%0A%20%20%20%20this.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20Off%22%0A%20%20%7D%0A%0A%20%7D%0A%7D%0A%0Athis.setAttribute%28%22onleftclick%22%2C%20%22this.onclick%28%29%22%29%3B%0A Одно плохо - пока не умеет сохранять настройки для каждой вкладки. | ||||||||
obana-obana > 08-09-2007 16:52:49 | ||||||||
Два вопроса: | ||||||||
Dark-Demon > 08-09-2007 17:27:02 | ||||||||
1. http://dark-demon.nm.ru/soft/custombuttons/ | ||||||||
obana-obana > 08-09-2007 17:47:02 | ||||||||
Dark-Demon | ||||||||
obana-obana > 08-09-2007 19:01:12 | ||||||||
Второй вопроc чacтично решен, оcтaлоcь узнaть кaк cделaть выпaдaющее меню у кнопки?? | ||||||||
Anton > 05-01-2008 08:58:44 | ||||||||
custombuttons 0.0.2 beta | ||||||||
obana-obana > 20-01-2008 19:35:44 | ||||||||
Может кто-ниудь написать кнопку что бы при нажатии на неё вставлялся следующий текст: | ||||||||
Anton > 20-01-2008 22:02:11 | ||||||||
obana-obana | ||||||||
obana-obana > 21-01-2008 00:01:12 | ||||||||
Anton | ||||||||
Dark-Demon > 21-01-2008 00:24:48 | ||||||||
у меня емнип по мидлклику вставляет [ url ]текст из буфера обмена[ /url ] | ||||||||
obana-obana > 21-01-2008 01:01:45 | ||||||||
Dark-Demon | ||||||||
Dark-Demon > 21-01-2008 01:05:19 | ||||||||
зачем? | ||||||||
obana-obana > 21-01-2008 01:19:18 | ||||||||
Dark-Demon | ||||||||
musTANK > 28-01-2008 01:05:42 | ||||||||
Сори , помогите я так и непонял как сделать просто , чтоб по кнопке открывался адрес url из буфера обмена ? | ||||||||
Al_H > 28-01-2008 02:07:04 | ||||||||
Paste and Go Button
ImagesLikeOpera | ||||||||
Anton > 28-01-2008 14:25:58 | ||||||||
Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%09%3Cname%3Egoto%3C/name%3E%0A%09%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%09%3Cmode%3E0%3C/mode%3E%0A%09%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.%2520onClick%2520%253D%2520function%2520%2528ev%2529%250A%257B%250A%2509if%2520%2528ev%2520%2526%2526%2520ev.%2520button%2520%253D%253D%25202%2529%2520return%253B%250A%2509openUILinkIn%2520%2528readFromClipboard%2520%2528%2529%252C%2520whereToOpenLink%2520%2528ev%252C%2520false%252C%2520false%2529%2529%253B%250A%257D%253B%250A%250Athis.%2520setAttribute%2520%2528%2522onclick%2522%252C%2520%2522this.%2520onClick%2520%2528event%2529%253B%2522%2529%253B%5D%5D%3E%3C/initcode%3E%0A%09%3Ccode%3E%3C%21%5BCDATA%5Bthis.%2520onClick%2520%2528%2529%253B%5D%5D%3E%3C/code%3E%0A%09%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%3C/custombutton%3E
можно, конечно, и кнопку сделать, но лучше ilo. | ||||||||
musTANK > 02-02-2008 22:44:04 | ||||||||
спасибо Anton и Al_H . | ||||||||
Sid > 02-02-2008 22:54:58 | ||||||||
musTANK | ||||||||
musTANK > 12-02-2008 15:32:46 | ||||||||
Сэнкс за разьяснения . Ещё очень бы хотелось кнопку для заливания картинок на _http://radikal.ru з.ы. /оффтоп/ если невозможно сделать такой батон , то подскажите может есть какаоето расширение типа ImageBot (работает с imageshack) , но чтоб он с радикалом дружил . Типа выбераеш на страничке картинку , правой кнопкой и "Upload Image" . | ||||||||
vurdalak > 13-02-2008 18:24:11 | ||||||||
Проблема с расширением. При изменении кода в кнопке не могу нажать OK (окно не закрывается), то есть ничего не могу изменить. Кто знает как бороться ? | ||||||||
Anton > 13-02-2008 18:51:14 | ||||||||
| ||||||||
musTANK > 15-02-2008 00:03:19 | ||||||||
Мне ктонибудь поможет ? | ||||||||
Robert Ingil > 16-02-2008 15:22:16 | ||||||||
Доброго времени суток. Значит, обновил недавно (вчера что ли) до 0.0.2.5 и сегодня заметил глюк, точнее trueглюк[/b]. Вот именно так, как написано: вместо всех открывающих тегов пишется true. В свойства кнопок лазил, но там всё как положено: Никто не сталкивался с такой проблемой? Как исправить можно? Я, конечно, ещё попробую downgrade версии... Вот ещё обновился, проблема также и осталась. | ||||||||
TLemur > 18-02-2008 14:01:05 | ||||||||
А чем CustomButtons 2 и 1 отличаются? | ||||||||
Anton > 18-02-2008 15:18:31 | ||||||||
Robert Ingil
Подтверждаю, в 0.0.2.5 такая ошибка была. В 0.0.2.6 не наблюдаю. TLemur | ||||||||
vurdalak > 20-02-2008 15:06:24 | ||||||||
Подскажите код запуска внешнего приложения , например открыть текущую страницу в IE ? | ||||||||
ПысКо > 21-02-2008 17:37:18 | ||||||||
Мужики,а че надо писать в этой штуке,если я хочу вывести на панель кнопку из настроек "Автоматическая загрузка изображений"???я так то впринципе почитал,что вы тут пишите,но ровным счетом ничего не понял | ||||||||
Anton > 21-02-2008 21:47:32 | ||||||||
vurdalak Выделить код Код: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 ("H:\\Program Files\\Internet Explorer\\iexplore.exe"); process. init (file); process. run (false, [getBrowser (). contentDocument. location. href], 1); ПысКо Выделить код Код:var pdi = nsPreferences. getIntPref ("permissions.default.image"); nsPreferences. setIntPref ("permissions.default.image", 3 - pdi); | ||||||||
Infocatcher > 22-02-2008 00:13:06 | ||||||||
Anton Так что надо Выделить код Код:var prefs = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); и | ||||||||
vurdalak > 26-02-2008 12:05:29 | ||||||||
Anton Можно ли реализовать с помощью кнопки вот такое расширение ? | ||||||||
Anton > 26-02-2008 15:28:39 | ||||||||
Как-то так: Выделить код Код:var ps = Components. classes ["@mozilla.org/preferences-service;1"]. getService (Components. interfaces. nsIPrefService). getBranch ("general."); ps. setCharPref ("appname.override", ""); ps. setCharPref ("appversion.override", ""); ps. setCharPref ("platform.override", ""); ps. setCharPref ("useragent.vendor", ""); ps. setCharPref ("useragent.vendorSub", ""); А смысл ? | ||||||||
Bruce > 01-03-2008 05:15:10 | ||||||||
Подскажите код кнопки для того чтоб открыть ссылку http://mail.ru в боковой панеле (sidebar) | ||||||||
Anton > 01-03-2008 06:02:28 | ||||||||
openWebPanel ("Заголовок", "Адрес") | ||||||||
Bruce > 02-03-2008 16:55:13 | ||||||||
Еще вопрос .Как сделать кнопку чтоб при на ведении на нее она подсвечивалась и изменялась подсветка если клик зажать на ней .Пример кнопки из панели расширения FoxLingo. | ||||||||
alabanco > 02-03-2008 17:16:54 | ||||||||
А кто знает код кнопки "домашняя страница" и когд "bookmarks manager" на сайте расширения не приводятся коды разных кнопок, только парочка готовых приводятся и все. | ||||||||
Dizeloid > 05-03-2008 14:23:37 | ||||||||
Попробовал смастерить свою кнопку для открывания УРЛ, вроде работает, но открывает страницу только в активной вкладке, подскажите что изменить в коде что бы открывалась страница в новой вкладке при нажатии на кнопку? Выделить код Код:if (event.ctrlKey) gBrowser.selectedTab = gBrowser.addTab('http://www.mail.ru/'); else gBrowser.loadURI('http://www.mail.ru/'); | ||||||||
Anton > 05-03-2008 18:57:28 | ||||||||
Bruce alabanco
в раздел "Инициализация": Выделить код Код:this. onclick = function (event) { if (event. button != 2) BrowserHomeClick(event); }
в раздел "Код": Dizeloid Выделить код Код:this. onclick = function (event) { if (event. button == 2) return; if (event. ctrlKey) gBrowser. addTab ('http://www.mail.ru/'); else gBrowser. loadURI ('http://www.mail.ru/'); } | ||||||||
Bruce > 05-03-2008 19:53:55 | ||||||||
Anton | ||||||||
Anton > 05-03-2008 20:19:38 | ||||||||
Так она и выделяется, как и все прочие кнопки. Если нужно что-то особенное, можно в раздел "Инициализация" добавить что-нибудь вроде Выделить код Код:this. onmouseover = function (event) { this. style. setProperty ("opacity", "1", null); } this. onmouseout = function (event) { this. style. setProperty ("opacity", "0.5", null); }
Аналогично, только в onmousedown, onmouseup. | ||||||||
Dizeloid > 06-03-2008 15:17:28 | ||||||||
К сожалению ничего не изменилось. Сайт как открывался в активной вкладке так и продолжает это делать. А хочется что бы в новой. | ||||||||
Anton > 06-03-2008 15:54:54 | ||||||||
Dizeloid | ||||||||
Bruce > 07-03-2008 08:58:02 | ||||||||
Dizeloid | ||||||||
Dizeloid > 07-03-2008 11:32:55 | ||||||||
Bruce, спасибо большое! Всё работает | ||||||||
Anton > 07-03-2008 13:08:56 | ||||||||
Вопрос к пользователям расширения. Какое поведение пользовательского интерфейса более предпочтительно при клонировании/добавлении/удалении custom-кнопок в одном из окон приложения: | ||||||||
Dimanish > 07-03-2008 13:15:14 | ||||||||
Anton | ||||||||
Robert Ingil > 10-03-2008 06:56:58 | ||||||||
Ну, не знаю. Я со своей стороны всё на «косячность» проверил... В итоге сделал downgrade до 0.0.1.3 — всё заработало. А недавно сделал обновление (хотя и боялся) до 0.0.2.6. Пару раз перезагрузил Firefox, кнопки удалил, а затем заново поставил, а то они в двух экземплярах у меня вылезли (по-умолчанию что ли теперь в составе есть). И теперь всё работает как часы. (Пробовал до этого манипуляции без downgrad'а — не помогало). | ||||||||
pshenk > 17-03-2008 21:59:10 | ||||||||
проблема с кнопкой "External Applications" та что 2006 года, она у меня не работает, не выпадает дроп даун меню. Выделить код Код:var apps=new Array; //------menu items-------- apps.push(['Notepad','c:/windows/notepad.exe']); apps.push('separator'); apps.push(['IE','c:/Program files/Internet Explorer/IEXPLORE.EXE']); //------/menu items------- var nMItem=function(label,path,args,obj){ var m=document.createElement('menuitem'); m.setAttribute('label',label); m.f=obj.startProcess.bind(obj); m.setAttribute('oncommand','this.f("'+path+'","'+args+'")'); return m; } this.startProcess=function(path,args){ 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.replace(/\//g,'\\\\')); // file.launch(); process.init(file); process.run(false,[args],1); } this.orient="vertical"; var mP=document.createElement('menupopup'); for (var i=0;i<apps.length;i++){ if (apps[i] =='separator'){ mP.appendChild(document.createElement('menuseparator')); }else{ if (!apps[i] [2]) apps[i] [2]=''; mP.appendChild(nMItem(apps[i] [0],apps[i] [1],apps[i] [2],this)); } } this.appendChild(mP); может у кого есть более новая версия? или кто знает как заставить работать ту что есть? | ||||||||
Anton > 17-03-2008 22:25:32 | ||||||||
pshenk | ||||||||
pshenk > 17-03-2008 23:33:06 | ||||||||
Anton | ||||||||
Anton > 18-03-2008 16:16:47 | ||||||||
pshenk | ||||||||
pshenk > 18-03-2008 19:14:08 | ||||||||
эх, тот вид кнопки который я хочу, реализован в расширении "SwitchProxy Tool" и замечательно выглядит на статусбаре, посему придется копать код в этом адоне. | ||||||||
Anton > 22-03-2008 12:20:17 | ||||||||
Сообразил только сегодня. Надо убрать this.type=.... и установить атрибут popup Мне на AMO и mozdev три человека пожаловались, что у них на 0.0.2.7/0.0.2.8 "сломались" кнопки, которые сами строят своё контекстное меню. Мне такие не попадались, может кто-нибудь показать подобную ? | ||||||||
AndreyD > 05-04-2008 22:32:12 | ||||||||
С домашней страницы расширения не добавляются кнопки для BBcode, хотя BBcode установлено. | ||||||||
pshenk > 05-04-2008 22:52:58 | ||||||||
не работает. не появляется всплывающие меню. Выделить код Код: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%3EFavorite%20Applications%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACvUlEQVR4nO2Uz2tcVRTHP+ecN3ltM2kwEESiGbSx6EawIkK7aUAQoSi4cu0/4EYYCykONLSMdOF/4dKN4F5adKEL3bTVbNog2TlpJ5nM3PfuPS7e/LImcWxc9guXe9/l3e/n3nPOvfBM/yJxdwA2N29+FmNsA3pCz2RmzY2Nq7cAcHfcnVbregwh+EkVQvBW63oc+WZTZFU13vz4K3a7/afa+tLZ0/z89adMR2EaQBkTj/f6XHznDcyEzHTYJuPj9M13P/5jLjvkP8qYcAQRwdRBFBcBqUACOFV4cSf5cHyIDgUkdzI1VBU1Q9QwVdQE1clJ3J00jHVKswIE1CbmajpuFaQC9UPk0f6A/X5B76Bg7yDMegIBmZjK2NQQUwYx8sefA7q9QHInxURMjprNHiLRCiIiqBqmRpmcTm/AICQcOJXXiMmJMRFjpNQ0O8AdokOIEIn0iirpqkqeG+AT8zJSyqHeRwP6ZSISqdWEGkaWKbXMqgpSwZNTxkQpcbyhNEsVZaacref8+tMvR2/pGC0tnjkeYKZ8e+ujpzI/StOAVBSFrqysnsiwKAqAccbHADNr3rjR/t9e09GHHHXFR7rZ3vT8VM7c3NwTrcbvv21xtblxTA0NASJi7S/bW6q69NrrawtqKmZGjJH/0heh8Ht3t7oxps7nzeaau5fWarVweHt5efmTK1fef+7x3q5kWcbc6Rr1+QUw54XnVwixz7mXX2W/3+WVYT+ar59ZgKx6Hi9dvJTv7OykCxfe+n798uVtBUjJ322sri6mlCiKkhACMTidTof5vM7D7Qf0ugfcu3+XXveA+8P+4fYD5vM6nd0OMVRrU0o0Go3FlPw9GCZZRT5YX1/P8jxn7dz5E+YYXnqxYXdu//Ah8EUGMBgEu3at9UikupXAMHEuUzXwRDL/VhxC9XrLyMNMFeAvxD6eG31AG3sAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20login%20%3D%20%22Administrator%22%3B%20%20%20%20%20%20%20%20%20%20//%20Here%20put%20your%20login%20name%21%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%20%20//%20So%20you%20can%20use%20%22Show%20Desktop%22%20command%21%0A%0A/*%0AIf%20you%20deleted%20%22Show%20Desktop%22%20from%20your%20Quick%20Launch%20toolbar%2C%20just%20enter%20this%20URI%0Ain%20your%20Firefox%20and%20save%20the%20file%20as%20%22Show%20Desktop.scf%22.%20Then%20you%20can%20put%20it%20in%20you%20Quick%20Launch%21%21%0AShowDesktop%3D%22data%3Aapplication/x-unknown-content-type%3Bbase64%2CW1NoZWxsXQ0KQ29tbWFuZD0yDQpJY29uRmlsZT1leHBsb3Jlci5leGUsMw0KW1Rhc2tiYXJdDQpDb21tYW5kPVRvZ2dsZURlc2t0b3ANCg%3D%3D%22%3B%0A*/%0A%0Avar%20apps%20%3D%20new%20Array%3B%0ADefault%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACkElEQVR4XqXNa2jVZQAG8N//nJ3jmbs4l6XZhSGI0sWhQ9CCpKhcWljOYCLZDZEgsA+RFEQWCcEsF8vsy9yHLiKCGxgsVnZZzLm2BV2kYdgWJ7cyN6Zn7nLO8bwh9KmBX/rB8/F5niiE4H/r2qX+xLPaTu4TPt1mvG2LyfYnjaAYcdcQXS1PxBzOZnh4L0bI/M7oKL+ccD6W1Vt7VB1yKMwauPpcvd6m6+7BcWQxByVkphjKcbbd4cfa7MDUf0dilzM2Dg0gzfRl6e//sG84q7Ww0ExZDVVLyOdsbqn1IlKIAEDfHiH0C6FTSO/ViuW4teEFa3/rrSyEv4WZHuHI1lRI7vwod8u2lqeQQASxzBky3chy8002vVHnelw8OPXJK5svNEcqSMb5NXOnxTXriiZnHCqrb0nfsKV5OxKxfNLuzi9cchGlole3+ybT6UC5P28zXkEBw6xeNGDZYJ/b77s/mn/XqoX5bHYDSiMkv3zG5XvvVqQYU5iLxYhjEEmG0rxz7vn+gQdfW1UqGX1+sp++gY4YcoWk/EiCn0bJ1mAMP+MvXKL7K3q+lW7a/97TUTT8VmpJifLVa2QrylfGEKbH7Ow56nTXcQ2nWl2BoTGGKrGCsYvzfLbmyHlMd9RWN5bk4yZGZ4TxTCoCJFCO4o5dTi99VHnPuy4cG1u3oG7FDxpT+5294wk3zg0SybiRqci5HLraRYAIRYg3r7c15NUeiuq/O7Xs8YbUvMpocnkVySpGUYoJ/NguMXAmbTYJzMeiBRvffq7ykaYPyjYc6PX+YPDmSHCwO/g6hKjuwwKqzSZCEZIoRmXZA417vHwsxHd8PD1n7esNsYeapotW7n4JSyPXFiGOJEr/DVxBwOQ/YMb/YyJTjUkAAAAASUVORK5CYII%3D%27%3B%0AShowDesk%3D%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioFc/4lLHf9dPCL/Sj8u/zZMRv86Ukv/O1RN/0VhWf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZbEv+tSQT/p0wR/8F4MP/BeDD/wXgw/8F4MP9FOCj/OUc+/ztTTf8+Vk//RmNb/1p+dP8AAAAAAAAAAAAAAAC2WxL/tlsS/7/WzP++8vv/t/D7/7fw+/+37vv/wXgw/8F4MP/BeDD/wXgw/1M3H/8+Qjf/TGpi/wAAAAAAAAAAtlsS/8fQvf/F8/z/xfP8/8x6O//Mejv/zHo7/7fu+/+37vv/t+77//DOpv+1UAH/tVAB/ztUTf8AAAAAAAAAANiBJ//L0bz/yvX7/8r1+//3ozD//+PH///lzP/Mejv/zHo7/8x6O//Q9vz/8M6m/8xnAf87VE3/AAAAAAAAAADYgSf/z9K9/9D2/P/Q9vz/96Mw///lzP//5cz//+XM///lzP/Mejv/0Pb8/9D2/P/MZwH/PldQ/wAAAAAAAAAA2IEn/9Tt7P/U9vz/1Pb8//ejMP//8+f/AQ4U/wEOFP/Zhzf/2Yc3/9mHN//U9vz/zGcB/zZMRv8AAAAAAAAAANiBJ//c+P3/3Pj9/9z4/f/3ozD///Pn///y5f9hhJL//+TJ//XDkP/Zhzf/2Yc3/8xnAf8pOTX/Ql1V/2eShv/YgSf/4fn9/+H5/f/h+f3/96Mw///8+f//8uX///Pn/9mHN///5Mn//+XM//zRpv/Zhzf/ETG5/y9CPf9UeG7/2IEn/+Xi0P/o+v7/6Pr+//ejMP////////r1///y5f//7dz/2Yc3/9mHN///5cz/H1zV/y6G8v8RMbn/bJiL/9iBJ//YgSf/7Pv+/+z7/v/3ozD/+7JB//uyQf//+vX///Ll/8x6O//s+/7/2Yc3/9mHN/8eJJb/AAAAAAAAAADYgSf//+26/9iBJ//0/P7/9Pz+//T8/v/w2L//+7JB//uyQf/Mejv/9Pz+//T8/v/Zhzf/O1RN/wAAAAAAAAAA2IEn/++mRv/vpkb/2IEn//DOpv/w2L///P7///z+///8/v///P7///z+///vpkb/2Yc3/ztUTf8AAAAAAAAAAAAAAACOn4b/oLac/6ilhf/vpkb/76ZG/++mRv/vpkb/8tKf//LRo//vpkb//L12/9mHN/9Sc2n/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO+mRv/vpkb/76ZG/++mRv/vpkb/AAAAAAAAAAAAAAAA//9zQQD/c0EAB3NBAANzQQADc0EAA3NBAANzQQADc0EAAHNBAABzQQAAc0EAA3NBAANzQQADc0GAA3NB/wdzQQ%3D%3D%27%3B%0AIExplorer%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAgtJREFUOE+NU99LU2EYnvSHdNP0uHUcw7n8RTmNgYKgWESXQexGNAoSIsoiutDhUDbndEmLWo1ayEydgV1FXWi1HINipC1rP9x2cptnJoo8nu+Dc9xxg3XggcP3ve/zvu/zPl8FAMX/fuaVGA0+keMUN9rYCppHCMphZCmI4eWoEHYUS85o8VLJ5FJE15s1dAR2ce62j0KML0kgJplCMRAYV3eg9Weh8nLQvN6C3p2QSIoICtu0hLNo9P2C8r4fpyyfwbiiqHr0B6wriQb3pqwTaYSxLynanuFjHo0zETBd/dC0XsaZi9dRfXMB1Y4YTk/EUf8sW0xQmEwImAeLULb3SvMSAv1wAKw9AZ3zL4Woh0zE1g95sN40Kh8LLdvXwdgiUFkjUFt/g7XGoR3fRMNUBoYnXDHB2SUe7CsOldNRqAe/loWsA5N/A3VzPFSuBJTjGzhpegpd97WykHzQPL+DWu82agSVVfYoGHMY6ksPZcYhOjR5ePQFD3DH//1ohCuC4uzkGq2mf56D1plCjTCvZjRONyBuweDj0Rvah/UbL99C52waLbde0mqUxCGsypmBfkIwztQWml/k0P3uHwZCexhaTtJkEic6UmGc4SQCkaT27ns02dZh9CTRM5fB1dmf9F/UpdD+ih73D9TfeysxXnCsSlWOC1nq3VAfnLcFoBv6BJJc7mUevz8EdJ2boXU7oPQAAAAASUVORK5CYII%3D%27%3B%0AWExplorer%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAEG0lEQVR4AQEQBO/7Af///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAADNmjT/////AP7+/gD+/v4AOWzSCwAAAPj////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AzJkz///////////////////////Cjyn/AAAAEQAAAAL///8A////AP///wD///8A////AP///wD///8AAcyZM/8zZswAAACaAAAAAAAAAAAAAAAAAAAAZgC+iyUA/f39AP39/QD+/v4A/v7+AP39/QBQg+kLAAAA+P////4E////AAD4kgAA/f0A9fYCAMTVKQD1DjIA/P/nAA87uQAhFAsAJiYXAAAAAAAAAAAAr3wWAAAAAB8AAADhAAAA9gT+/v4AAPT0APPp6QCitxQAIl1DAAkFAwAKAwAANw8AANrd7AC1kFEACPrTAPz8/AAGBgYAs4Aa1urq6gABAQELBP7+/gAA9fUA49fXABE6mQAaFwMA+foAAPn7AADL6gAADxsUAA9AmAA8MBcAAAAAAADngQDq+PgAroeNAAAAAB8E/v7+AP3x8QDn3t4ADScFABYAAAACBgAA8QYAAN/5AAD89gAA/QPxAAAAsQAAAAAA+d/fAN/n5wDq+A8AAADsCgL9/f0A6ODgABUWGAAA9vcAFgAAABEAAAAHAAAACAcAAPn8AAAS/NcAAPj4AAD4+AD39/cA387OAH+j7D4AAAD5Av7+/gDi4uIAIjBLABf/8gDp7/UA8QAAAPkAAAADAQAA4szdAA334AAA7+0AAPT0AODg4AAEBgYAAAAA+QAAAOgE/Pz8AAICAgAMLVMANvDWANnaygDpBDQA9fv7AALy6AAZ8OYA9t7NAAD49gAAHSEA3d3dANvl/AAAAAD9AAAA+AT7+/sAISEhAAD8/AAA68oAJwz1ACcA2AAACAAAAA0AAO4QEAC7vzcACM+3ACf+3QD69/cAeqL2PgAAAPkAAAD+BAUFBQDY2NgA1tZFAP39/QD+/v4A/f39AP39/QD9/f0A/v7+APsIMADICVQABNK7ADgsKgAAAMz5AAAA6AAAAPgERHfdCwAAAB8AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGAAAAxgCggI3MCPXUAAAAzP0AAAD4/////gEAAAACAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAA/QAAAOH////2Af///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgAAAAgAAAAAAAAA+P////59OFeo8fymrgAAAABJRU5ErkJggg%3D%3D%27%3B%0ACtrlPanel%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAAIuuYjyvIgAAACBjSFJNAACHGwAAi/8AAP/YAAB91AAAgSAAAOmkAAAz8AAAJVC/P0EaAAAEG0lEQVR42mJkTDzG8P/ffwYpEU6Gzz/+8H//9Y+dh4s1+cOn3+zMbMwWf/8wWAAVMOi/nLtX8uet4L+MrAz/GBgYmIHY/ft3BoAAYgHSOYyMjCIfv/2x+Pnnv8WfH/+YPnz4zMsAVMbC+p9BQYCV4dNfNoYvf9j4vn37wvCXkZ3hF9BADyFhBtVv3xgAAoiF4e/fif+//Wb6+ukvAzvrPwYtUVYGSyM+Bl15HgYTLSkGRUkOhty5txkOXP//F+TSv/9+MrCxsjBICggw/H73jgEggFgYvn37HGXEx+9lJMpgqCrEoCTJw8DBycoAAh++vGP4y8TO8O8/IwMj0FaGf38Y2ISUGZgktBlYGR4x/P//nwEggFj+//jBkO2py2BlIAnW9Auo7uMvBoYfP38zvD2aycBr1MPAxsLO8PsvM8PPb58ZhByDGb4x8TAwPL0HNJiJASCAmFhYWRkevvoG1vz9NwPDN5Dm/wwMX57sZPjLrcnAwCfLwMXJzPDr19//X8XNGX5JWzP8/flVjOnLq5lC7G+XAwQQCwsLE8PHL7/BBvwG2v7zL9AVQAO+3V/E8E86juEvkP3/90+GbyzCzJ90wsRUuDhmGqgKO6v/4ufl/HiCASCAWJgYGRlefQBay/Cf4fsfRoZfjEDNTw4x/P5wiYHVyInh/hsGhhc//jEEhwU4OFmo3/vOxMN98Yo8w+p/ir8EX0uvBggAQQC+/wQBAAAA8fkCAPf25ADuzJEABC2AAPnkrgD/FUcA6ujpAMTU2gBKOz4ADgkHBcfU4wXNzbvV8efcyCAD8ZMlFRvSAgBBAL7/BAYFAwDz9vgA+AcnAP8IHAD0vkgAAAUPAPkplQCyqrAAEQDYAKTmJQDhz8HdGv3XbBUE9L8QAQT5BgIBAAP+/QACiAUc8n/+Mvz8DYw6pVyGf68OAWML6CUuBQYG23yGHwxfGMwefmK4/fj2dQbu5zsYhIFpjJmNAehZcLgBBBALIxMTw2dgIH79AQo8YGjrLWb4/fEWw+8/DAyaAowMh9/zMnAy/2L4w8TP+uLjK4a33xkZ+Pn/M8gKAh3K+I8BIIBY/gDN+gNMYT+AGn4AI+M3IzfDT35DsOninAwM8m9+Mxy5+Yrhz5+/zIzAhPPr1x+Gly+/MHz78p/h5x8hBoAAYvnz9x/DT6BrmNiAOoCGfAUmiRcf/jLcuPmU4eS5+wy3rt1g+Pfuyk8VtkefeNk+gxMPCAC9z/CekZkBIIBY/v/5wvL8LQfDtGW3GO49eMXwCpjCvjy7+Ov/99cf2P5/mKvO/eseA/v7E0wsbPc5OHmByfcfAzIACCAW9t9v3t6/+vzP0wub//D+f3pGkPnZaQHmP2t4eTjvMTKzfmZj4wAmbXagRiag7f+BNIp+BoAAAwDAMqTgcw5bNAAAAABJRU5ErkJggg%3D%3D%27%3B%0AMSNotepad%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAoJJREFUOE+lk/tL01EUwO0fy1ely6IUMoi0AoM0Sy1TMDMitZyvfLDNdM5HPle6RNt0mlvz0ebmYzoVN5vO4cQ5yxQFAz/NbxTo9Kcu3Hu4h3s/fM6BcwYI+q91CBBXdGDtjaG88LUQywoK/9yLJEKseaulRnzX/5Sg41tIiKsWaauX0mdxolUr6Btz0NpWh9Ls4ZNugHbbDpklMvKkTQEQAVD4YQmN+yeGzX00qzvUu9aodKwhc25TurhLtnWbuNb10wF5ygUqnD4UTg8Sxwa5Nhc5026eTnpIG18lYWSdBO3B6QCF2krutI838z7ypzdJNS+RZHJz3/idWyNeLvd7iFEfkKYwnFxCl95Mnm2FdPMGj81bxA25uKZfJla3wZXPm4R0exC93yGtdysAIvRAPWSm1rlEvP4H8UM+ogZcRPS5idKsc6HHQ7BymUj5Kum6A15KWo5YCIAeg5ku7xTXtV5itD7CuhcIVzm41LlChNLO2Xoboko7qV1bpFQNHLEQAB/9JUzsWUkaXOVih4tz7dOENU8gejeLqMFGsMyCqGCSpFoHyU32QIBKb8G6byR/fJmLTQ5C60Y5LzchqrYQKflKcNEXIrMNJBaP8ah1jVdVzf/KEAxUOgsLv6ZodM5xtWGe0LIBQkq0RBSPEF48TIjYRLTYRkqd3W+wyL2c0qOADp2ZyT0jet8Md1Quf8OMxCqnSO63kzVuJ2d2huhMKS8KyykqrQ5sYrfBb8AExt1hVOtzlLkHkXtHaVxxIJuZJ7trnhsJz0+fhXqNlc5lO3LTN3I7p3hQMcjNrBZuP6wkOb2EfLH0xM/CJB8eGc+kJGbIeJJTISge1zxpCv/mfgPvVs+ANDa5fgAAAABJRU5ErkJggg%3D%3D%27%3B%0AMSWordpad%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAAIuuYjyvIgAAACBjSFJNAACHGwAAi/8AAP/YAAB91AAAgSAAAOmkAAAz8AAAJVC/P0EaAAAD5ElEQVR42gBBAL7/Af///wDgz3tx+e7eSe7mDMcTHwhq3d3+lhQQ9Tfb4fDGGxEsa+z105z+AkJFDP3M9PEQRo8qKSyz1d3qAFlVRwACiBFkwPKlJz9+e7WVT1hYgOHZGy4GKcHHDM8/mzIoi55kePEzhEGQcRUDi0gSA9OHVQwfGdUYWCXkTa89en+mOsGTASCAWBiAgJFdgkHbyJ5B21Cb4em9lwwS0h4MHz6zMkiIGDJ8+yPM8O9vAQMXDx8D458Yhv5FhxgOv/s9lf/fvyag1q0AAQQxgPMDg7y9IcP7n38ZBLSkGX4xMDFw8P1mePmHgeEX4zOGv6wMDFyMnxhefWdiWPNZkeH9dwmzIL73y4Ba+QECCGzAH6A33v98z/Dz2y8GZkYGBlZGJgZuFi4GFqBBXKxCDMwsPxnOPvrJMO8gK8Ozj2IMfI/3Mbzn+wjU6ccAEEBgA5gYmRlYmTkZ2Ni5GH78+crw+98vhtc/3gK1/2cQ5eZheHLjP8OWQ78YTj1jY+D/eZNB8dcdBk4uoRcgvQABBDbg59/vQL9+ZWD/z8XAAbSZnYmf4c/fnwzsLL8ZDt78yrBk+x8Gpk//GEwYfzJ8//aUQYCf9a20lKgPSC9AAIENYGPmYmADavzx+ycDw78/DD8ZWRiEONkYdlz8x9C7hZXh0Yd/DOrCnAzm0swMHz69ZbA3MXomLCJ8G6QXIIDABvz+/4vhF9DZTEysDH+B4fGb8TvD8Qd/GCbv/M3w4O1vBj0ZDgYPPUEGA4VvDNc+izAY6GkyCAoKgLQyAAQQE4j4C7L132+g5n8M3Bw8DKz/BBiWbPzEcPflLwYjOW4GGxURBluNvwyWSowMjEzMDMxMTAwsoNAGAoAAArsAFIAg20Hh8OfXV4Yv11kZOF/+YHDTlmLQV+Zg0JT9yCAm8Jfhww9ggIOCFuhKIAIDgAACG/D3/1+giZwMLOwcDO8ufWfYsOk5g5ieGIO2Fj+Drsx/BmHebwzffv1i+Pz7L8N/uMMhLgAIIKgBvxk+/3rPwPqXjeEt628GeRceBlmVPwzS/M8YuNnYGf4BY4edGRg+fz8B2f8YkAFAAIENYGbkYmBl4WX48fMzg7DiPwZpNV4GblYOYIz8Yvj+5zvDX6bvDHzs3Ay87OLgNPMf6g4QAAggsAH/WX4w/GcVZBDgE2FgBdrw48d3hj9ffjNw/AI68xcnw9vX7xgefnjG8PPzD2A6YWXg4+F+x8bKCjYAIIDABiiKcq97e/lN2KfHr7/9+AAMxK/fGH7++Al0wC+wk7m4OBl4eLgZ+Hi52a0tjG5xc3NEMUNjASDAAGRtWmcAXa/AAAAAAElFTkSuQmCC%27%3B%0ATimenDate%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAqBJREFUOE+Fk2tIk1EAho9F2J8uFF0gol92g6j+WEFGTGrQBYYynGnrYllOwbIx2aJWUEiJoZiFIYSaoJFdSEFrXcwaUZFz4Vrq5mWX+lz25UQpop62SaOLowPn1+F5znvOeU8cIGKN7FcbIosJc3cK24cvQozPF9/erxDXM5PjokxYMNk8+HI9xe5cmkbrqQtcJK9DwdKGvUw55UNdawkhE1xMWNW2nKLegzR+rqM52MQxu5mVjcXEnStHnJrNsfKrEcmkgk1VPlbfSCacwuRI4aSzkNwOWHCtH1EqEEbB4kOpmEymf+OLomHmmxzMuHCGNXcWktSyhM2tXpbU/0CUeBFnQ4Kjgpm7M2ILpu9rR+R3Ma9Ex5zLK5hWqSIsFqfVCIMg/vAsFqnzSU9PR9hbS/l7Omr34yrdDucToWg9WWdXhWIrEAcsTM3IIyF7G2tTDBOCkeeVcD0NKhSgX8ZY8Q6C5XuQm0oYtbfyfegt2Zf2InYdQSgbiVdUosi6wDplDoWFhQh32x1s927x7FEb7a5hbN4RXIExPIHPBIY/IffZOFF1l+kba5inqGdD+iMSd5xDo9FM3MHN1qdYB0Z5EoLtLi+DVguyvZ2gz4Xs6kAe6KTmtoct+5+TpH3A2q1G1Gp1BI48Y1jQ0j3O6/4A3X2DSD1vkD3d+Ls7kboe43c85M07H2k5FSiVSnQ6XRSOCpq7RpAkiaDdyteAB39/D/6BHiRHC0FZYrCvl/x8I2azOdrAP5p494Ubr8/HR3sbX9/eJzj8gUG3E1mWsTo/UXC8InLjv2L/Xv1IE8PHkIYCkRRhyO+XsFieUVZ2hbTduWRmZk4KR6scFjidbqqrGygoMJKaqonsqNfrY4L/fCatVotKpcJgMPwX+v0IPwEurq5/p1hhrwAAAABJRU5ErkJggg%3D%3D%27%3B%0AAddRemove%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAs9JREFUOE+Vk91L02EUx+2q/yII6iJIxRoRRlHdiRBGF0KglFIkpRWKdKEpJlqEkQRR1txsbqY1dM40Naf5sqm/+ba20sxyc75szqHzNTf36fdb2Bh104EvPJznnA/PeXn2COZJov7DZEcP7IkIlwBPhTUemfxUmYPUDoNOVPsomKygrR9g8quHYBCMRiMGgwHRonYVJQGMY+M8GQrwsG8Hee8Wyg4fqhYP6oZ5uno9uN3g9QZJTk4mMTExEiCRJMj73nFyCt9ReE9PWVk7iso+6moERs0TbK24cTkdZGbeiEiWckNP+fLZxo/ZJUyjMywvuHC5PNhnXUw45miyzlPYaueWbpq0q7f/Deju/BAq47YJigQ/d3q3udYZIKlhk5TnNp41O3hrmKe8vIX8fPnfJTyo6+d+ywy53ZDaCte6RDUHKK224HYusuGDqUkYFpvbLPrz8hr/QEIlZNZYOP/Gh8YCLwY2UHVPUakR8LqWpECWl8EiQJMeXqlAoQiQnl4UgoQAjTod+q8b1FvWWddexv80np6qGnzr4PeLEavwzeBD+LhDpQL0Iqi0pIPs7Ozf85QAbrcX/bdV3k2nMKg5xnu1kaER+D4FP2xOKlRtmIUlBLFHg8I2avUQ8fHxYYDD6cFgX+X63AUO6/Yh1/ZjHoBBUWOmOeobTDinV1hb38K3toVa00VsbGwYYHcsMDC7wtmeOPYqo8iRK+hoAWUVtOlgtD3ApljKrl25kodMJgsDRkasfFpc5qB2P/vrDpFe8ZJqcWJKJbzVQoe4wdJGStbTYyUu7kS4B69f12C1fcG3A599DuyrP5F/9FJQYuRN7ab4B2BiAjyeoJhs49Spc8TExISnIDWyuLgYVbWGu3kFpKSkcvrMWY7KjpOQcImMjPvk5Dzm4sWbHDlykujo6Mg92P1ZaWlpJCUlhZ4madcvnXNzc8nKyorwS/e/AIz06Svr2XfUAAAAAElFTkSuQmCC%27%3B%0ACmdPrompt%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAQ1JREFUOE9j/P//PwNFAGQAJZiB17Xrv17m9v+G2bv/G2TtwonN8vf+N83b+9+8YN9/6+wN/yU8W4H2Al0vXHbzv3jPh//iXW9xYrHOt/+jN//677/29//4zT/+T+tb/N8yZuH/4uLi/wwupQv+G0YV/DeOLcOLLePL/lsAMYh2jMv5rxXQAjHAwSsOFIokYxHNQIgBtp7xYM0eHh4gP4EBiI1sKMSzqJYIa0ANsHKNBkvCNMIMgokhyyEbgtUAXF5BNhSmBm4AzAv4XIDNFRgG4AsD5DDC6QJSYwLuAkfvRJKjEGSZqGYQJBqN/ev/K5iG/le2iCIaq1hE/Je3K4EYAIpiEINcTFFOBFkOAK4+5J3cVDxkAAAAAElFTkSuQmCC%27%3B%0AComputers%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAZRJREFUOE+NUz1Lw1AUtT/Hn9BVcDDgYDe7iTiFTsFJXCRjcAod5FmhkA6FdCikW7oE4lCIg5AMhdehwxscInTI4HC898XU2tqPwOF93XPeffee1AAcbfueX7K1w08den1Vry05LFBBdFJodBO43RTBMIbox3CHCcRE6vHk1EbzzCJKyVuSecFE5ynQweJVISyAhA7iL8BfAK7CHgG6TWQFnBkgPkpSQODRozXvGxfO7gzEpMBdVgYLurGCM4fev77xdwhQBuFYwnwHLAq2p79gsvlGuE+2C3Ad/H6CRkQ3TX4ITCLw2qD9ZlvuFnDbJDDIYYyhhSrw2hgdIGB3Yy1QHwB1IjDMqNBtNVvl+7e2seqt1ZM4HlLRohx+n2rSimGcBxvkDR9UAs5jgmAk4dGtPOfWrRvoXyNVm5xusSig5oqEUmqdpzOwH8osVt37x4najWRlJud5DjmTiCPOIkTj0j1QgOyslIKcKqSZJF+k8Hoh1cHTQnsz4CysWwF/ENPPlOhRdFhAHF5EFqnatT6uvp/n35Q1zXl/mKThAAAAAElFTkSuQmCC%27%3B%0AMagnifier%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAqxJREFUOE+Vkt1L01EYx48vFQRFdwVdVFQ3URFBd0HQjf9AhXWnBGLRMtdUiLLCt8RGbxZoQvaiglhRai03Z9Za5dbUueb2U/emNXx3upkv26ffFrndlRdfznkOz/dznuecJwkQmwsdpK7bIEJLEZEkksUyEbEmOVlEksJiYTFZLIbDYtP6tSKSkiI2igWxR/jF1lS3qFYdSxJRwJZzWnYrdexS6dmp1MfWv/tovCNXx4FCA3sLP3Hospbs6/VsO14kWxExQKXBD0sOAn4rgdE+ZmUFZS3O2CEowZyDcECS4wHmAwNRI+l59+MAdccoBGz4nF2MDJrxeyyM+yyYDB08b3iJtllLt6GT0JiN5ZlB2bhMeu7dOKBM5ycy3kv/dyOSowunzYjmTQfvPlh5YRumsX+KZwYfD6pbcNs/xio4kXM7DijV/iQy3ceA04zXbUHfYaTzq0QoMI7GPUGtbYI3E3PUmMZQ36yVjUFO5dxKALT9gKlehpxf8di/0KjrQTf8g0bzEA02FxqXG63HR1ckzLXqNiSrgQxVQgulOhkwaWHQYaTP9J6mD/08+SbxyGhHM+Dgs9uJZdiFNTRFTXs3LU31nFYltFCmjwJMDNoNOLr11L/tkW/2USdDDJ4hHB4XIyNeRiO/uNfUTuvzx2TlqeMt1PTOysEIhIdZCHnRtJl42jXJx/kg5tlpXLOT8jfPsSBnqfKLCAftZBfciQOOKppJO9/K0TOv6dFUYGytovi2jrfyeIzH3hwWZV26+pjtBzPIqbSyPy0/YQ7UatSymisz4dU+zCVZnEzPpKL8LorcEi4WlJN5OjeWk6iVSYxu8NaB/jDSDQXKs/djibHzf+hPgiSPZfMRrMU5KM/X/Ld5pYKWKiXSrXwuKh6uyrwCiJaruHBl1eYo4DduhgDBD20V8AAAAABJRU5ErkJggg%3D%3D%27%3B%0AOnScrKeyb%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAJVJREFUOE9j/P//PwNFAGQAJRismSHz/H9SMLKFDAxtb/6Tg0tLS4HmgLwPNCD62H+SsELPhf8YBvz9+/f/zDNf///79w+FBlkDEgfJb7gPsQirAaS4AqcLGs78///r19//6DTIBTBx2rkAZDLIZpA/Qf4FARANshnkAmQvUj8MQCaSiuHRCEoMIA45GJyQKMkHg8MAACArvHlXxbSqAAAAAElFTkSuQmCC%27%3B%0AWinTskMngr%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAJ5JREFUOE+VU9EOgCAIxPXQY7/sp/lnxpFMTEpkYzST4+AwEVFir+yUc5YYMb6LvG5ILqUsvbK1Qr0YDqKGu58AYNDacSP+xwGqzMX40+IaAImabCN/xwCGqgaMogwEAHLOHmKwkvI1g0MWQQ+jEcO1Uv5K58k6sNhZIl02F8Dr3as+DVIZyBY2rT0w+1YMg/0BmuSTGV76HHcHiWSxG7luAcTplZKTAAAAAElFTkSuQmCC%27%3B%0ASystProps%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAiRJREFUOE99kj9o21AQxl82jx67Crpo9FZDlxoyWNDBKhki8BCMBmMyBOGhuF2MmyFoKsKD0VRQh4A8GORNWQLyUFAGgzy4KEOGN3Tw0MGFDl/vnSu5TkgFH/p397vv7t0RAPHc9en7B/4pf2kckizeidSuHh3EK8BjjdYDKPnSgzv34axMGDcaxGWE2mRD4fscTo7mGQ40ixBeJwinKYIvSQmo0rPo5wQyS0gJSBYUfJMiWuasWG753b3bwFtk5CBDZexDXNUghgJG12NICXCXW7IMhOQw/g1E5MJ/70J9d6YS+gw7wGWFXJDsBqy2tetF2VeBo3swxP9BOu3AW20wWAPWZ7I9ocCPLjkQEBekJwCy6izBCQwiwGAFdO6A+jDjASrrnNytQLctGE1j78BfkNVxCKdPU1d3krUAzNu/gH4Kcd6BONOh2QZqzR4ax+b+ODxqozEHA9yXNRoaWKp/NTBxEkO8jVBpuqjbDvQTD2brH4CagzYFy7nOMJpTS/2ErYr2AOI4hHgVQGsFqJ8GXL0cYjnIb3R0MwlvnKF3nqBDUpWqb0K8IIDeitFo07fXFnrd3uEx5g8bJLc58rXkpRoNI3IQ8yIZZ8kukWBF5WIby2Pc/txCSUpJoIw30b2KCJBSNbdMLCo/AeT3OeSDhLpHc7XCIbUSw58k3OvjxAOAenEuHEoIEHyNubp6Lio/l1yuckFTEBWsjkctyf8qFzl/ABIpmnDaTkSAAAAAAElFTkSuQmCC%27%3B%0ACalculator%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAmhJREFUOE91k99PklEYx18vyrXVRbeuu278T7zK1kWtrVbO8qLwoiybM12aLEdz5mqaqUPE3JJUwAQhfwBq4i/wxwSFyECSgZZaJpaSnw5stlq+Z3v3PO+z8/2e7/d5zkkDpIM15VvjaPoRaXPrpxTf/SXF99OkldiGdOp0hnT8xDHpZEa65O1blK5kZab9ASUJkl/PgF8ECO7Bkoifkvk+hEX0/4De2S1GgjDqjye3pTCpww+SDvM8YYEaEYgyTZCrj0Ncrlwmu2SJ86WLnFHGOVsaoK3XdziBxe4nHIFO1zbZynUu1MGl55DXDPltUNAu4otNjIMppf8rsNp9+IXErsk4ReooNTZQdSd4oA1RrvmAShej0fadoemonIIFZgS5/SM0277yrCtEi2019e9cFfXpeUbcXszjXw4nMA94GJ8XzVoAs3uTFmsAy1wCozNAo2OHmO4aa9qiVE22iY4peCtUNOu9uNZBWTuKeU5Y6dhg9mYm1sIs3CkHMlOwjkF/ABRl/SgeTmAUii4qXmL0QJ3pPZpZmPJtyxMYHQlMwoLOEUHnDKOzbxHahYaeEAZnnPo3EQYnYvIEBtse3eIUtcGPTTTvVoUFVesala1Bbj8ao6h2ieGZz/IEr6y7WEUP8pVDXC8epm8Zcu5o6F2E9qFltLYYAxNr8gRa0w76GehwRDG6olRrvQgHKJvm0JhWKW+O4HDJjDF5lZv031IWnrZ5UA9CRYOHnHt91BgS3K1eILfMi2NyRV6BWty8fvGSCp+4KajyU9W5R16JhRvFr/8BHTrGZPFcbj0Fqnco7utlAX+Dk/lvcXcJCTRwbTMAAAAASUVORK5CYII%3D%27%3B%0ANetConnect%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAtxJREFUOE91k2tI01EYh8/SDxVaGpQVVAYV+CEQchRppandEMEP2WXa1Uq7MUShIk2taGWIdr86M0vn0ka1NishHTMj3RKMxtBIa00zoxxUhPH0/09mSnXghXP58Zzf+573KADhG87v3+j80Sxs/QOi5cNYERroFCF+iSL450SxKyJYMSwcOZEBclS6zZR0H+D2p7NoezTkOpJJagxj2vVjBBZ+5NKLz5JsSDsyvIsiZyl77Mu46Mqh/ruZewO1FHcdZb11PlPLNYh8N4qCZHKrn/wF8QLCayLY/HwBxzu2UtpzhcuufCo+NrHB+ppJ2gYUp7MRBQL/LBUWi2UURKj0bgJOGVj+aDZbJMheezTqtvVkt38gygT+F1skiwKRI1DsCyJibfZoQNgJB2MO2gmtnEnE/eksNc9iibmZ+QaYd+0ra27ZyHxgQK2rZsq+MOYlZYxyIeYcsiEy7IzJfcC48ykElYUwvlTJjOI+7tp60bX2Y+gc5NZLD1ctXagOXUKr1Q67EMo8CbCuHrGrFZHpkHLdjygULC5OJ++2g6qWT5idA7R+AWsf1L37xdHz+j+AvLpeRLwekWRCqBoQ22sQBwQxmiwvoOSRi6o2D/cdHkpM7ym4001S6n70+iGIkAHTUk0oosoRcdWIVbWMSw/GLzkFZcoNih52U946QL6uE31LH82ub+zIPDJcB+8zypAZqfWExOqYvOIyczdmERB1gwmRpShVRoqMbvL1XewuuInWbONZzyB36p4POfB1lQxZuLWM8J3NxO18TKJUk8gtTSiTDShX7iE2fjXR0dFoNBqqrG+50uDGZJLSHtmWMkQWhK/aRnjcJhbFJJKwNo1N6dlUGF/wtL0fa6eHe85BTta0k5CQ8Hdv+4B11lfUtn3B+AZ0dg+VNimk/3DG2EHeGZ3XUVpa2v8BZZZezjV6SD98wWvdF/KtarXa63RUDf7102SxL+9/nct7vwFQw5ZrKBhJFQAAAABJRU5ErkJggg%3D%3D%27%3B%0APowOptions%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAetJREFUOE+lk99rklEYx9e/0VU3QfdB/0JMyEaoF17JZNlg8cqsi8naClSaiBk2jOY71BbOC3/UunBBGkHEgkZu5KiGroiRWxJa6rrp03sOOHS+FNGBL5zDc57PeZ7vwzkGDP3XEoBexdQIR3X0Tu9ZN7m2W+Pzq2eUc3HUxA6j9qtaTv9D3fMAoLWdo7G/xutHyyRv3OH+1GPsdh+BQEAXIgFLiTjpdEaW3infhY9uWr6TPDkxROSUmUvjQSZdk/qARTVK6FYQj8cjAV+rT+GTn4b/NPkzx4nZgsQSL5jzRw/V54HT6SQyP4/b7ZaA2n6dTusbb9deknnwnMzDLyjKLAaDgYmJywMQ2YKAdFWv12m3D3izWSGd3SSb29U8mNLkIJFIkUplJURRFNlSn4kCsre3R6fTplR6Ty5XIhwWKrCxUWVrq0E+v8PY2Aw226g+oNlsaoFflMtVVlbe4fUWKRYrVCo/WV//QaHQYnX1Ow7H9UGAKEl4cWjYXFxzP43PG+d2KEkoVCKqftBUZXo6Kdvua6HrrghYrVZMJjMXRi7KsbqUa8zMbsv9orqkVRDDYrHoA3rHpC5EZNJy2MTw8Ljc37vp4pzxCmaz+e8AARPJQmKUC76zWEbOYzSa9D3408fRi+l68C+Q35MrucWVT9wHAAAAAElFTkSuQmCC%27%3B%0AMSPaint%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAZZJREFUOE+NkjFowkAUhnVzdMxYoYubdhM6uTWbgQ7tJodDkQwiTuIimUJwEHEKHYRkKMShoFtcCnYoOGY8x4zt1m5/711MjEZbDw6O4973vvfe5QHkaG21G/xcfclzecTz8nDJIgBt3qjCuysi6JTAWkxcRffpbZh+5j55sNAZ7EoR9m11D/jIwerVkiACsJZzADnI0O9N0NYtqPfd6FEKQMHWLABr2OcBk7kPzQwSwKfLEgMC+FM7U96BAQEexxxqx5NZ/FFhX0JTkeV5D/uS5ADSTXLcANpgA2MsNIW+NyrDWoUIXQuo5CSAdjomY1A3F5HmDtCdcYS6hvBaAHoWqE9nAcbrGvWXMpRmAYEbTYB6QiMmCDX4X4D97oDNGPiyhoVQ91ZrcFPF91ycXR/d4R8GpEYW6lQTHS9hLUCBCISuINxupMHx58r+th3AGRbRf27L7KRPEzrOnpmCNHA30sB4UqQBBiXZPAq+CEAQ6oFm1iOA0D9Ve1xKpgRpsTRAvfDfuPx9VPup7CdLiMmx8jn1+N0vr+ulS/dQUwwAAAAASUVORK5CYII%3D%27%3B%0A%0A%0Avar%20directoryService%20%3D%20Components.classes%5B%27@mozilla.org/file/directory_service%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIProperties%29%3B%0Avar%20profileFolder%20%3D%20directoryService.get%28%27ProfD%27%2C%20Components.interfaces.nsIFile%29%3B%0Avar%20profilePath%20%3D%20profileFolder.QueryInterface%28Components.interfaces.nsILocalFile%29.path%3B%0A%20%20%20%20profilePath%20%3D%20profilePath.replace%28/%5C%5C/g%2C%27/%27%29%3B%0A%0A%0A//%20------%20Menu%20Items%20------%0Aapps.push%28%5B%27Show%20Desktop%27%2C%20%20%20%20%20%20%20%20ShowDesk%2C%20%20%27C%3A/Documents%20and%20Settings/%27+login+%27/Application%20Data/Microsoft/Internet%20Explorer/Quick%20Launch/Show%20Desktop.scf%27%5D%29%3B%0Aapps.push%28%5B%27Open%20My%20Computer%27%2C%20%20%20%20Computers%2C%20%27C%3A/WINDOWS/explorer.exe%27%2C%20%27%3A%3A%7B20D04FE0-3AEA-1069-A2D8-08002B30309D%7D%27%5D%29%3B%0Aapps.push%28%27separator%27%29%3B%0Aapps.push%28%5B%27Open%20Drive%20C%3A%27%2C%20%20%20%20%20%20%20WExplorer%2C%20%27C%3A/WINDOWS/explorer.exe%27%2C%20%27C%3A/%27%5D%29%3B%0Aapps.push%28%5B%27Open%20Drive%20D%3A%27%2C%20%20%20%20%20%20%20WExplorer%2C%20%27C%3A/WINDOWS/explorer.exe%27%2C%20%27D%3A/%27%5D%29%3B%0Aapps.push%28%5B%27Open%20Profile%20Folder%27%2C%20WExplorer%2C%20%27C%3A/WINDOWS/explorer.exe%27%2C%20profilePath%5D%29%3B%0Aapps.push%28%27separator%27%29%3B%0Aapps.push%28%5B%27Internet%20Explorer%27%2C%20%20%20IExplorer%2C%20%27C%3A/Program%20Files/Internet%20Explorer/IEXPLORE.EXE%27%5D%29%3B%0Aapps.push%28%5B%27Notepad%27%2C%20%20%20%20%20%20%20%20%20%20%20%20%20MSNotepad%2C%20%27C%3A/WINDOWS/notepad.exe%27%5D%29%3B%0Aapps.push%28%5B%27WordPad%27%2C%20%20%20%20%20%20%20%20%20%20%20%20%20MSWordpad%2C%20%27C%3A/Program%20Files/Windows%20NT/Accessories/wordpad.exe%27%5D%29%3B%0Aapps.push%28%27separator%27%29%3B%0Aapps.push%28%5B%27Control%20Panel%27%2C%20%20%20%20%20%20%20CtrlPanel%2C%20%27C%3A/WINDOWS/system32/control.exe%27%5D%29%3B%0Aapps.push%28%5B%27Add/Remove%20Programs%27%2C%20AddRemove%2C%20%27C%3A/WINDOWS/system32/control.exe%27%2C%20%27C%3A/WINDOWS/system32/Appwiz.cpl%27%5D%29%3B%0Aapps.push%28%27separator%27%29%3B%0Aapps.push%28%5B%27Magnifier%27%2C%20%20%20%20%20%20%20%20%20%20%20Magnifier%2C%20%27C%3A/WINDOWS/system32/magnify.exe%27%5D%29%3B%0Aapps.push%28%5B%27On-Screen%20Keyboard%27%2C%20%20OnScrKeyb%2C%20%27C%3A/WINDOWS/system32/osk.exe%27%5D%29%3B%0Aapps.push%28%5B%27Task%20Manager%27%2C%20%20%20%20%20%20%20%20WinTskMngr%2C%27C%3A/WINDOWS/system32/taskmgr.exe%27%5D%29%3B%0Aapps.push%28%5B%27Calculator%27%2C%20%20%20%20%20%20%20%20%20%20Calculator%2C%27C%3A/WINDOWS/system32/calc.exe%27%5D%29%3B%0Aapps.push%28%5B%27Paint%27%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20MSPaint%2C%20%20%20%27C%3A/WINDOWS/system32/mspaint.exe%27%5D%29%0Aapps.push%28%5B%27Command%20Prompt%27%2C%20%20%20%20%20%20CmdPrompt%2C%20%27C%3A/WINDOWS/system32/cmd.exe%27%5D%29%3B%0A//%20------------------------%0A%0A%0Avar%20nMItem%20%3D%20function%28label%2Cimg%2Cpath%2Cargs%2Cobj%29%20%7B%0A%20%20var%20m%20%3D%20document.createElement%28%27menuitem%27%29%3B%0A%20%20m.setAttribute%28%27label%27%2Clabel%29%3B%0A%20%20m.f%20%3D%20obj.startProcess.bind%28obj%29%3B%0A%20%20m.setAttribute%28%27oncommand%27%2C%27this.f%28%22%27+path+%27%22%2C%22%27+args+%27%22%29%27%29%3B%0A%20%20m.setAttribute%28%27class%27%2C%27menuitem-iconic%27%29%3B%0A%20%20if%20%28%21img%29%20img%20%3D%20Default%3B%0A%20%20m.setAttribute%28%27image%27%2Cimg%29%3B%0A%20%20m.tooltipText%20%3D%20label%3B%0A%20%20return%20m%3B%0A%7D%0A%0Athis.startProcess%20%3D%20function%28path%2Cargs%29%20%7B%0A%20%20var%20file%20%3D%20Components.classes%5B%27@mozilla.org/file/local%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20var%20process%20%3D%20Components.classes%5B%27@mozilla.org/process/util%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIProcess%29%3B%0A%20%20file.initWithPath%28path.replace%28/%5C//g%2C%27%5C%5C%5C%5C%27%29%29%3B%0A%20%20args%20%3D%20args.replace%28/%5C//g%2C%27%5C%5C%27%29%3B%0A%20%20if%20%28args%3D%3D%27%27%29%20%7B%20file.launch%28%29%3B%20return%3B%20%7D%20%0A%20%20process.init%28file%29%3B%0A%20%20process.run%28false%2C%5Bargs%5D%2C1%29%3B%20%0A%7D%0A%0Avar%20mP%20%3D%20document.createElement%28%27menupopup%27%29%3B%0Afor%20%28var%20i%3D0%3B%20i%3Capps.length%3B%20i++%29%20%7B%0A%20%20if%20%28apps%5Bi%5D%20%3D%3D%20%27separator%27%29%20%7B%0A%20%20%20%20mP.appendChild%28document.createElement%28%27menuseparator%27%29%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20if%20%28%21apps%5Bi%5D%20%5B3%5D%29%20apps%5Bi%5D%20%5B3%5D%3D%27%27%3B%0A%20%20%20%20mP.appendChild%28nMItem%28apps%5Bi%5D%20%5B0%5D%2C%20apps%5Bi%5D%20%5B1%5D%2C%20apps%5Bi%5D%20%5B2%5D%2C%20apps%5Bi%5D%20%5B3%5D%2C%20this%29%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.appendChild%28mP%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.orient%20%3D%20%22vertical%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E попробуй сделать без черной стрелочки, а потом выложи сюда. | ||||||||
Anton > 06-04-2008 01:43:04 | ||||||||
AndreyD
Установил с AMO BBCode 0.5.2.2, Custom Buttons 0.0.2.9 с mozdev. Кнопки устанавливаются. pshenk
Объясняю. Надо убрать строку this. type = ... - это уберёт стрелочку, и установить атрибут popup. То есть, оконцовка кода должна выглядеть примерно так: Выделить код Код:this.appendChild(mP); //this.type = "menu"; this. setAttribute ("popup", mP. id = "cbFavoriteApplications-" + this. id); | ||||||||
pshenk > 06-04-2008 03:59:58 | ||||||||
спасибо, заработало | ||||||||
Anton > 06-04-2008 11:15:36 | ||||||||
Можно без +this.id, это так, для пущего избежания коллизий с клонами этой же кнопки. | ||||||||
AndreyD > 06-04-2008 19:28:07 | ||||||||
Anton пишет
Не все кнопки доступны, в частности нет активно используемой кнопки "сделать из выбранного текста ссылку" Вот так это у меня выглядит: А вот мои расширения: | ||||||||
AndreyD > 06-04-2008 20:00:59 | ||||||||
В общем я поковырялся немного следующим образом: Посмотрел исходный код домашней страницы. Выделить код Код:custombutton://%u0421%u0434%u0435%u043B%u0430%u0442%u044C%20%u0438%u0437%20%u0432%u044B%u0431%u0440%u0430%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0441%u0441%u044B%u043B%u043A%u0443%5D%5Bchrome%3A//bbcode/skin/menuicons/url.gif%5D%5Bbbcode.bbcode%28%27urlclip%27%2C%20%27bbcode%27%29%3B Я с помощью этого кода сделал кнопку, которая нормально работает, но не имеет иконки. Дело в том, что кнопка берет иконку из скина BBcode url.gif, а BBcode 0.5.2.2 иконки в формате PNG. Заменил url.gif на url.png и кнопка обрела иконку. | ||||||||
Anton > 06-04-2008 21:26:36 | ||||||||
AndreyD | ||||||||
Infocatcher > 09-04-2008 19:58:19 | ||||||||
Дано: Thunderbird 2.0.0.12, Custom Buttons 0.0.2.9 Выделить код Код:var mp = document.createElement("menupopup"); var mi = document.createElement("menuitem"); mi.setAttribute("label", "test"); mp.appendChild(mi); this.appendChild(mp); this.type = "menu-button"; Наблюдаю растягивание иконки в высоту. И все В Firefox все работает: Выделить код Код: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%3EMenu-button%20test%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%5Bvar%20mp%20%3D%20document.createElement%28%22menupopup%22%29%3B%0Avar%20mi%20%3D%20document.createElement%28%22menuitem%22%29%3B%0Ami.setAttribute%28%22label%22%2C%20%22test%22%29%3B%0Amp.appendChild%28mi%29%3B%0Athis.appendChild%28mp%29%3B%0Athis.type%20%3D%20%22menu-button%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Balert%28event.target.nodeName%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 Судя по DOM Inspector'у, не применяется XBL на toolbarbutton[type="menu-button"] | ||||||||
Anton > 09-04-2008 20:31:01 | ||||||||
Infocatcher
Есть такое дело.
Здесь вот не знаю - может тема или расширение какое-нибудь; у меня DOM Inspector xbl показывает. Я посмотрел несколько стандартных кнопок Thunderbird'а - у них стоит type="menu", не "menu-button". Вот этот тип (#menu-vertical) нет расширяющего биндинга. Исправлю. | ||||||||
Infocatcher > 09-04-2008 21:10:02 | ||||||||
Anton
Эмм... Выделить код Код:<toolbarbutton oncommand="goDoCommand('cmd_saveDefault')" class="toolbarbutton-1" type="menu-button" id="button-save" label="Сохранить" tooltiptext="Сохранить это сообщение" command="cmd_saveDefault"> <menupopup> <menuitem label="Файл..." accesskey="Ф" command="cmd_saveAsFile"/> <menuseparator/> <menuitem label="Черновик" accesskey="Ч" command="cmd_saveAsDraft"/> <menuitem label="Шаблон" accesskey="Ш" command="cmd_saveAsTemplate"/> </menupopup> </toolbarbutton>
Не совсем точно выразился... Смотрю в DOM Inspector'е: атрибут type есть, CSS для toolbarbutton[type="menu-button"] есть. Эффекта нет. А вот на Computed Style глянуть забыл, а то понял бы, что Выделить код Код:toolbarbutton[id^="custombuttons-button"] { -moz-binding: url(chrome://custombuttons/content/toolbarbutton.xml#toolbarbutton) } | ||||||||
Anton > 09-04-2008 21:32:51 | ||||||||
Infocatcher
До исходников птицы далеко ) Я из DOM Inspectora смотрел - type="menu". Может и врёт, конечно.
http://pastebin.mozilla-russia.org/91122 Всё равно разбираться надо, если стандартным кнопкам TB ставишь (через инспектор) type="menu-button" - их не растягивает. С другой стороны, стрелка оказывается в этом случае дальше от кнопки, чем обычно. | ||||||||
Infocatcher > 09-04-2008 22:04:58 | ||||||||
Anton
Именно из него и смотрел...
Гм, хорошо, как создать «обычную» кнопку-меню? И на какой версии Thunderbird все это проверялось (есть у меня смутные подозрения...)? | ||||||||
Anton > 09-04-2008 22:18:54 | ||||||||
Ну очевидно же - type="menu";
2.0.0.12, инспектор 1.8.1.2 Плюс ещё из кнопки Выделить код Код:var bt = document. getElementById ("button-tag"); alert (bt. getAttribute ("type")); alert (bt. type); | ||||||||
Infocatcher > 10-04-2008 00:16:05 | ||||||||
Anton
Ну, type="menu" и type="menu-button" – разные вещи. Например, «Получить новые сообщения» – и кнопка, и список (что я и хотел получить).
В этом и дело. P.S. Версии совпали. Добавлено Thu Apr 10 00:29:21 2008 : Добавлено Thu Apr 10 00:34:06 2008 : | ||||||||
Anton > 10-04-2008 14:08:46 | ||||||||
Почему у меня работает ? | ||||||||
Infocatcher > 10-04-2008 14:31:14 | ||||||||
http://pastebin.mozilla-russia.org/91123 Выделить код Код: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%3EMenu-button%20test%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%5Bvar%20mp%20%3D%20document.createElement%28%22menupopup%22%29%3B%0Avar%20mi%20%3D%20document.createElement%28%22menuitem%22%29%3B%0Ami.setAttribute%28%22label%22%2C%20%22test%22%29%3B%0Amp.appendChild%28mi%29%3B%0Athis.appendChild%28mp%29%3B%0Athis.type%20%3D%20%22menu-button%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20alert%28event.target.nodeName%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.setAttribute%28%22orient%22%2C%20%22vertical%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 После клика по кнопке: Добавлено Thu Apr 10 14:33:55 2008 : | ||||||||
Anton > 10-04-2008 15:01:42 | ||||||||
может быть, это наоборот в 1.5 что-то не поддерживается, или просто разное поведение по умолчанию ? Выделить код Код:this. type = "menu"; this. orient = "horizontal"; // this. setAttribute ("orient", "horizontal"); | ||||||||
Anton > 10-04-2008 15:57:01 | ||||||||
Ошибка связана с отсутствием четырёх строчек в chrome.manifest. В 0.0.3 добавлю недостающие. Выделить код Код:toolbarbutton[id^='custombuttons-button'] { -moz-binding: url("toolbarbutton.xml#toolbarbutton"); } toolbarbutton[id^='custombuttons-button'][type="menu"] { -moz-binding: url("toolbarbutton.xml#menu"); } toolbarbutton[id^='custombuttons-button'][type="menu-button"] { -moz-binding: url("toolbarbutton.xml#menu-button"); } или дополнительный код в init-секцию (только для menu-button) Выделить код Код:if (!this. getAttribute ("cbMenuButtonBindingFix")) { this. setAttribute ("cbMenuButtonBindingFix", "true"); document. addBinding (this, "chrome://custombuttons/content/toolbarbutton.xml#menu-button"); } | ||||||||
Infocatcher > 10-04-2008 23:25:49 | ||||||||
Это смотря как посмотреть... | ||||||||
Anton > 11-04-2008 14:22:14 | ||||||||
Infocatcher
Заинтриговал ты меня этим orient'ом. Объясни на словах, пожалуйста, что значит, что этот атрибуте "не работает" ? | ||||||||
Infocatcher > 11-04-2008 20:38:51 | ||||||||
(Ну вот, опять все дело в словах) На что Firefox 1.5 выдает стрелочку справа, без «this.orient = "vertical";» – стрелочку снизу. Firefox 2.0 на «this.orient = "vertical";» не реагирует никак (стрелочка всегда снизу). | ||||||||
Anton > 11-04-2008 21:00:33 | ||||||||
Очепятка ?
Реагирует же на orient="horizontal" ? | ||||||||
Infocatcher > 11-04-2008 21:26:35 | ||||||||
Да. Исправил.
Реагирует. Это я уже понял, спасибо за помощь. | ||||||||
Anton > 11-04-2008 23:10:47 | ||||||||
Ок. Просто, сейчас не в силах объять всё в комплексе, из-за этого опасения, что я что-то упустил, вплоть до "а не CB ли "ломает" orient ?". Ещё одни часы, как у Яна, но на canvas'е: Выделить код Код: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%3EDigital%20clock%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%5Bfunction%20CanvasPixelPrinter%20%28canvas%29%0A%7B%0A%09this.%20init%20%28canvas%29%3B%0A%7D%0ACanvasPixelPrinter.%20prototype%20%3D%0A%7B%0A%09canvas%3A%20null%2C%0A%09font%3A%20null%2C%0A%09%0A%09_context%3A%20null%2C%0A%09get%20context%20%28%29%0A%09%7B%0A%09%09if%20%28%21this.%20_context%29%0A%09%09%7B%0A%09%09%09if%20%28this.%20canvas%29%0A%09%09%09%09this.%20_context%20%3D%20this.%20canvas.%20getContext%20%28%222d%22%29%3B%0A%09%09%09else%0A%09%09%09%09throw%20%28%22SimpleCanvas%20error%3A%20no%20canvas%22%29%3B%0A%09%09%7D%0A%09%09return%20this.%20_context%3B%0A%09%7D%2C%0A%09%0A%09init%3A%20function%20%28canvas%2C%20font%29%0A%09%7B%0A%09%09if%20%28typeof%20%28canvas%29%20%3D%3D%20%22string%22%29%0A%09%09%09this.%20canvas%20%3D%20document.%20getElementById%20%28canvas%29%3B%0A%09%09else%0A%09%09%09this.%20canvas%20%3D%20canvas%3B%0A%09%7D%2C%0A%09%0A%09putch%3A%20function%20%28ch%29%0A%09%7B%0A%09%09if%20%28this.%20font%20%26%26%20this.%20font%20%5Bch%5D%29%0A%09%09%7B%0A%09%09%09var%20chr%20%3D%20this.%20font%20%5Bch%5D%3B%0A%09%09%09var%20chw%20%3D%20chr%20%5B0%5D%3B%0A%09%09%09var%20chh%20%3D%20chr%20%5B1%5D%3B%0A%09%09%09var%20i%2C%20j%2C%20k%3B%0A%09%09%09var%20line%2C%20cbit%3B%0A%09%09%09this.%20context.%20save%20%28%29%3B%0A%09%09%09for%20%28i%20%3D%200%3B%20i%20%3C%20chh%3B%20i++%29%0A%09%09%09%7B%0A%09%09%09%09this.%20context.%20save%20%28%29%3B%0A%09%09%09%09this.%20context.%20translate%20%28chw%2C%200%29%3B%0A%09%09%09%09line%20%3D%20chr%20%5Bi%20+%202%5D%3B%0A%09%09%09%09for%20%28j%20%3D%200%3B%20j%20%3C%20chw%3B%20j++%29%0A%09%09%09%09%7B%0A%09%09%09%09%09this.%20context.%20translate%20%28-1%2C%200%29%3B%0A%09%09%09%09%09cbit%20%3D%20line%20%26%201%3B%0A%09%09%09%09%09line%20%3E%3E%3D%201%3B%0A%09%09%09%09%09if%20%28cbit%29%0A%09%09%09%09%09%09this.%20context.%20fillRect%20%280%2C%200%2C%201%2C%201%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09this.%20context.%20restore%20%28%29%3B%0A%09%09%09%09this.%20context.%20translate%20%280%2C%201%29%3B%0A%09%09%09%7D%0A%09%09%09this.%20context.%20restore%20%28%29%3B%0A%09%09%09this.%20context.%20translate%20%28chw%20+%201%2C%200%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09%0A%09print%3A%20function%20%28str%29%0A%09%7B%0A%09%09this.%20context.%20save%20%28%29%3B%0A%09%09for%20%28var%20i%20%3D%200%3B%20i%20%3C%20str.%20length%3B%20i++%29%0A%09%09%09this.%20putch%20%28str.%20charAt%20%28i%29%29%3B%0A%09%09this.%20context.%20restore%20%28%29%3B%0A%09%7D%0A%7D%3B%0A%0Afunction%20DigitalClock%20%28canvas%2C%20showSeconds%29%0A%7B%0A%09this.%20showSeconds%20%3D%20showSeconds%3B%0A%09this.%20init%20%28canvas%29%3B%0A%7D%0ADigitalClock.%20prototype%20%3D%0A%7B%0A%09displayColor%3A%20%22black%22%2C%0A%09displayBackground%3A%20%22white%22%2C%0A%09canvasBackground%3A%20%22white%22%2C%0A%09displayBorderColor%3A%20%22black%22%2C%0A%09width%3A%2033%2C%0A%09height%3A%2016%2C%0A%09%0A%09_showSeconds%3A%20false%2C%0A%09set%20showSeconds%20%28val%29%0A%09%7B%0A%09%09this.%20_showSeconds%20%3D%20val%3B%0A%09%09if%20%28val%29%0A%09%09%09this.%20width%20%3D%2049%3B%0A%09%09else%0A%09%09%09this.%20widht%20%3D%2033%3B%0A%09%7D%2C%0A%09%0A%09get%20showSeconds%20%28%29%0A%09%7B%0A%09%09return%20this.%20_showSeconds%3B%0A%09%7D%2C%0A%09%0A%09font%3A%0A%09%7B%0A%09%09%220%22%3A%20%5B5%2C%208%2C%200x0E%2C%200x11%2C%200x11%2C%200x11%2C%200x11%2C%200x11%2C%200x11%2C%200x0E%5D%2C%0A%09%09%221%22%3A%20%5B5%2C%209%2C%200x02%2C%200x06%2C%200x0A%2C%200x12%2C%200x02%2C%200x02%2C%200x02%2C%200x02%5D%2C%0A%09%09%222%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x01%2C%200x02%2C%200x04%2C%200x08%2C%200x10%2C%200x1F%5D%2C%0A%09%09%223%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x01%2C%200x06%2C%200x01%2C%200x01%2C%200x11%2C%200x0E%5D%2C%0A%09%09%224%22%3A%20%5B5%2C%209%2C%200x02%2C%200x06%2C%200x0A%2C%200x12%2C%200x1F%2C%200x02%2C%200x02%2C%200x02%5D%2C%0A%09%09%225%22%3A%20%5B5%2C%209%2C%200x1F%2C%200x10%2C%200x10%2C%200x1E%2C%200x01%2C%200x01%2C%200x11%2C%200x0E%5D%2C%0A%09%09%226%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x10%2C%200x1E%2C%200x11%2C%200x11%2C%200x11%2C%200x0E%5D%2C%0A%09%09%227%22%3A%20%5B5%2C%209%2C%200x1F%2C%200x01%2C%200x01%2C%200x02%2C%200x04%2C%200x04%2C%200x04%2C%200x04%5D%2C%0A%09%09%228%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x11%2C%200x0E%2C%200x11%2C%200x11%2C%200x11%2C%200x0E%5D%2C%0A%09%09%229%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x11%2C%200x11%2C%200x0F%2C%200x01%2C%200x11%2C%200x0E%5D%2C%0A%09%09%22%3A%22%3A%20%5B3%2C%209%2C%200x00%2C%200x02%2C%200x02%2C%200x00%2C%200x00%2C%200x02%2C%200x02%2C%200x00%5D%0A%09%7D%2C%0A%09%0A%09init%3A%20function%20%28canvas%29%0A%09%7B%0A%09%09this.%20__super.%20prototype.%20init.%20apply%20%28this%2C%20%5Bcanvas%5D%29%3B%0A%09%09this.%20context.%20translate%20%2820%2C%2020%29%3B%0A%09%7D%2C%0A%09%0A%09fixmod%3A%20function%20%28str%2C%20len%29%0A%09%7B%0A%09%09while%20%28%28str.%20length%20%25%20len%29%20%21%3D%200%29%0A%09%09%09str%20%3D%20%220%22%20+%20str%3B%0A%09%09return%20str%3B%0A%09%7D%2C%0A%09%0A%09drawBorder%3A%20function%20%28%29%0A%09%7B%0A%09%09this.%20context.%20save%20%28%29%3B%0A%09%09this.%20context.%20fillStyle%20%3D%20this.%20displayBorderColor%3B%0A%09%09this.%20context.%20fillRect%20%280%2C%201%2C%201%2C%20this.%20height%20-%202%29%3B%0A%09%09this.%20context.%20fillRect%20%281%2C%200%2C%20this.%20width%20-%202%2C%201%29%3B%0A%09%09this.%20context.%20fillRect%20%28this.%20width%20-%201%2C%201%2C%201%2C%20this.%20height%20-%202%29%3B%0A%09%09this.%20context.%20fillRect%20%281%2C%20this.%20height%20-%201%2C%20this.%20width%20-%202%2C%201%29%3B%0A%09%09this.%20context.%20restore%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09getTimeString%3A%20function%20%28%29%0A%09%7B%0A%09%09var%20date%20%3D%20new%20Date%20%28%29%3B%0A%09%09var%20h%20%3D%20this.%20fixmod%20%28date.%20getHours%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09var%20m%20%3D%20this.%20fixmod%20%28date.%20getMinutes%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09var%20res%20%3D%20h%20+%20%22%3A%22%20+%20m%3B%0A%09%09if%20%28this.%20showSeconds%29%0A%09%09%7B%0A%09%09%09var%20s%20%3D%20this.%20fixmod%20%28date.%20getSeconds%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09%09res%20+%3D%20%22%3A%22%20+%20s%3B%0A%09%09%7D%0A%09%09return%20res%3B%0A%09%7D%2C%0A%09%0A%09tick%3A%20function%20%28%29%0A%09%7B%0A%09%09this.%20context.%20save%20%28%29%3B%0A%09%09this.%20context.%20scale%20%281%2C%201%29%3B%0A%09%09this.%20context.%20fillStyle%20%3D%20this.%20canvasBackground%3B%0A%09%09this.%20context.%20fillRect%20%280%2C%200%2C%20this.%20width%2C%20this.%20height%29%3B%0A%09%09this.%20context.%20fillStyle%20%3D%20this.%20displayBackground%3B%0A%09%09this.%20context.%20fillRect%20%281%2C%201%2C%20this.%20width%20-%202%2C%20this.%20height%20-%201%29%3B%0A%09%09this.%20drawBorder%20%28%29%3B%0A%09%09this.%20context.%20fillStyle%20%3D%20this.%20displayColor%3B%0A%09%09this.%20context.%20translate%20%283%2C%204%29%3B%0A%09%09var%20date%20%3D%20new%20Date%20%28%29%3B%0A%09%09var%20h%20%3D%20this.%20fixmod%20%28date.%20getHours%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09var%20m%20%3D%20this.%20fixmod%20%28date.%20getMinutes%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09var%20s%20%3D%20this.%20fixmod%20%28date.%20getSeconds%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09this.%20print%20%28this.%20getTimeString%20%28%29%29%3B%0A%09%09this.%20context.%20restore%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09QueryInterface%3A%20function%20%28iid%29%0A%09%7B%0A%09%09if%20%28iid.%20equals%20%28Components.%20interfaces.%20nsISupports%29%20%7C%7C%0A%09%09%09iid.%20equals%20%28Components.%20interfaces.%20nsITimerCallback%29%29%0A%09%09%09return%20this%3B%0A%09%09return%20Components.%20results.%20NS_ERROR_NO_INTERFACE%3B%0A%09%7D%2C%0A%09%0A%09notify%3A%20function%20%28oTimer%29%0A%09%7B%0A%09%09this.%20tick%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09oTimer%3A%20null%2C%0A%09start%3A%20function%20%28%29%0A%09%7B%0A%09%09if%20%28this.%20oTimer%29%0A%09%09%09this.%20stopTimer%20%28%29%3B%0A%09%09this.%20oTimer%20%3D%20Components.%20classes%20%5B%22@mozilla.org/timer%3B1%22%5D.%0A%09%09%09%09%09%20%20%20createInstance%20%28Components.%20interfaces.%20nsITimer%29%3B%0A%09%09this.%20oTimer.%20initWithCallback%20%28this%2C%201000%2C%201%29%3B%09%09%09%0A%09%7D%0A%7D%3B%0ADigitalClock.%20prototype.%20__proto__%20%3D%20CanvasPixelPrinter.%20prototype%3B%0ADigitalClock.%20prototype.%20__super%20%3D%20CanvasPixelPrinter%3B%0Athis.%20htmlNS%20%3D%20%22http%3A//www.w3.org/1999/xhtml%22%3B%0Athis.%20xulNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0Avar%20canvas%20%3D%20this.%20getElementsByTagNameNS%20%28this.%20htmlNS%2C%20%22canvas%22%29%20%5B0%5D%3B%0Aif%20%28%21canvas%29%0A%7B%0A%09var%20canvas%20%3D%20document.%20createElementNS%20%28this.%20htmlNS%2C%20%22canvas%22%29%3B%0A%09this.%20clock%20%3D%20new%20DigitalClock%20%28canvas%2C%20false%29%3B%0A%09canvas.%20setAttribute%20%28%22width%22%2C%20this.%20clock.%20width%29%3B%0A%09canvas.%20setAttribute%20%28%22height%22%2C%20this.%20clock.%20height%29%3B%0A%09canvas.%20setAttribute%0A%09%28%0A%09%09%22style%22%2C%0A%09%09%22min-width%3A%22%20+%20this.%20clock.%20width%20+%0A%09%09%22px%3Bwidth%3A%22%20+%20this.%20clock.%20width%20+%0A%09%09%22px%3Bmax-width%3A%22%20+%20this.%20clock.%20width%20+%0A%09%09%22px%3Bmin-height%3A%22%20+%20this.%20clock.%20height%20+%0A%09%09%22px%3Bheight%3A%22%20+%20this.%20clock.%20height%20+%0A%09%09%22px%3Bmax-height%3A%22%20+%20this.%20clock.%20height%0A%09%29%3B%0A%09this.%20image%20%3D%20%22data%3A%22%3B%0A%09this.%20disabled%20%3D%20true%3B%0A%09this.%20setAttribute%20%28%22class%22%2C%20%22%22%29%3B%0A%09canvas%20%3D%20this.%20appendChild%20%28canvas%29%3B%0A%09var%20pn%20%3D%20this.%20parentNode%3B%0A%09var%20ns%20%3D%20this.%20nextSibling%3B%0A%09var%20button%20%3D%20pn.%20removeChild%20%28this%29%3B%0A%09if%20%28ns%29%0A%09%09pn.%20insertBefore%20%28button%2C%20ns%29%3B%0A%09else%0A%09%09pn.%20appendChild%20%28button%29%3B%0A%7D%0Athis.%20clock.%20start%20%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/***********************************%0A%20*%20Digital%20Clock%20custom%20button%20%20%20%20%20*%0A%20*%20on%20the%20canvas%20element%20base%20%20%20%20%20%20*%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*%0A%20*%20Author%3A%20Anton%20Glazatov%20%28c%29%202008%20*%0A%20***********************************/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E | ||||||||
Infocatcher > 11-04-2008 23:34:32 | ||||||||
Нет, Firefox 2.0 действительно перестал реагировать на orient="vertical" (это я еще давно заметил). Примером служит Launchy (content/main.xul): Выделить код Код:<toolbarbutton id="launchy-toolbar-browser" type="menu" orient="vertical" class="launchy-toolbar toolbarbutton-1 chromeclass-toolbar-additional" label="&launchy.label;" tooltiptext="&launchy.label;"> <menupopup onpopupshowing="launchyContext.doContext(this);"> </menupopup> </toolbarbutton> (в fx 1.5 сейчас не проверить, но, насколько я помню, треугольничек менюшки был справа, а не снизу, как в 2.0.)
Обязательно! | ||||||||
Infocatcher > 15-04-2008 00:51:13 | ||||||||
Нашел довольно странную фичу. Выделить код Код:this.image = this.parentNode.getAttribute("iconsize") == "large" ? "file:///J:/somePath/24.png" : "file:///J:/somePath/16.png"; , а поле «Картинка» оставить пустым, то при открытии редактора в этом поле появится текущая картинка. Демонстрация: Выделить код Код: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%3E%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bfile%3A///J%3A/Soft_distrib/Browsers/Firefox/FF_extensions/_ext_temp/Close_All_Tabs/close_all_tabs-1.1-fx/chrome/skin/closeall24.png%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.image%20%3D%20this.parentNode.getAttribute%28%22iconsize%22%29%20%3D%3D%20%22large%22%0A%09%3F%20%22file%3A///J%3A/Soft_distrib/Browsers/Firefox/FF_extensions/_ext_temp/Close_All_Tabs/close_all_tabs-1.1-fx/chrome/skin/closeall24.png%22%0A%09%3A%20%22file%3A///J%3A/Soft_distrib/Browsers/Firefox/FF_extensions/_ext_temp/Close_All_Tabs/close_all_tabs-1.1-fx/chrome/skin/closeall16.png%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20tabs%20%3D%20gBrowser.mTabContainer.childNodes%3B%0Afor%20%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20i--%29%0A%09gBrowser.removeTab%28tabs%5Bi%5D%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 P.S. Самое простое, ИМХО, решение, при создании кнопки: А при открытии редактора считывать button.getAttribute("cbb-image") | ||||||||
Infocatcher > 15-04-2008 01:57:53 | ||||||||
Кнопка для закрытия вкладок: Выделить код Код: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%3E%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFCSURBVHjarFE7TsNAEH27ygFwFAkJUcMBDKlD4c5pE8miIyegymGS1hJ1fIoEDkCPkFa2+PgCy8xmbCzvJgLBk55n/PZ5NH4LawFiRJzZCbUWsWiHGNtb55vJd9AAImKCSzxgj0QYyxmkxp0z4Mb5uY8UT8QJCaf0ekY8l8rv97ii55MbsMYjPqkzxFfii9RnzDVUu0EIw171QQtoWMyPDHnrVR8f9H0b6gW1+2CXxEQCjjrBx6IvXbCT73DxH7fDwaJzA0NZ/f3IL3o+RbR9Fw1WSv1cH7Cy225b4Xo8BhurqvJWUGpkQ37NAjeN0DWEEPIPjDEoNhukJHCFMc5Q13VwSMivWUynU6xXK1eNDCnL0mMzpO9XfGssNLhbLFzaRVF4W6Rp6lIN+W1o7TzPPS3LsuAvKjJb/BEHN/kNvgQYAML08vlxNjfkAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%09var%20br%20%3D%20getBrowser%28%29%3B%0A%09var%20cTab%20%3D%20br.mCurrentTab%3B%0A%09switch%28e.button%29%20%7B%0A%09%09case%200%3A%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09var%20left%20%3D%20false%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28left%29%0A%09%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09left%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09break%3B%0A%09%09case%201%3A%0A%09%09%09br.removeAllTabsBut%28br.mCurrentTab%29%3B%0A%09%09break%3B%0A%09%09case%202%3A%0A%09%09%09if%28e.shiftKey%20%7C%7C%20e.ctrlKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%0A%09%09%09%09break%3B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09break%3B%0A%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%7D%0A%09%7D%0A%7D%0A//%20Hide%20context%20menu%20in%20Linux%3A%0Athis.onmousedown%20%3D%20function%28e%29%20%7B%0A%09if%28e.button%20%3D%3D%202%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%29%20%7B%0A%09%09var%20cm%20%3D%20document.getElementById%28this.getAttribute%28%22context%22%29%29%3B%0A%09%09cm.collapsed%20%3D%20true%3B%0A%09%09var%20func%20%3D%20function%28%29%20%7B%0A%09%09%09cm.removeEventListener%28%22popupshowing%22%2C%20func%2C%20false%29%3B%0A%09%09%09setTimeout%28function%28%29%20%7B%20cm.hidePopup%28%29%3B%20cm.collapsed%20%3D%20false%3B%20%7D%2C%200%29%3B%0A%09%09%7D%3B%0A%09%09cm.addEventListener%28%22popupshowing%22%2C%20func%2C%20false%29%3B%0A%09%7D%0A%7D%5D%5D%3E%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 ЛКМ: закрыть все вкладки слева от текущей Контекстное меню доступно по (Ctrl, Shift, Alt или Meta)+ПКМ. Танцы с бубном вокруг this.onmousedown – заради Linux'а, показывающего контекстное меню сразу после нажатия правой кнопки мыши (по идее, должно работать Заодно вопрос: нельзя ли не показывать контекстное меню с помощью менее извращенных методов? [upd] | ||||||||
Anton > 15-04-2008 17:46:17 | ||||||||
Что касается label, то изменения уже давно в cvs, а насчёт image не знаю, подумаю.
Обычно очищается атрибут context, а обработчик onclick показывает контекстное меню, когда надо. Пример: Выделить код Код: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%3EScroll%20page%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAIEAAKPdO4i/JsH5XAAAACH5BAEAAAMALAAAAAAQABAAAQItnD8RyBgAVnNAiDjNsxa3zXXSV13jBHpZepJippUqKrcHGM53+a41HNOtbIMCADs%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bfunction%20Scroller%20%28oDocument%29%0A%7B%0A%09this.%20oDocument%20%3D%20oDocument%3B%0A%09this.%20oDocument.%20defaultView.%20addEventListener%20%28%22keydown%22%2C%20this%2C%20false%29%3B%0A%7D%0AScroller.%20prototype%20%3D%0A%7B%0A%09oDocument%3A%20null%2C%0A%09oTimer%3A%20null%2C%0A%09%0A%09_nSpeed%3A%201%2C%0A%09_nDelay%3A%20150%2C%0A%09%0A%09get%20_window%20%28%29%0A%09%7B%0A%09%09return%20this.%20oDocument.%20defaultView%3B%0A%09%7D%2C%0A%09%0A%09revertScroll%3A%20function%20%28%29%0A%09%7B%0A%09%09if%20%28this.%20_nSpeed%20%3E%200%29%0A%09%09%09this.%20_nSpeed%20%3D%20-this.%20_nSpeed%3B%0A%09%7D%2C%0A%09%0A%09setSpeed%3A%20function%20%28nSpeed%29%0A%09%7B%0A%09%09this.%20_nSpeed%20%3D%20nSpeed%3B%0A%09%7D%2C%0A%09%0A%09setDelay%3A%20function%20%28nDelay%29%0A%09%7B%0A%09%09this.%20stopScroll%20%28%29%3B%0A%09%09this.%20_nDelay%20%3D%20nDelay%3B%0A%09%7D%2C%0A%09%0A%09scroll%3A%20function%20%28%29%0A%09%7B%0A%09%09var%20win%20%3D%20this.%20_window%3B%0A%09%09if%20%28%28%28this.%20_nSpeed%20%3C%200%29%20%26%26%20%28win.%20pageYOffset%20%3E%200%29%29%20%7C%7C%0A%09%09%09%28%28this.%20_nSpeed%20%3E%200%29%20%26%26%20%28win.%20pageYOffset%20%3C%20%28this.%20oDocument.%20height%20-%20win.%20innerHeight%29%29%29%29%0A%09%09%09this.%20_window.%20scrollBy%20%280%2C%20this.%20_nSpeed%29%3B%0A%09%09else%0A%09%09%09this.%20stopScroll%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09stopScroll%3A%20function%20%28%29%0A%09%7B%0A%09%09if%20%28this.%20oTimer%29%0A%09%09%7B%0A%09%09%09this.%20oTimer.%20cancel%20%28%29%3B%0A%09%09%09this.%20oTimer%20%3D%20null%3B%0A%09%09%7D%0A%09%7D%2C%0A%09%0A%09startScroll%3A%20function%20%28%29%0A%09%7B%0A%09%09if%20%28this.%20oTimer%29%0A%09%09%09this.%20stopTimer%20%28%29%3B%0A%09%09this.%20oTimer%20%3D%20Components.%20classes%20%5B%22@mozilla.org/timer%3B1%22%5D.%0A%09%09%09%09%09%20%20%20createInstance%20%28Components.%20interfaces.%20nsITimer%29%3B%0A%09%09this.%20oTimer.%20initWithCallback%20%28this%2C%20this.%20_nDelay%2C%201%29%3B%09%09%09%0A%09%7D%2C%0A%09%0A%09QueryInterface%3A%20function%20%28iid%29%0A%09%7B%0A%09%09if%20%28iid.%20equals%20%28Components.%20interfaces.%20nsISupports%29%20%7C%7C%0A%09%09%09iid.%20equals%20%28Components.%20interfaces.%20nsITimerCallback%29%29%0A%09%09%09return%20this%3B%0A%09%09return%20Components.%20results.%20NS_ERROR_NO_INTERFACE%3B%0A%09%7D%2C%0A%09%0A%09notify%3A%20function%20%28oTimer%29%0A%09%7B%0A%09%09this.%20scroll%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09handleEvent%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20stopScroll%20%28%29%3B%0A%09%7D%0A%7D%3B%0A%0Athis.%20doScroll%20%3D%20function%20%28oEvent%29%0A%7B%0A%09var%20scroller%20%3D%20this.%20getScroller%20%28%29%3B%0A%09if%20%28oEvent.%20button%20%3D%3D%201%29%0A%09%7B%0A%09%09scroller.%20stopScroll%20%28%29%3B%0A%09%09return%3B%0A%09%7D%0A%09if%20%28oEvent.%20button%20%3D%3D%202%29%0A%09%09scroller.%20revertScroll%20%28%29%3B%0A%09scroller.%20startScroll%20%28%29%3B%0A%7D%3B%0A%0Athis.%20scrollPage%20%3D%20function%20%28evt%29%0A%7B%0A%09var%20scroller%20%3D%20this.%20getScroller%20%28%29%3B%0A%09scroller.%20setSpeed%20%281%29%3B%0A%09scroller.%20setDelay%20%28150%29%3B%0A%09if%20%28evt.%20button%20%3D%3D%202%20%26%26%20evt.%20shiftKey%29%0A%09%09this.%20showPopup%20%28this%29%3B%0A%09else%0A%09%09this.%20doScroll%20%28evt%29%3B%0A%7D%3B%0Athis.%20scrollPageFast%20%3D%20function%20%28evt%29%0A%7B%0A%09var%20scroller%20%3D%20this.%20getScroller%20%28%29%3B%0A%09scroller.%20setSpeed%20%2810%29%3B%0A%09scroller.%20setDelay%20%2850%29%3B%0A%09this.%20doScroll%20%28evt%29%3B%0A%7D%3B%0Athis.%20getScroller%20%3D%20function%20%28%29%0A%7B%0A%09var%20ct%20%3D%20getBrowser%20%28%29.%20selectedTab%3B%0A%09if%20%28%21ct.%20cbScrollButton%29%0A%09%09ct.%20cbScrollButton%20%3D%20new%20Scroller%20%28getBrowser%20%28%29.%20contentDocument%29%3B%0A%09return%20ct.%20cbScrollButton%3B%0A%7D%3B%0A%0Athis.%20showPopup%20%3D%20function%20%28node%29%0A%7B%0A%09var%20popup%20%3D%20document.%20getElementById%20%28%22custombuttons-contextpopup%22%29%3B%0A%09var%20x%20%3D%20node.%20boxObject.%20x%3B%0A%09var%20y%20%3D%20node.%20boxObject.%20y%20+%20node.%20boxObject.%20height%3B%0A%09document.%20popupNode%20%3D%20node%3B%0A%09popup.%20showPopup%20%28node%2C%20x%2C%20y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%7D%0Athis.%20setAttribute%20%28%22onclick%22%2C%20%22this.scrollPage%28event%29%3B%22%29%3B%0Athis.%20setAttribute%20%28%22ondblclick%22%2C%22this.scrollPageFast%28event%29%22%29%3B%0Athis.%20setAttribute%20%28%22context%22%2C%20%22%22%29%3B%0Athis.%20tooltipText%20%3D%20%27Down/Menu/Up%20%7E%20Fast%20Down//Fast%20Up%27%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/**%0A%20*%20@author%20Anton%20Glazatov%20%28c%29%2003.2008%0A%20*%20Scroll%20page%20button%20based%20on%20existing%20button%20idea%0A%20*%20new%20implementation%0A%20*%0A%20*%20Left%20click%20-%20scroll%20slow%20down%0A%20*%20Middle%20click%20-%20stop%20scroll%0A%20*%20Right%20click%20-%20scroll%20slow%20up%0A%20*%20Left%20double%20click%20-%20scroll%20fast%20down%0A%20*%20Right%20double%20click%20-%20scroll%20fast%20up%0A%20*%20Shift%20+%20Right%20click%20-%20Custom%20Buttons%20context%20menu%0A%20*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5BLeft%20click%20-%20scroll%20slow%20down%0A%0AMiddle%20click%20-%20stop%20scroll%0A%0ARight%20click%20-%20scroll%20slow%20up%0A%0ALeft%20double%20click%20-%20scroll%20fast%20down%0A%0ARight%20double%20click%20-%20scroll%20fast%20up%0A%0AShift%20+%20Right%20click%20-%20Custom%20Buttons%20context%20menu%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E
Себе ? | ||||||||
Infocatcher > 15-04-2008 18:16:31 | ||||||||
Ага, ясно. А варианты с сохранением способа показа контекстного меню есть? (Т.е. сразу по нажатию / после отпускания кнопки.)
Ммм? Не понял... Закрытие вкладок №2: Выделить код Код: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%3E%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFCSURBVHjarFE7TsNAEH27ygFwFAkJUcMBDKlD4c5pE8miIyegymGS1hJ1fIoEDkCPkFa2+PgCy8xmbCzvJgLBk55n/PZ5NH4LawFiRJzZCbUWsWiHGNtb55vJd9AAImKCSzxgj0QYyxmkxp0z4Mb5uY8UT8QJCaf0ekY8l8rv97ii55MbsMYjPqkzxFfii9RnzDVUu0EIw171QQtoWMyPDHnrVR8f9H0b6gW1+2CXxEQCjjrBx6IvXbCT73DxH7fDwaJzA0NZ/f3IL3o+RbR9Fw1WSv1cH7Cy225b4Xo8BhurqvJWUGpkQ37NAjeN0DWEEPIPjDEoNhukJHCFMc5Q13VwSMivWUynU6xXK1eNDCnL0mMzpO9XfGssNLhbLFzaRVF4W6Rp6lIN+W1o7TzPPS3LsuAvKjJb/BEHN/kNvgQYAML08vlxNjfkAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.setAttribute%28%22context%22%2C%20%22%22%29%3B%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09var%20br%20%3D%20getBrowser%28%29%3B%0A%09var%20cTab%20%3D%20br.mCurrentTab%3B%0A%09switch%28e.button%29%20%7B%0A%09%09case%200%3A%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09var%20left%20%3D%20false%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28left%29%0A%09%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09left%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09break%3B%0A%09%09case%201%3A%0A%09%09%09br.removeAllTabsBut%28br.mCurrentTab%29%3B%0A%09%09break%3B%0A%09%09case%202%3A%0A%09%09%09if%28e.shiftKey%20%7C%7C%20e.ctrlKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%0A%09%09%09%09this.showPopup%28e%29%3B%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09break%3B%0A%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%7D%0A%09%7D%0A%7D%3B%0Athis.showPopup%20%3D%20function%28e%29%20%7B%0A%09var%20popup%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0A%09var%20x%20%3D%20e.clientX%2C%20y%20%3D%20e.clientY%3B%0A%09var%20node%20%3D%20e.target%3B%0A%09document.popupNode%20%3D%20node%3B%0A%09popup.showPopup%28node%2C%20x%2C%20y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%7D%3B%5D%5D%3E%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 (вроде, через event.clientX (Y) больше похоже на обычное поведение | ||||||||
Anton > 15-04-2008 18:30:58 | ||||||||
Я проблемой мануального отображения контекстного меню в практике конструирования кнопок не занимался никогда. this.showPopup - это из кнопок LouCypher'а. То есть, готового кода нет у меня и не попадалось.
Ну, там было что-то вроде file:///D | ||||||||
Infocatcher > 15-04-2008 19:10:03 | ||||||||
Anton пишет
Было, но текст, который ты процитировал («Забыл сконвертировать картинку в base64... – исправил.»), я добавил вместе с исправлением кода кнопки. Это меня и смутило.
Ясно. | ||||||||
Infocatcher > 02-05-2008 00:44:03 | ||||||||
Написал скрипт для вставки URL (а также времени сохранения) в сохраняемую страницу. Выделить код Код:if(getBrowser().currentURI.spec == "about:blank") BrowserOpenFileWindow(); else { try { ILO.indicatorClick(3); } catch(e) {} var doc = content.document; var html = doc.getElementsByTagName("html"); if(html.length) { html = html[0]; var loc = doc.location.href; var info = " Saved from (" + new Date().toLocaleString() + "): " + loc + " "; var comm = doc.createComment(info); var fch = html.firstChild; html.insertBefore(doc.createTextNode("\n"), fch); html.insertBefore(comm, fch); html.insertBefore(doc.createTextNode("\n"), fch); } saveDocument(doc); } P.S. Ох уж эта жуткая тавтология с «сохранить» | ||||||||
Infocatcher > 10-05-2008 23:40:03 | ||||||||
Кнопка для Thunderbird, показывающая меню, аналогичное Настройки – Формат. Как и оригинальное меню, доступно только из HTML-редактора. По клику средней кнопкой мыши переключает на простой текст. | ||||||||
Anton > 11-05-2008 01:26:39 | ||||||||
Единственная кнопка, которой я регулярно пользуюсь как обычный пользователь Выделить код Код: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%3EsetBackgroundColor%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%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Btry%0A%7B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09doc.%20body.%20style.%20backgroundColor%20%3D%20%22rgb%28236%2C233%2C216%29%22%3B%0A%09doc.%20body.%20style.%20lineHeight%20%3D%20%222%22%3B%0A%09doc.%20body.%20style.%20textIndent%20%3D%20%223em%22%3B%0A%09doc.%20body.%20style.%20textHeight%20%3D%20%223%25%22%3B%0A%09doc.%20body.%20style.%20textAlign%20%3D%20%22justify%22%3B%0A%7D%0Acatch%20%28e%29%20%7B%7D%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 [ul][uli]Делает цвет фона страницы таким же, как у панелей инструментов[/uli][uli]Выравнивает текст по ширине[/uli][uli]Увеличивает отступы первой строки в абзацах[/uli][uli]Увеличивает междустрочный интервал[/uli][/ul] UPD 26.05.08 - поправил код кнопки, так как первоначальный не выравнивал текст по ширине | ||||||||
Infocatcher > 11-05-2008 01:49:25 | ||||||||
Anton, а не проше ли делать так: http://pastebin.mozilla-russia.org/91285? P.S. Спасибо за апдейт | ||||||||
Anton > 11-05-2008 02:17:21 | ||||||||
Infocatcher пишет
В данном конкретном и простом случае - конечно проще. Но с некоторых пор я не сторонник использования with, да и не ставил себе целью "заточку" кода этой кнопки. В исходном варианте там была всего одна строка - на background. Конструкцию with лучше совсем не использовать - поверь моему опыту как разработчика Pastebin Panel.
Я не привык к использованию закладурок. Не помню уже точно по какой причине - скорее всего сложность отладки. | ||||||||
Infocatcher > 11-05-2008 02:33:27 | ||||||||
Anton
А можно поподробнее? А то у меня никаких идей, кроме создания «лишней» области видимости, нет...
Ну, с этим все просто. Редактируется скрипт в нормальном виде, потом удаляются комментарии, пробелы, переводы строк и все это запускается черех адресную строку. Добавлено Sun May 11 02:35:58 2008 : | ||||||||
Anton > 11-05-2008 03:05:17 | ||||||||
Вот для примера: http://pastebin.mozilla-russia.org/91287 | ||||||||
Infocatcher > 12-05-2008 07:48:02 | ||||||||
Anton
И в таких случаях лучше обозвать pastebinRDFService каким-нибудь prs (var prs = pastebinRDFService;) и так дальше и обращаться? И, кстати, как определить, что «попало в переменную» – ссылка на исходный объект или значение? Т.е. не вредно ли делать штуки вида var d = document; ? | ||||||||
Anton > 12-05-2008 14:20:13 | ||||||||
Хотя бы так. Можно и в развёрнутом виде. В конкретном случае с pastebin panel - ещё и переработать интерфейсы компонентов - не очень удачные.
Иногда просто необходимо. | ||||||||
Anton > 14-05-2008 21:46:01 | ||||||||
Кнопка для Thunderbird, сохраняет выделенные сообщения в указанный каталог на диске Выделить код Код: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%3EsaveSelected%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%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20Cc%20%3D%20Components.%20classes%3B%0Avar%20Ci%20%3D%20Components.%20interfaces%3B%0Afunction%20getDirectory%20%28%29%0A%7B%0A%09var%20fp%20%3D%20Cc%20%5B%22@mozilla.org/filepicker%3B1%22%5D.%0A%09%09%20createInstance%20%28Ci.%20nsIFilePicker%29%3B%0A%09fp.%20init%20%28window%2C%20%22%22%2C%20fp.%20modeGetFolder%29%3B%0A%09var%20res%20%3D%20fp.%20show%20%28%29%3B%0A%09return%20fp.%20file%3B%0A%7D%0Afunction%20saveAsFile%20%28uri%2C%20dir%29%0A%7B%0A%09var%20content%20%3D%20%22%22%3B%0A%09var%20subject%20%3D%20messenger.%20messageServiceFromURI%20%28uri%29.%0A%09%09%20%20%20%20%20%20messageURIToMsgHdr%20%28uri%29.%20mime2DecodedSubject%3B%0A%09filename%20%3D%20GenerateValidFilename%20%28subject%2C%20%22.eml%22%29%3B%0A%09var%20msgService%20%3D%20messenger.%20messageServiceFromURI%20%28uri%29%3B%0A%09var%20msgStream%20%3D%20%20Cc%20%5B%22@mozilla.org/network/sync-stream-listener%3B1%22%5D.%20createInstance%20%28%29%3B%0A%09var%20consumer%20%3D%20msgStream.%20QueryInterface%20%28Ci.%20nsIInputStream%29%3B%0A%09var%20scriptInput%20%3D%20Cc%20%5B%22@mozilla.org/scriptableinputstream%3B1%22%5D.%0A%09%09%09%20%20createInstance%20%28%29%3B%0A%09var%20scriptInputStream%20%3D%20scriptInput.%20QueryInterface%28Ci.%20nsIScriptableInputStream%29%3B%0A%09scriptInputStream.%20init%20%28consumer%29%3B%0A%09try%0A%09%7B%0A%09%09msgService.%20streamMessage%20%28uri%2C%20msgStream%2C%20msgWindow%2C%20null%2C%20false%2C%20null%29%3B%0A%09%7D%0A%09catch%20%28ex%29%0A%09%7B%0A%09%09alert%28%22error%3A%20%22+ex%29%0A%09%7D%0A%09scriptInputStream.%20available%20%28%29%3B%0A%09while%20%28scriptInputStream.%20available%20%28%29%29%0A%09%7B%0A%09%09content%20%3D%20content%20+%20scriptInputStream.%20read%20%28512%29%3B%0A%09%7D%0A%09var%20subject%20%3D%20msgService.%20messageURIToMsgHdr%20%28uri%29.%0A%09%09%20%20%20%20%20%20mime2DecodedSubject%3B%0A%09var%20fileName%20%3D%20GenerateValidFilename%20%28subject%2C%20%22.eml%22%29%3B%0A%09var%20file%20%3D%20dir.%20clone%20%28%29%3B%0A%09file.%20append%20%28fileName%29%3B%0A%09var%20foStream%20%3D%20Cc%20%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D.%0A%09%09%20%20%20%20%20%20%20createInstance%20%28Ci.%20nsIFileOutputStream%29%3B%0A%09var%20flags%20%3D%200x02%20%7C%200x08%20%7C%200x20%3B%0A%09foStream.%20init%20%28file%2C%20flags%2C%200664%2C%200%29%3B%0A%09foStream.%20write%20%28content%2C%20content.%20length%29%3B%0A%09foStream.%20close%20%28%29%3B%0A%7D%0Avar%20dir%20%3D%20getDirectory%20%28%29%3B%0Aif%20%28%21dir%29%0A%09return%3B%0Avar%20messageArray%20%3D%20GetSelectedMessages%28%29%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20messageArray.%20length%3B%20i++%29%0A%09saveAsFile%20%28messageArray%20%5Bi%5D%2C%20dir%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 | ||||||||
Infocatcher > 14-05-2008 21:59:57 | ||||||||
Anton P.S. Ты в аське, указанной в профиле, бываешь? | ||||||||
Anton > 14-05-2008 22:15:48 | ||||||||
Чёрт его знает, за всеми кнопками не уследишь - мне не попадалась, это я точно знаю, иначе бы не стал писать, взял бы готовую.
Я последние год-полтора im практически не пользуюсь. Если надо - давай договоримся о времени. | ||||||||
Infocatcher > 14-05-2008 22:41:12 | ||||||||
Я это к тому, что удобно было бы добавить функционал простого добавления кнопок в виде «URL'а» в расширение.
Ну вот, теперь мне мои вопросы кажутся не сильно важными. | ||||||||
Anton > 14-05-2008 23:01:10 | ||||||||
Ага, понял. А "Клонировать" -> "Обновить" ? Для пункта меню надо будет делать дополнительный контроллер, проверяющий содержимое буфера обмена. Не то, чтобы лень - сомнения в целесообразности. | ||||||||
vv07 > 20-05-2008 16:51:59 | ||||||||
Друзья!Следующая ситуация.Есть кнопка из гугля,для перевода,на яве Выделить код Код:javascript:var t=((window.getSelection&&window.getSelection())||(document.getSelection&&document.getSelection())||(document.selection&&document.selection.createRange&&document.selection.createRange().text));var e=(document.charset||document.characterSet);if(t!=''){location.href='http://translate.google.com/translate_t?text='+t+'&hl=ru&langpair=auto|en&tbb=1&ie='+e;}else{location.href='http://translate.google.com/translate?u='+escape(location.href)+'&hl=ru&langpair=auto|en&tbb=1&ie='+e;}; Но она скорее не кнопка,а ссылка.Сидит в закладках.Может кто сообразит,как из нее сделать нормальную кнопку,для панели инструментов.У меня мозгов не хватает. Добавлено Tue May 20 16:52:56 2008 : Выделить код Код:javascript:var t=((window.getSelection&&window.getSelection())||(document.getSelection&&document.getSelection())||(document.selection&&document.selection.createRange&&document.selection.createRange().text));var e=(document.charset||document.characterSet);if(t!=''){location.href='http://translate.google.com/translate_t?text='+t+'&hl=ru&langpair=auto|en&tbb=1&ie='+e;}else{location.href='http://translate.google.com/translate?u='+escape(location.href)+'&hl=ru&langpair=auto|en&tbb=1&ie='+e;}; Добавлено Tue May 20 16:53:37 2008 : | ||||||||
Anton > 20-05-2008 17:12:48 | ||||||||
Проще всего записать потом текст закладурки и, наконец поставить закрывающую кавычку. | ||||||||
vv07 > 20-05-2008 17:42:22 | ||||||||
сделал так но не пашет.Что еще добавить треба?Или вообще не так сделал? getBrowser (). contentDocument. location. href = "javascript:var t | ||||||||
Anton > 20-05-2008 19:02:22 | ||||||||
В конце должна быть кавычка. То есть, пишем текст а между кавычками вставляем текст закладурки | ||||||||
vv07 > 21-05-2008 01:08:09 | ||||||||
| ||||||||
Anton > 21-05-2008 02:22:13 | ||||||||
[code]code[/code] А чем кнопка лучше закладок ? | ||||||||
vv07 > 21-05-2008 04:43:22 | ||||||||
Ну мне так удобнее.Легче в профили переносить.Да и люблю я,что бы у меня постоянно все было.Короче спасибо вам большое.Если что,надеюсь мона обратиться за помощью? | ||||||||
Infocatcher > 21-05-2008 08:50:05 | ||||||||
Тем, что можно сделать открытие в новой вкладке Перевести через Google: Выделить код Код: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%3EGoogle%20Translate%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%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20t%20%3D%20content.getSelection%28%29.toString%28%29%3B%0Avar%20c%20%3D%20content.document.characterSet%3B%0Avar%20loc%20%3D%20content.location.href%3B%0AgetBrowser%28%29.loadOneTab%28%0A%09t%0A%09%09%3F%20%22http%3A//translate.google.com/translate_t%3Ftext%3D%22%20+%20t%20+%20%22%26hl%3Dru%26langpair%3Den%7Cru%26tbb%3D1%26ie%3D%22%20+%20c%0A%09%09%3A%20/%5Ehttps%3F%3A%5C/%5C//i.test%28loc%29%0A%09%09%09%3F%20%22http%3A//translate.google.com/translate%3Fu%3D%22%20+%20escape%28loc%29%20+%20%22%26hl%3Dru%26langpair%3Den%7Cru%26tbb%3D1%26ie%3D%22%20+%20c%0A%09%09%09%3A%20%22http%3A//translate.google.com/translate_t%3Fhl%3Dru%22%2C%0A%09null%2C%20null%2C%20null%2C%20false%20/*%20load%20in%20background%20*/%2C%20false%0A%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 | ||||||||
vv07 > 21-05-2008 10:18:09 | ||||||||
К сожалению,ваша кнопка не работает.Сдесь я выложил рабочие Добавлено Wed May 21 10:20:38 2008 :
Уважаемый гуру.Так как,я не силен в кодах и сам могу,с бооооооольшим трудом,собрать ченить простое,нельзя ли сделать,своего рода,собрание разных,готовых кнопок?Типа текстового файлика. | ||||||||
Anton > 21-05-2008 12:40:55 | ||||||||
Infocatcher
Это понятно, что функционал может быть шире. Я закладурками не пользуюсь, но, их ведь легче сделать, если они уже есть готовые. vv07
Можно, конечно. Если что, я сейчас разработчик этого расширения, так что деваться мне некуда. Правда, положительный результат заранее обещать не могу.
Может быть, кнопка была установлена неправильно ? Код Infocatcher'а надо поместить в адресную строку браузера и нажать enter. Потом "вытащить" установленную кнопку из диалога настройки панелей инструментов.
Мне это не нравится. Так что будьте любезны, без лишних церемоний.
Не понял, о чём речь. Если нужны готовые кнопки, то можно найти в этой теме, на офф. сайте расширения - http://xsms.nm.ru/custombuttons, у Dark-Demon'а на сайте - http://dark-demon.nm.ru, на сайте поддержки (адрес - у меня в профиле), на старом форуме расширения - http://custombuttons.phpbbnow.com, на форуме расширения custombuttons2 - http://custombuttons2.com. Кое-какие кнопки с последних двух сайтов могут не работать. | ||||||||
Infocatcher > 21-05-2008 21:14:44 | ||||||||
Anton
Кстати, нашел багу. При таком добавлении кнопки теряются переводы строк в коде. Наблюдаю на fx 2.0.0.14 + cb 0.0.3 при добавлении моей кнопки для перевода через Гугл. | ||||||||
Anton > 21-05-2008 21:33:35 | ||||||||
И не только при таком. Давно видел. На основном профиле. В соседнем - не теряются. | ||||||||
Anton > 21-05-2008 22:16:26 | ||||||||
p.s. | ||||||||
Infocatcher > 21-05-2008 23:29:23 | ||||||||
Anton
Да, он самый.
И соответствует ли вообще... | ||||||||
Anton > 21-05-2008 23:39:42 | ||||||||
Либо noscript.fixURI.exclude <- ^custombutton://[\s\S]*$
Похоже на то. Попробую отписать разработчику NoScript. | ||||||||
Infocatcher > 21-05-2008 23:50:58 | ||||||||
^custombutton://\S+$ (там действительно не бывает пробелов?) | ||||||||
Anton > 21-05-2008 23:56:34 | ||||||||
Привычка. | ||||||||
Infocatcher > 22-05-2008 00:00:52 | ||||||||
Поподробнее бы... Меня несколько иного рода причины интересуют. | ||||||||
Anton > 22-05-2008 00:25:10 | ||||||||
Чтобы не думать что из себя представляет строка поиска. | ||||||||
vv07 > 22-05-2008 03:27:07 | ||||||||
Уважаемый Антон.Я думаю вы знаете о таком расширении,как Fast Dial. | ||||||||
Anton > 22-05-2008 11:23:12 | ||||||||
Короче, без эпитетов. По теме: Выделить код Код: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%3EAddToFastDial%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%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bdocument.%20getElementById%20%28%22fastdial-add-menu%22%29.%20doCommand%20%28%29%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 Думаю, спросить у самого разработчика Fast Dial было бы короче, да и код он бы дал более корректный. | ||||||||
vv07 > 22-05-2008 12:29:02 | ||||||||
Блин,да не умею обращаться к незнакомым людям просто. | ||||||||
Anton > 22-05-2008 13:01:17 | ||||||||
vv07
Ничего страшного. Я не требую и мне так комфортней. Да и 45 мне ещё не скоро, так что, если ситуация верна, то мне даже и не положено. | ||||||||
vv07 > 22-05-2008 13:17:05 | ||||||||
За ум положено | ||||||||
Anton > 23-05-2008 00:06:43 | ||||||||
Infocatcher пишет
Оказывается, это список протоколов, разделённый чем угодно, кроме латинских букв, цифр и знака подчёркивания. Так что можно просто custombutton. | ||||||||
vv07 > 23-05-2008 02:46:15 | ||||||||
Есть замечательное расширение profileswitcher,позволяющее работать с профилями.Переключение через контекстное меню.Вопрос,можно ли создать кнопку с выпадающим меню выбора профилей?А еще более сложное дело,создание кнопки позволяющей запускать разные профили без перезагрузки лисы | ||||||||
Infocatcher > 23-05-2008 04:07:55 | ||||||||
vv07
Примерно так: http://pastebin.mozilla-russia.org/91358 (код добавлять в секцию «инициализация»). var _href = null; – открывать текущую ссылку Если аргументы не нужны, надо указать «[]»: Выделить код Код:var _href = null; var _paths = ["c:\\Program Files\\Opera\\Opera.exe", "c:\\Program Files\\Opera 9.5 beta\\opera.exe"]; var _args = [[], []]; var _labels = ["Opera", "Opera 9.50 b2"]; ["-no-remote", "-p", "MyProfile"] запустит штуку вида var _labels = ["2.0 MyProfile", "3.0 RC 1 fx3"]; – названия пунктов меню Только ссылки с кириллицей заглючат... | ||||||||
vv07 > 23-05-2008 05:02:37 | ||||||||
Так откуда мне код взять?По ссылке или сдесь.Не совсем понятно.Однако спасибо за оперативность. | ||||||||
Infocatcher > 23-05-2008 07:52:40 | ||||||||
Код брать по ссылке. А «здесь» – пояснения по его использованию. Добавлено Fri May 23 07:58:48 2008 : | ||||||||
vv07 > 23-05-2008 12:36:29 | ||||||||
Кнопка заработала,но как то не так.В выпадающем показывает My profile и не существущую тройку.При клике на My profile,открываеться менеджер профилей.Не совсем то,что я имел в виду,но тоже пойдет | ||||||||
Anton > 23-05-2008 14:58:22 | ||||||||
Можно. Вот, для работы в паре с profileswitcher: Выделить код Код: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%3EprofilesMenu%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%5Bvar%20_this%20%3D%20this%3B%0Athis.%20cbInit%20%3D%20function%20%28%29%0A%7B%0A%09var%20profileLauncherPrefs%20%3D%20Components.%20classes%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%0A%09%09%09%09%09%09%09%20%20%20getService%20%28Components.%20interfaces.%20nsIPrefBranch%29%3B%0A%09var%20popup%20%3D%20document.%20createElement%20%28%22menupopup%22%29%3B%0A%09if%20%28profileLauncherPrefs.%20getPrefType%20%28%22profiles.list%22%29%20%21%3D%200%29%0A%09%7B%0A%09%09var%20profilesListPref%20%3D%20profileLauncherPrefs.%0A%09%09%09%09%09%09%09%20%20%20getComplexValue%20%28%22profiles.list%22%2C%20Components.%20interfaces.%20nsISupportsString%29.%0A%09%09%09%09%09%09%09%20%20%20data%3B%0A%09%09var%20profilesList%20%3D%20profilesListPref.%20split%20%28%22%2C%2C%2C%22%29%3B%0A%09%09for%20%28i%20%3D%200%3B%20i%20%3C%20profilesList.%20length%3B%20i++%29%0A%09%09%7B%0A%09%09%09var%20item%20%3D%20document.%20createElement%20%28%22menuitem%22%29%3B%0A%09%09%09item.%20setAttribute%20%28%22label%22%2C%20profilesList%20%5Bi%5D%29%3B%0A%09%09%09item.%20setAttribute%20%28%22oncommand%22%2C%20%22profileLauncher.runScript%28this%29%22%29%3B%0A%09%09%09popup.%20appendChild%28item%29%3B%0A%09%09%7D%0A%09%7D%0A%09_this.%20appendChild%20%28popup%29%3B%0A%09_this.%20type%20%3D%20%22menu%22%3B%0A%09_this.%20orient%20%3D%20%22horizontal%22%3B%0A%7D%3B%0AsetTimeout%20%28this.%20cbInit%2C%202000%29%3B%5D%5D%3E%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
Это мне не по силам.
Так: Выделить код Код: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%3Estatusbar%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%5Bvar%20sb%20%3D%20document.%20getElementById%20%28%22status-bar%22%29%3B%0Asb.%20hidden%20%3D%20true%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20sb%20%3D%20document.%20getElementById%20%28%22status-bar%22%29%3B%0Asb.%20hidden%20%3D%20%21sb.%20hidden%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 ? | ||||||||
vv07 > 23-05-2008 16:05:02 | ||||||||
Ух ти,круть. | ||||||||
Infocatcher > 23-05-2008 20:16:53 | ||||||||
vv07
Угу. Так оно, конечно, удобнее, но поиск и парсинг profiles.ini несколько труднее, чем запуск предопределенных пользователем приложений. Выделить код Код:var _href = null; // URL or null for use current page var _paths = ["c:\\Program Files\\Mozilla Firefox\\firefox.exe", "c:\\Program Files\\Mozilla Firefox\\firefox.exe"]; var _args = [["-no-remote", "-p", "Default"], ["-no-remote", "-p", "Default User centurion"]]; var _labels = ["Default", "Default User centurion"]; Добавлено Fri May 23 20:21:04 2008 : ? | ||||||||
Anton > 23-05-2008 21:21:16 | ||||||||
Я попробовал без тайм-аута - не работает, пока не будет открыто меню profileswitcher, ну и поставил с запасом - а вдруг с нулевым тайм-аутом не сработает - чтобы не проверять лишний раз. load-обработчик снимать надо, и вообще нетривиально. | ||||||||
vv07 > 24-05-2008 01:54:49 | ||||||||
Вы сделали даже больше чем я ожидал.Ваша кнопка переключает профили,без перезагрузки и практически незаметно Добавлено Sat May 24 02:03:30 2008 : Выделить код Код:var _href = null; // URL or null for use current page var _paths = ["c:\\Program Files\\Mozilla Firefox\\firefox.exe", "c:\\Program Files\\Mozilla Firefox\\firefox.exe"]; var _args = [["-no-remote", "-p", "Default"], ["-no-remote", "-p", "Default User centurion"]]; var _labels = ["Default", "Default User centurion"]; this.runProcess = function(path, args) { args.push(_href ? _href : content.location.href); var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(!file.exists() || !file.isExecutable() || /\.lnk$/i.test(path)) { alert("Invalid path!\n" + path); return; } var process = Components.classes["@mozilla.org/process/util;1"] .getService(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); }; var mp = document.createElement("menupopup"); var template = document.createElement("menuitem"); template.className = "menuitem-iconic"; template.setAttribute("oncommand", "_this.runProcess(this.path, this.args);"); var mi; for(var i = 0, len = _paths.length; i < len; i++) { mi = template.cloneNode(true); mi.path = _paths[i]; mi.args = _args[i]; mi.label = _labels[i]; mi.tooltipText = _paths[i] + " " + _args[i].join(" "); mi.setAttribute("image", "moz-icon:file://" + _paths[i]); mi._this = this; mp.appendChild(mi); } this.appendChild(mp); this.type = "menu"; this.orient = "horizontal"; Два моих профиля.Так вот,при переключении запускаеться профиль,но и второй остаеться в работе | ||||||||
Infocatcher > 24-05-2008 03:16:02 | ||||||||
Это эффект от запуска firefox.exe с аргументом -no-remote.
Я так понимаю, что profileswitcher (это только предположение – код расширения не смотрел) таким образом обходит описанную выше трудность с -no-remote. | ||||||||
vv07 > 24-05-2008 15:05:14 | ||||||||
Друзья!Есть кнопка для скрытия панели закладок,но она работает только до перезапуска лисы.Не могли бы вы поправить код,как сделали мне для статусстроки.Что бы она отключала панель закладок,до ручного включения,по аналогу статус. Надоел уже наверное со своими просьбами | ||||||||
Anton > 24-05-2008 16:16:54 | ||||||||
vv07
Хотел объяснить как внести соответствующие исправления в кнопку для скрытия строки состояния, но обнаружил в ней экспериментальные ляпы. Так что код для той кнопки я исправил (см. выше). Для скрытия панели закладок: Выделить код Код: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%3Epersonalbar%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%5Bthis.%20cbInit%20%3D%20function%20%28%29%0A%7B%0A%09var%20mb%20%3D%20document.%20getElementById%20%28%22PersonalToolbar%22%29%3B%0A%09mb.%20collapsed%20%3D%20true%3B%0A%7D%3B%0AsetTimeout%20%28this.%20cbInit%2C%201000%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20mb%20%3D%20document.%20getElementById%20%28%22PersonalToolbar%22%29%3B%0Amb.%20collapsed%20%3D%20%21mb.%20collapsed%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 | ||||||||
vv07 > 24-05-2008 16:36:14 | ||||||||
Да незнаю.Она у меня прекрасно работает | ||||||||
Anton > 24-05-2008 16:59:50 | ||||||||
Лишний код. | ||||||||
vv07 > 26-05-2008 08:49:36 | ||||||||
Еще один вопрос.Я создал новую панель.Обозвал ее work.Возможно ли создание кнопки,для скрытия таких панелей.Второе,надыбал интересный стиль,который автоскрывает панель навигации.По аналогу возможно ли создание кнопки,при запуске которой,автоскрывались все панели или хотя бы на каждую панель,отдельный кнопарь. | ||||||||
Anton > 26-05-2008 09:15:20 | ||||||||
Для work: Выделить код Код: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%3EhideWork%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%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20tb%20%3D%20document.%20getElementById%20%28%22__customToolbar_work%22%29%3B%0Atb.%20collapsed%20%3D%20%21tb.%20collapsed%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
F11 ? Выделить код Код: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%3EhideToolbars%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%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28typeof%20%28this.%20cbCollapse%29%20%3D%3D%20%22undefined%22%29%0A%09this.%20cbCollapse%20%3D%20true%3B%0Aelse%0A%09this.%20cbCollapse%20%3D%20%21this.%20cbCollapse%3B%0Avar%20tbs%20%3D%20document.%20getElementsByTagName%20%28%22toolbar%22%29%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20tbs.%20length%3B%20i++%29%0A%7B%0A%09if%20%28%21this.%20cbCollapse%29%0A%09%7B%0A%09%09tbs%20%5Bi%5D.%20collapsed%20%3D%20tbs%20%5Bi%5D.%20cbHideToolbars%3B%0A%09%7D%0A%09else%0A%09%7B%0A%09%09tbs%20%5Bi%5D.%20cbHideToolbars%20%3D%20tbs%20%5Bi%5D.%20collapsed%3B%0A%09%09tbs%20%5Bi%5D.%20collapsed%20%3D%20true%3B%0A%09%7D%0A%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5BF12%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 | ||||||||
vv07 > 26-05-2008 09:53:36 | ||||||||
Нет Антон.F11 полноэкранный режим,не то.Мне нужно скрытие панелей,но при этом сама лиса оставалась в режиме обычного окна. Добавлено Mon May 26 10:07:00 2008 :
По идее то что и нужно.Только вот F12 зря назначена.При ее нажатиивозникают следующие проблемы.Не могу писать в форуме,не работает копирование,остальное пока незнаю.Надо придумать другой вариант. | ||||||||
Anton > 26-05-2008 10:20:33 | ||||||||
Так можно назначить любую другую. "Редактировать" -> "Настройки кнопки"
Ну вот, я себе эту кнопку поставил, нажал F12, залогинился, пишу ответ, всё в порядке, копирование работает. | ||||||||
vv07 > 26-05-2008 11:00:19 | ||||||||
Спасибо | ||||||||
MILLennium > 26-05-2008 12:37:05 | ||||||||
спасибо за програмульку. кнопка: Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EsetBackgroundColor%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%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Btry%20%7B%20%20var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%20%20doc.%20body.%20style.%20backgroundColor%20%3D%20%22rgb%28236%2C233%2C216%29%22%3B%20%20doc.%20body.%20style.%20lineHeight%20%3D%20%222%22%3B%20%20doc.%20body.%20style.%20textIndent%20%3D%20%223em%22%3B%20%20doc.%20body.%20style.%20textHeight%20%3D%20%223%25%22%3B%20%7D%20catch%20%28e%29%20%7B%7D%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 попробуйте здесь нажать её мои данные: Adblock Plus 0.7.5.4 | ||||||||
Anton > 26-05-2008 13:15:29 | ||||||||
Если это вообще можно назвать багом, то это баг форума, а не кнопки. ) | ||||||||
MILLennium > 26-05-2008 13:47:07 | ||||||||
Я просто не силен в программировании. Поэтому написал, что в кнопке. Так как после её нажатия такое происходит. Потом если нажать "Обновить(F5)", то всё на свои места становится | ||||||||
Anton > 26-05-2008 14:00:51 | ||||||||
Это происходит ещё до её нажатия. Впрочем, неважно. Всё равно, кнопка не предназначена для использования на всех подряд сайтах и работает как заявлено не везде. И, кстати, раз уж выдался случай, тот код я дополнил, так как исходный не выравнивал текст по ширине, хотя в сопутствующем списке это задекларировано. | ||||||||
Infocatcher > 27-05-2008 01:49:35 | ||||||||
Пытаюсь клонировать вкладку в Firefox 3.0 RC1: В 2.0 все просто: – без setInterval P.S. Как клонировать историю вкладки? Добавлено Tue May 27 01:50:56 2008 : | ||||||||
Anton > 27-05-2008 11:09:50 | ||||||||
Не знаю, идея только одна - ставить onload и мотать когда он случится, если вкладка открывается не в фоне, если в фоне - ждать пока пользователь переключится в эту вкладку, потом перематывать.
Примерно так: http://pastebin.mozilla-russia.org/91380 | ||||||||
Infocatcher > 27-05-2008 23:59:37 | ||||||||
Гм, странно... не получается. На что load-обработчик вешать-то? Придумал еще один способ: Выделить код Код:var int = setInterval( function() { if(win.scrollMaxY >= cy) { // cx и cy – положение прокрутки исходной вкладки win.scrollTo(cx, cy); clearInterval(int); } }, 20 ); Но на ссылках вида http://example.com/page.html#someanchor получаем фокусировку на someanchor. Расковырял FireGestures. Выделить код Код:var orgTab = gBrowser.mCurrentTab; var newTab = gBrowser.duplicateTab(orgTab); gBrowser.moveTabTo(newTab, ++orgTab._tPos); gBrowser.selectedTab = newTab; // переключаемся на вкладку (в оригинале не было) Сам метод: http://pastebin.mozilla-russia.org/91384 P.S. А что делает QueryInterface? P.P.S. Правда, еще можно расковырять Tab Mix Plus или Tab Clicking Options и посмотреть, как сделано там (первое не смотрел, а в последнем много кода, ссылающегося на другие функции расширения, – решил, что проще и интереснее поиграться самому | ||||||||
Anton > 28-05-2008 01:23:52 | ||||||||
На browser. По идее, нужны три обработчика. Первый ждёт окончания загрузки документа, и если по загрузке вкладка активная, делает перемотку, а если она в фоне, ставит второй обработчик, который делает перемотку при переключении на вкладку. Третий обработчик снимает все обработчики при закрытии вкладки.
Открывает интерфейс, если объект его реализует. | ||||||||
MILLennium > 28-05-2008 13:28:40 | ||||||||
а киньте ссылку на него(на кнопку) | ||||||||
Anton > 28-05-2008 13:50:44 | ||||||||
MILLennium | ||||||||
macuache > 29-05-2008 19:55:23 | ||||||||
Можно код от кнопки Downloads ? | ||||||||
Anton > 30-05-2008 03:57:18 | ||||||||
macuache | ||||||||
macuache > 30-05-2008 13:42:55 | ||||||||
Это кнопка, которая открывает окно текущих закачек. Она есть в стандартном наборе. но из-за того, что Firefox может показывать только или крупные, или маленькие значки, то мне нужна отдельно данная кнопка, чтобы я мог вынести ее на отдельную панель. | ||||||||
Infant > 30-05-2008 14:50:50 | ||||||||
macuache
В стандартном наборе чего? | ||||||||
macuache > 30-05-2008 15:05:49 | ||||||||
в стандартном наборе иконок Fierfox. | ||||||||
Infant > 30-05-2008 15:07:31 | ||||||||
Точно есть! В тройке посмотрел. А в двойке она у меня на боковой панели стоит — подумал что нету. | ||||||||
Anton > 30-05-2008 15:16:46 | ||||||||
macuache Выделить код Код: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%3EDownloads%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2AUeCw4tnZYFJAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAd5JREFUeNpj3LZlx38GMoGntzsjC4jh4eX27f9/4s358+cvw97d+7hAbLABIM07t+/mItYAdw8XOJsFWcLMWe/btbfnGLSEjRiQaVtpb7ia7Vt3oliEYsCNd+cZbr67xMDEyIhCIxuADlAM+HSemUuawYjh0yMGBmR6+6OdBAz4/5/LztHuGycHO16///37lwEa2FyoBgABMxMT2CCPBenfcBmwK3kOmP4HNAhuwM7z94GhysDAxsoCNnXv09MMkyPaGQTZ2Bne//rKwMHMynDm3V2GmdtnA6PvD1gTKGxA+jy9oS4ILe5A2CrEwPAdCP/8+MHw/e9Phhuf3jIcfnMZLBVe0glT9U1WRBhsISMQWyA7k6lRb+/U0BYGZlZmhhUP9jNcfn+LgfHvf4Y3tx4y/Ku/5IysFhgeJ1hABEyAsUH3a1NgOQMfOxfDtc8PGZ5+vMFgzsXDIMz8k8HERYIh9///vf/rL3GjWIgSSj95p/Wsms1w/+tLhnOvzzDocnAymPL+YDDh+8pQv/U9A8MPnmnoAcuIngcYE/SyGH587M5OiwYG5C0Gvt9vGcpmvwaGMlPp/wWXCBsAFqy06mZ+/CULHv+yPNP+tx8rxRa1jLhyISMjIzxwkcMJHQAA3rPFyJ2JzWoAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.%20setAttribute%20%28%22ondragdrop%22%2C%20%22nsDragAndDrop.drop%28event%2C%20DownloadsButtonDNDObserver%29%3B%20event.stopPropagation%28%29%22%29%3B%0Athis.%20setAttribute%20%28%22ondragover%22%2C%20%22nsDragAndDrop.dragOver%28event%2C%20DownloadsButtonDNDObserver%29%3B%20event.stopPropagation%28%29%22%29%3B%0Athis.%20setAttribute%20%28%22ondragenter%22%2C%20%22nsDragAndDrop.dragEnter%28event%2C%20DownloadsButtonDNDObserver%29%3B%20event.stopPropagation%28%29%22%29%3B%0Athis.%20setAttribute%20%28%22ondragexit%22%2C%20%22nsDragAndDrop.dragExit%28event%2C%20DownloadsButtonDNDObserver%29%3B%20event.stopPropagation%28%29%22%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BtoOpenWindowByType%28%27Download%3AManager%27%2C%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%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%27chrome%3A//mozapps/content/downloads/downloads.xul%27%2C%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%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%27chrome%2Cdialog%3Dno%2Cresizable%27%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 она ? | ||||||||
macuache > 30-05-2008 17:01:05 | ||||||||
Да. это она. Спасибо. Один только момент. У меня стоит расширение Download Manager Tweak, которое позволяет открывать во вкладке окно загрузок. Сейчас, когда я жду на эту кнопку, у меня открывается отдельное окно. Что нужно добавить, чтобы окно это открывалось во вкладке при нажатии на эту кнопку ? | ||||||||
Anton > 30-05-2008 17:17:51 | ||||||||
Надо заменить код в разделе "Код" следующей строкой: | ||||||||
macuache > 30-05-2008 17:37:05 | ||||||||
Отлично. Спасибо! | ||||||||
pshenk > 01-06-2008 16:11:57 | ||||||||
Anton | ||||||||
Anton > 01-06-2008 17:45:14 | ||||||||
Идея не очень понятна. Наверное возможно, другой вопрос, сколько усилий потребуется на реализацию той или команды. Вот за bookmarks я точно браться не буду, может, ещё за что-то "в лоб" не решаемое. Спрашивай, помогу чем смогу. Добавлено Sun Jun 1 17:49:37 2008 : | ||||||||
pshenk > 03-06-2008 01:44:27 | ||||||||
ну там не то. там просто кнопка с кодом "Tools", причем когда ее ставишь tools на menubare изчезает. меня интересует возможно ли вообще создание: код кнопки в коде кнопки. очень удобно было бы если все созданые кнопки хранились в одной единственной кнопке-popupe. ну например Выделить код Код: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/%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADL0lEQVR42l2SW2gTWRjH/2eSySSTTpMmvdq4vaSW9UbByFKWFfsourKLFlnqpV5a6CJeH9wHxUof1IcFK7ugVATBuw8uFpbdJdBFRbu7UtSSWopKm2raJG0SJpk26Uxmzp6pXch24Dtwvvn+v/PdCJZ/u0I17DzHrIVZ7ZJ3AobxCHruMn75YpzFtDNfLx6sKyXLxO2eYmvv11vL3b5aBzgLB5vNgpySx+hIGo+fJpCU1Zuind87rxpgAA8pEDd5JMurjkM+xNMq0lkCjufB23jY7TxWeDmUFxn4tT+KQMCFC70TJqCyEPDn/raqlhU+AYm4Ckni4SkVkMsTpBgsqxFIIsHqSoAQis6jowWApdcb/E78M5SioLoZNSg6hC+/anZjc4sHhtWK6QyFwAMNpRwOnywEtA6fA8d1F/Fz0wvpVEybS17GQFs/1h9zYdWe8zWflXx3+oc6TMzqyBkUjWVWdB0vBOx8fbtIVP1OGg7GYkYIwV0PmVfHjqEmWIWB1m1l7sYGEayni8Yx1dkfwwWALf0r/VXRknhUJxmFTOJpV2ops2/ZeYKVZAEo97+JUUPGw437yZsGMWVzlbmXr4OWzUCVkz1NEVxkV2eHBG9tsddTIgiiIzPFHZzBMPPnybtADa070gcsLLCk84DDAeVFEOFgX6gvrnzzs4wYC1SDVdhHi1dWVmSjnTC0v5s+Yp9Z5idAG3skGgFrP0hdPVIDdxB5/cfzREa5y9bld0KwW+CwVXK6V7nKqks+jI+c2jSFKwwwvwiob7sAzMZBs/Og1AD1epFXFWTePENuNgxDV2GTKiD5A4j99QD3x8MbTyfBxoDsIsB/+KrZFND370DlBKtEg87uuiCAOp0MoIOzi1DfD+Ht45vXmiM4w8Rmo7VFQHlzK2Ze9KN6y/ewiW7o05PQ0jLyDJRnC8RXVYMmI5h8cmvk0ofZHdcziDKxwswgo2s8VNPU0JisdDe6ino8NevXSvUBOHyfm9sINR6GPDaIxMTLwUtTyoEbCuJLYs2cFhn2ofdKGj8xM1NS71Vgg8+C7XaCdWz4xXMUg7KB0LYofmP/F8zGmXH/jftfxs1e2EaqEmMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20confirmRestart%20%3D%20window.confirm%28%27Are%20you%20sure%20you%20want%20to%20restart%20firefox%3F%27%29%3B%0Aif%28%21confirmRestart%29%20return%3B%0A%20%20%20%20%0Avar%20appStartup%20%3D%20Components.interfaces.nsIAppStartup%3B%0A//%20if%20%28canQuitApplication%28%29%29%20//%20uncomment%20if%20using%20zeniko%27s%20Session%20Manager%0AComponents.classes%5B%22@mozilla.org/toolkit/app-startup%3B1%22%5D%0A.getService%28appStartup%29.quit%28appStartup.eRestart%20%7C%20appStartup.eAttemptQuit%29%3B%20%20%20%20%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%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%3EEnlarge%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAGJ0lEQVR4nJWUa2xcVxHH/3Pu7t2H17tre9f2xqnjZ2IntosdGhQ7tDQ4pVWVJm0jRCG8lKaAEBKVqGoJFYRUQVOUfkC1VBEitVERFVLVVEBKK0igkUzqYkqwrTiJH+vHrl/78j68u3fvneFDneCStmr/X2Y0Gs1P/3POHBIRbNajL+/2a6RWLWHb5rpGyrSEg785OpLCp5Dt/wsEOt7XelAd7HgMRAQAEBGcvTyohqbeOA7gl58GQJsdHDuzW9k0W/7J+36tR7JX8M/Ji/z6n5ppIeonv1dD0VhHqeSMgyCmKVUifL7vM02Hzwzsz34iBxZbd7fU3K45bS4kcgsYDy9i366v0tMn+2Dy+z0CVIEAOwFPnf7HF6PJQjuAdz+Rg0df3DP29d4f7bLpGt6bv4gLb/Vj4Ju9ePd6HNm8CZAFZgXTFOi64r72anXyt5cgStle+9l91ocB1I3k6Kmu2xTZ2n2OasSLYbw1FOXOliBKliCRKYIFEAHEAlgEiXQJBYPR1VKF189P9H+Ug5sAsBrorr+TlvLTWM5EsLqwVx34bCMm5tPMAHRdw+x8ErPRGBy6HQBjbC6Fu7ob0L296rmPBXx5sN1hsvmd2oqtFC/OIpmNI+RpRKCyDAuxjGIBfC47/jUexr+vzMLjtoNF0exyjiu8ZWisKd/5sQC2+OEt/noUKY11SWFkpAmP3NuJifk1FEzAoWnIF0yU+VNw+1IwDAN2jWCYlro8k8SD/Z0ou+fkTz4SQKSeD1XXaUlrEQUrh+mrVfhcRx3G51IQEfg8DkyGF7GtYwwNHWOYml2Bz+MkQGE0nERHczUaqn3f/VDAoZPNnSSa1+FVyFtr+Mv5Re7Z0YR4uohYqgiNFNy6hutzKygaw9bW5ghm5pZR5tSgiDi+ZvBifB17O+v9tYee/8KtDkQ9W1tXrRWRRiqbQHS2hb6yvwsXx1dFKYLXbZd0OofoSuLtdGoNRjEPwzaJbHodHpddaUqpv4/F5P7eZleFx378FgCL1TN5fQYX/noJw0Mz8NCOuNfjxvRKBkQEn8dJ4cgKvB73oAhO/Gd4Gso+hOjSKio9TjAEc6t5OJ0OBLyO7vZHTgU+APjDE9M15wZm6NzADM1NPP69e/f2VE5E02CTYNcUu2yCmUgs4/J4R/74xPSPzw3MEIrHW+aXVjMuO8GmaczMGJ3L4q7djTsMwZFbLvmG/GXavtatATW9lAOLiL/MoUyjgKnIygt/fuaBqRt9b554YGo6mnhBuABfmV2xkEwv51FXW6WC5dq+zTNv/kV3PPbSnu0h/35DNCSzJRYI+b26XJ2cofBcrLfr6OBgIm3YBCB/uV6KLCdun51fRkVNncytrNNazuBcQVehgHf/rm+c3jN+5tjwBwDF7FpPV2traHnNRL4kyqkpvrsjqFqCmnQ11fQpTfqEBUKAEoIlglDQB7/XQ6PhNc4XWEWSjO31VaHJcLQHwP8Ad37/ZZ/P43iossKPcMoAW4yCEM4OLaDEIprNTsyAiAgzSARgEb6ymlXMGRimBRYgli2iscIDt9PxUPexF3/33ulvrdkAYGkx3vD53fUHoOlIZjIsADLrJg1PppiZiYWYBbAsIQHYEgFbTAxiWICmgex2xalMCUaFR9XXVhwYvbbUAOCyDQAIxsGGuiBiORN5w1KmJTi8J8Ck7IqZxBJWLAIRiGmJYmEwk4iwYovAbPDv30koG4BYuoRgsBK4Nn//TUDA736qOhjE2EIepiXY4ndiNhpXZ157G3aHTkIEYgB0MwGJEAMoGQYO9/eqrX4HIskiVtMl7AxVobxc/ymAn6u2I8+2NW4L6iZsSGVLMEqC5lo3/vbO9Rh0b3dXW4Pa1bDFtaOp1tVSX+lq3BJ0NdQGXNvqql0jL/2ASHfdcWl0MtkUcoNFkCtYMERDKFiptx850UZ7v/2r7C8e/1pZIp2DCKA0hctXF3HqlVefi7z5zJMAajf2ZfPOEAALgABYvu3AwImHHzz4w9b6GpRMC8ICl9OF06+czVDLoaeFLYlZIorePwVWuiOQHHsjkLh2wQHAvfHaNAD2jWgCKG3E9cqd/cXKti+tWKVCnCCEjTmaosB/AY6S/w6waB16AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BZoomManager.prototype.getInstance%28%29.enlarge%28%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%3EReduce%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAGD0lEQVR4nJWVW2xcVxWG/7XPnDNzZsYz4/FMYsexY8eX2KnjxClNRZwWcBNSVNK0aURVEYVL6wJCSOWpCKkg1Io2RY0QwihSsSBVUSMQIvBAaFUoSVFKQtMS2VbTxHfHt7l77j5zzlo82A2xIISul7W1tPV/+pf2r00igo9TT7x6Z0gjFXeEXTfPNVK2Ixz9+ZFLmZvnLnzMIlB/b9sBdaDrSRARAEBEcPrygDo/dqYfwI/W3P9fDr507C/+v703fpqUus/logQEpOvlGtPtRzpbQX1dRg4+MCY7Nt2t3BTGyXeetWzHNgePXuL/y4Huoq2P7e+877mv9sJmRABAVmxAJ+CZwXdoZOJtaaydR8TwIuiJarHc9T4Ab94W8Oizb+i2ZV342sHt+NmZa8iXbIAcMCvYtsAwCPf3tuOlXz2hJjf/HhIFGiKtWjy78GMAXR/pqFsBfvPGcN+21igqjiCVWwYLIAKIA7AIUtkKyhaju7UGb11M8pK9CI9Ph+PYnUde7m64LWDHlsjxfZ9oxpWZLDMAw9AwNZPG1FwSbkMHwBiezuBTPU1IzexRqWIMRUmgOlxNLPzd2wKaooGtkbAP1xN5YiEOmjreG5nCPz+Ygt+rg0VhajGP6oAPGwJNyBYyKHMRwRqTHJv7vzDQ6b4lIPDZ49977P5tuDKzhFJFxK0pVSrbCIeXEaguwLIs6JqCZTMuT6Tx8N5tKEwcRckpQBkCj2mAHX7kloCGqP/rd3fVY2R6JTNBvxujk/No755CR/cExqZiCPo9ABSGJtPoalmHs+/GAHIAAOH1AQ1EP/2vgIZDA5++Z2dzKJldRiJjsUaKvIaGa9MxbGyZxlLpz87E9CJ8Hg2KgOTSMuaTRexoacY/zgkDQFXIBxEJHHypZdt/AHweV/+jfZ3m2yNxUQoq4NUomy3Adk0gW0wglU5iLp45l88W4TcNaErD2eGEfH53B+IzW6hcsqAIiNSGNAFeXAPYfvQXkdqQ2RPwezEey4GIEPSbmJyNQfRzePfCCITl+aDPHJhbiCPs94AhmI6X4PG44UF78v3zC7h49gpmxmNglp1rglYR5/Dn9nRuuTKXBdsE3aPYdImamE3kFPf3/PEHD44BwP6n/9AysxDPtbdsqnJpGpeWLRqazuPeHV3h19586htjp/pPfKS5xkHIp+1p2xhR4wsFsIiEfG5lW2WMzcZO/OmFFXEAeP3Yg2Pjc6kTwmUEfbpiIRlfLKG+tkZFq7Q9N2vecHDXkyd3tdeF+izRkM5XWCAUChjy4egETU4ndncfGRhIZS2XABSqMiqzi6ntUzOLqF5fL9OxIi0VLC6UDVUXCfTdcXRw18grj19cA1jOL+3sbmurW1yyUaqI8miKP9MVVa1RTbo3r+9VmvQKC4QAJQRHBHXRIEIBPw1NLnGpzGo2zWhvrKkbnZzbCeDfgHu/+Wow6HcfCleHMJmxwA6jLITT56+jwiKaSydmQESEGSQCsAh/EM8r5hws2wELkMgvo7naD6/Hfajn8V++9v7gl5dcALAwn2y6587GfdAMpHM5FgC5ok0XRzPMzMRCzAI4jpAA7IiAHSYGMRxA00C6rjiTq8Cq9qvG2up9Q1cXmgBcdgEAwTrQVB9FomCjZDnKdgQP7YowKV0xkzjCikUgArEdUSwMZhIRVuwQmC3+9YWUcgFIZCuIRsPA1ZkHbgAiIe8z66JRDF8vwXYEG0IeTM0l1Su/OwfdbZAQgRgA3TiARIgBVCwLD+3drTaG3JhNLyOerWBrXQ2qqozvA/ih6jj8Ykfzpqhhw4VMvgKrImip9eKvF64lYAR6ujua1B1NG8wtm2vN1saw2bwhajbVRsxN9evMSye/RWSYd/19aDS9uc4LFkGh7MASDXXRsNF5+FgHffIrP8k//+0v+lLZAkQApSlc/nAeL5/67fHZ1194GkDtal5uzgwBcLDygy427PvOsUcePvBUW+N6VGwHwgLTY2Lw1OkctR58TtiRhCOiaGULrAx3JD18JpK6+pYbgHf1tWkA9NVuA6is9mJ4697lcMf+mFMpJwlCWNXRFEX+BSKX6svvCNyqAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BZoomManager.prototype.getInstance%28%29.reduce%28%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 возможно ли это забить в попап? | ||||||||
Anton > 04-06-2008 11:20:11 | ||||||||
pshenk
Я несколько сомневаюсь в юзабельности такого решения, но, может быть ошибаюсь. "Забить" несколько кнопок в одну конечно можно, думаю только могут возникнуть сложности с "забиванием" некоторых из кнопок. Для приведённых выше кнопок: Выделить код Код: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%3Emultibutton%20sample%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%5Bvar%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%22Restart%22%20label%3D%22Restart%22/%3E%0A%09%3Cmenuitem%20value%3D%22Enlarge%22%20label%3D%22Enlarge%22/%3E%0A%09%3Cmenuitem%20value%3D%22Reduce%22%20label%3D%22Reduce%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%22Restart%22%3A%0A%09%09%09this.%20cbFunctionRestart%20%28%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22Enlarge%22%3A%0A%09%09%09ZoomManager.prototype.getInstance%28%29.enlarge%28%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22Reduce%22%3A%0A%09%09%09ZoomManager.prototype.getInstance%28%29.reduce%28%29%3B%0A%09%7D%0A%7D%3B%0A//%20commands%0Athis.%20cbFunctionRestart%20%3D%20function%20%28%29%0A%7B%0A%09var%20confirmRestart%20%3D%20window.confirm%28%27Are%20you%20sure%20you%20want%20to%20restart%20firefox%3F%27%29%3B%0A%09if%28%21confirmRestart%29%20return%3B%0A%09%20%20%20%20%0A%09var%20appStartup%20%3D%20Components.interfaces.nsIAppStartup%3B%0A%09//%20if%20%28canQuitApplication%28%29%29%20//%20uncomment%20if%20using%20zeniko%27s%20Session%20Manager%0A%09Components.classes%5B%22@mozilla.org/toolkit/app-startup%3B1%22%5D%0A%09.getService%28appStartup%29.quit%28appStartup.eRestart%20%7C%20appStartup.eAttemptQuit%29%3B%20%0A%7D%5D%5D%3E%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 | ||||||||
PulSar.CE3194694 > 06-06-2008 17:22:51 | ||||||||
А какой язык нужен? Хочу сделать кнопку для закрытия всех вкладок с предупреждением о закрытии. Как этого добиться? | ||||||||
Anton > 07-06-2008 21:31:52 | ||||||||
PulSar.CE3194694
Кнопки пишутся на ecmascript.
Посмотреть, как это делает tabbrowser. В данном случае код будет такой: Выделить код Код:var tbr = getBrowser (); if (tbr. warnAboutClosingTabs (true)) { var childNodes = tbr. mTabContainer. childNodes; for (var i = childNodes. length - 1; i >= 0; --i) { tbr. removeTab (childNodes [i]); } } | ||||||||
Anton > 11-06-2008 09:19:45 | ||||||||
Из отзыва на AMO:
Кто-нибудь может растолковать, о чём речь ? За панели инструментов и контекстные меню CB не отвечает, но оверлей с кнопками из сети загрузить сможет - если это подразумевается в цитате. | ||||||||
vv07 > 11-06-2008 12:32:16 | ||||||||
Было бы неплохо сохранять линки,на панели инструментов,правым кликом на OPML и RSS (дословно с сайтов или удаленный источник)Вторая часть немного непонятна из за XUL.Я не знаю что это такое.А так-Нужно разьяснение,как легче ввести(засунуть | ||||||||
Infocatcher > 11-06-2008 16:42:55 | ||||||||
Anton
Рискну предположить, что нужен некий способ копирования кода кнопки. Добавлено Wed Jun 11 16:44:21 2008 : | ||||||||
amzoom > 11-06-2008 23:12:30 | ||||||||
Anton пишет
Мне бы хотелось иметь возможность сохранять мои тулбары и меню ПКМ дистанционно, как OPML или в RSS. Кстати нужно бы сделать "хэлп" для таких простых вещей, как ссылки и доступные XUL менюшки. По-моему он ввиду то, что я сейчас написал, но не понятно только как можно сохранять right-click menu. Я с этим разрешением не знаком вообще (просто решил помочь с переводом), может так и можно. | ||||||||
Unghost > 12-06-2008 20:09:56 | ||||||||
Anton
Я так понимаю, он хочет хранить свои панели инструментов и контекстное меню на удалённом сервере в виде OPML или RSS и подгружать их с этого сервера. | ||||||||
Anton > 12-06-2008 21:29:29 | ||||||||
vv07 Если актуально, можно сделать загрузку оверлея с кнопками из сети, не в виде OPML/RSS, а в виде XUL. Тогда необходимо описание, как это должно выглядеть с точки зрения пользователя. Если действительно актуально. | ||||||||
vv07 > 13-06-2008 15:11:19 | ||||||||
Позвольте позаимствовать,вашу подпись? | ||||||||
Anton > 16-06-2008 14:03:55 | ||||||||
vv07 | ||||||||
vv07 > 16-06-2008 14:36:39 | ||||||||
Пасябки | ||||||||
macuache > 27-06-2008 16:38:24 | ||||||||
а как создать эффект при наведении мышки на кнопку и нажатии ? Я просто использую не стандартную тему для лисы, поэтому у меня все custom buttons не реагирует визуально. | ||||||||
Anton > 28-06-2008 10:57:19 | ||||||||
macuache Выделить код Код:this. cbSetDefaultStyle = function (event) { this. style. setProperty ("padding", "3px", ""); this. style. setProperty ("border", "1px solid transparent", ""); this. style. setProperty ("background-color", "transparent", ""); this. style. setProperty ("outline", "", ""); this. style. setProperty ("-moz-outline-offset", "", ""); } this. onmousedown = function (event) { this. style. setProperty ("border-color", "ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow", ""); this. style. setProperty ("padding-top", "4px", ""); this. style. setProperty ("padding-bottom", "2px", ""); this. style. setProperty ("-moz-padding-start", "4px", ""); this. style. setProperty ("-moz-padding-end", "2px", ""); } this. onmouseover = function (event) { //this. style. setProperty ("background-color", "-moz-buttonhoverface", ""); this. style. setProperty ("background-color", "ThreeDFace", ""); this. style. setProperty ("border-color", "ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight", ""); this. style. setProperty ("outline", "1px -moz-DialogText", ""); this. style. setProperty ("-moz-outline-offset", "-2px", ""); } this. onmouseup = this. cbSetDefaultStyle; this. onmouseout = this. cbSetDefaultStyle; | ||||||||
Vvld > 04-07-2008 09:41:49 | ||||||||
Infocatcher
Этот код действительно не работает. Сообщение браузера: "Кнопка не может быть создана, потому что содержит ошибки!" | ||||||||
Anton > 04-07-2008 13:53:02 | ||||||||
Vvld
Какая версия расширения ? | ||||||||
Vvld > 04-07-2008 14:29:07 | ||||||||
Anton пишет
Я извиняюсь, но какое расширение должно стоять (имя)? Браузер обновлен до версии 2.0.0.15. Кнопка перевода (работающая) создана расширением Custom Buttons 0.0.1.2 (сегодня автообновилось до версии 0.0.1.3). Хотелось бы иметь перевод с функциями, описанными мною выше. Ищу, пробую. Если надо, установлю еще расширение, но подскажите какое? Надо будет, Custom Buttons отключу, другое расширение поставлю, но какое? Хотя, на мой взгляд, Google и переводит лучше, чем другие переводчики, но все равно надо сравнивать текст перевода с оригиналом и перевод лучше иметь в другом окне. | ||||||||
Anton > 04-07-2008 14:48:12 | ||||||||
Кнопка из сообщения Infocatcher'а создана более свежей версией расширения (рискну предположить, это было Custom Buttons 0.0.2.9). Сейчас доступна 0.0.3.2. Что касается
то, думаю, такой кнопки не существует. Может быть, есть на custombuttons2.com С принципом работы оперного переводчика с всплывающим окошком я не знаком, если расскажете, я смогу решить могу я взяться за изготовление такой кнопки или нет. | ||||||||
Vvld > 04-07-2008 15:44:16 | ||||||||
Anton
Увы. Этот Custom Buttons я не знаю. Сайт Custom Buttons 0.0.1.3 - http://xsms.nm.ru/custombuttons/, Custom Buttons 2.0.7.6 я брал и пробовал на страничке https://addons.mozilla.org/ru/firefox/addon/5066, а это расширение с версией 0.0.2.9 или 0.0.3.2 я не знаю. Подскажите, пожалуйста, я и его попробую. Кстати, после установки Custom Buttons 2.0.7.6 с браузером что-то непонятное случилось и я его сразу удалил.
Вы правы, такую функцию кнопки в Firefox я ищу давно и пока не нашел. Но это очень удобно. И когда я листаю страницы иностранных сайтов, то перехожу на браузер Opera. Забыл добавить: | ||||||||
Anton > 04-07-2008 16:00:21 | ||||||||
Сейчас все новые версии размещаются здесь: https://addons.mozilla.org/ru/firefox/addon/2707 и здесь: http://custombuttons.mozdev.org/installation.html | ||||||||
Vvld > 04-07-2008 16:45:49 | ||||||||
Anton
Спасибо за новую версию, а я ориентировался на домашнюю страницу. | ||||||||
Anton > 04-07-2008 16:51:41 | ||||||||
Мне бы его вообразить как-нибудь. Не представляю как оно должно выглядеть. Я попробую что-нибудь сделать, правда, заранее результат обещать не могу. | ||||||||
Vvld > 04-07-2008 17:02:43 | ||||||||
Anton пишет
А вдруг получится? Буду надеяться и ждать. Добавлено Fri Jul 4 17:12:01 2008 : | ||||||||
Anton > 06-07-2008 13:14:18 | ||||||||
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 Хотя, работает не абсолютно точно как оперный скрипт.
Похоже, это особенность переводчика. | ||||||||
Vvld > 06-07-2008 16:28:06 | ||||||||
Anton пишет
КЛАСС!!! Ну а https прийдется как и раньше либо копировать в блокнот и переводить, либо (при не сложных текстах) с помощью словаря. Хотя, если текст не сложный, то я его понимаю и без словаря (конечно только английский, но никак не китайский. Добавлено Sun Jul 6 16:43:44 2008 : | ||||||||
Anton > 06-07-2008 18:00:39 | ||||||||
Vvld На следующей неделе намечаются разъезды, так что, скорее всего я не смогу этим заняться раньше выходных. | ||||||||
Vvld > 06-07-2008 18:08:12 | ||||||||
Anton пишет
Конечно. | ||||||||
Deim0s > 06-07-2008 18:25:32 | ||||||||
Anton | ||||||||
Vvld > 07-07-2008 06:37:38 | ||||||||
Deim0s
Если для Google Translate, то пост 651 (еще не полностью сделана) или пост 567 - работает | ||||||||
Deim0s > 07-07-2008 11:54:01 | ||||||||
Vvld | ||||||||
Vvld > 08-07-2008 00:46:58 | ||||||||
Deim0s
- это был бы хороший вариант. Но как это программно сделать - надо с Антоном обсуждать. Дождемся его... | ||||||||
Deim0s > 08-07-2008 02:00:18 | ||||||||
Vvld
Я к нему с просьбой и обратился. Т.к. скрипт Googl'а сам прекрасно "различает" перевод текста, от перевода страницы, зачем меню? Кому хочется на текущей вкладке и так с оригиналом работает. ИМХО смысл кнопки в удобстве перевода одним нажатием, а если через меню, так это и через закладку можно переводить. | ||||||||
Vvld > 08-07-2008 09:17:52 | ||||||||
Deim0s
Да я не спорю, но мысль и для себя работает - помимо перевода на другой странице (это то работает) я просил Антона сделать перевод выделенного текста во всплывающем окошке и он это уже сделал, только надо чуть-чуть поправить. Но в простой кнопке вставить в " " скрипт Google, при его изменении, не получится и прийдется всю кнопку переделывать. | ||||||||
Anton > 12-07-2008 18:14:48 | ||||||||
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
У меня на этот счёт пока что нет никаких обещающих идей, к сожалению.
Попросить, разумеется можно. В свою очередь, хотелось бы попросить излагать мысли более детально - я после нескольких прочтений всё ещё не могу понять о чём здесь идёт речь.
Сложно сказать, не видя кода.
Я нашёл в google код для запуска spell.vbs: по аналогии, должно быть что-то вроде Выделить код Код: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'а) | ||||||||
Deim0s > 12-07-2008 19:26:15 | ||||||||
Anton Выделить код Код: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); всё работает, но хотел спросить, может лишнее что то? Выделить код Код:Execute Program,"C:\Program Files\UnH Solutions\Get File Size\GetFileSize.exe","/url:%t" . | ||||||||
Anton > 12-07-2008 20:18:27 | ||||||||
По-моему, ничего лишнего. Разве что, наверное можно через 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 ()); | ||||||||
Z&N > 12-07-2008 20:24:49 | ||||||||
Deim0s не проще ли поставить Get File Size | ||||||||
Deim0s > 12-07-2008 20:59:20 | ||||||||
Anton
Не много не получается, если взять любую текстовую ссылку, к примеру ту же: _http://www.ru/программа.exe, выделить всё после _, то в опере получается нормально: | ||||||||
Anton > 12-07-2008 21:36:41 | ||||||||
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); | ||||||||
Deim0s > 12-07-2008 22:34:02 | ||||||||
Anton | ||||||||
Vvld > 13-07-2008 09:20:21 | ||||||||
Anton Погонял кнопочки по сайтам и обнаружились некоторые неудобства касательно всплывающего окошка: | ||||||||
Anton > 13-07-2008 15:06:23 | ||||||||
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
Поскольку мне неочевидно, как это сделать в реализации с всплывающим окошком, пришлось сделать реализацию, копирующую поведение (и код) скрипта для 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 | ||||||||
Deim0s > 13-07-2008 16:08:09 | ||||||||
Anton
Спасибо, для GetFileSize, всё работает отлично, берёт текстовые ссылки от куда угодно и правильно.
Покрутил я извилинами, но безрезультатно, помогите если не трудно, пользую такой скрипт (как из поста № 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, примеры: | ||||||||
Anton > 13-07-2008 17:02:46 | ||||||||
Выделить код Код: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 );
Это нехорошо, будет исправлено. Спасибо за информацию об ошибке. | ||||||||
Deim0s > 13-07-2008 17:46:34 | ||||||||
Anton | ||||||||
Anton > 14-07-2008 20:23:00 | ||||||||
Исправил ошибку для предыдущего варианта кнопок перевода, связанную с переключением вкладок в момент перевода: Выделить код Код: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
Ну тогда или вместо | ||||||||
Deim0s > 14-07-2008 22:20:22 | ||||||||
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 ); всё заработало, как хотелось. Проверил где только возможно - всё работает. | ||||||||
Anton > 15-07-2008 14:37:59 | ||||||||
Вот код: Выделить код Код: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"); Но поддерживать я его не буду. Хотите - пользуйтесь, если что-нибудь не устроит - просьба не беспокоить. | ||||||||
camo > 15-07-2008 16:37:40 | ||||||||
Anton | ||||||||
Anton > 16-07-2008 13:55:36 | ||||||||
camo | ||||||||
camo > 16-07-2008 17:44:17 | ||||||||
Anton | ||||||||
AndreyA > 18-07-2008 17:55:15 | ||||||||
Добавление кнопок "Сохранить страницу" и "Сохранить ссылку" на панель закладок с помощью расширения Custom Buttons. картинка: chrome://scrapbook/skin/capture_entire.png картинка: chrome://scrapbook/skin/capture_target.png | ||||||||
AndreyPA > 26-07-2008 03:20:32 | ||||||||
В расширении toolbar buttons была кнопка которая включала и выключала загрузку картинок. Я его нашел и распотрошил но столкнулся с тем что у него в реализации используются два режима отображения кнопки ВКЛЮЧЕНО и ВЫКЛЮЧЕНО (т.е. 2 пиктограммы) можно ли это сделать в Custom Buttons и как. | ||||||||
Anton > 26-07-2008 13:20:52 | ||||||||
AndreyPA Если я правильно понял, то Выделить код Код:if (state == 0) this. image = "file:///c:/greenicon.png"; else this. image = "file:///c:/redicon.png"; --- Кстати, просьба к пользователям с linux: помогите с разработкой кода для запуска shell-скриптов. | ||||||||
polk90 > 27-07-2008 17:48:48 | ||||||||
Ребята, те кто постоянно в этой ветке варятся, соберите, пожалуйста, то что наработано в один пост. Я имею в виду то, что пишется в поле код. Как выжимку. Буду очень признателен, как пользователь, который редко сюда заходит. Ведь реально много сделано. У вас где-то есть исправления где-то вы друг друга с полуслова поняли. Расширение прекрасное, а так таким чайникам как я будет легче. | ||||||||
Infocatcher > 04-09-2008 17:09:40 | ||||||||
Вижу странную работу кода вида Правда, Custom Buttons тут ни при чем – ошибку я словил при разработке расширения. Но раз уж за основу был взят код отсюда, не будем плодить лишних Выдернул проблемный код (будем надеяться, ссылок на то, чего уже нет, не осталось) и сделал кнопку для демонстрации (дабы легче тестировать Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%7EDOMParser%20test%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%5Bvar%20obj%20%3D%20%7B%0A%09_test%3A%20function%28e%29%20%7B%0A%09%09this.origItem%20%3D%20e.originalTarget%3B%0A%09%09this.copyOfEvent%20%3D%20e%3B%0A%09%09this.cMenu%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0A%0A%09%09var%20xml%20%3D%20%3Cpopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09oncommand%3D%22alert%28event.target.label%29%22%3E%0A%09%09%09%09%3Cmenuitem%20label%3D%22Item%20-%200%22%20/%3E%0A%09%09%09%09%3Cmenuitem%20label%3D%22Item%20-%201%22%20/%3E%0A%09%09%09%09%3Cmenuitem%20label%3D%22Item%20-%202%22%20/%3E%0A%09%09%09%09%3Cmenuseparator%20/%3E%0A%09%09%09%09%3Cmenu%20label%3D%22Menu%22%3E%0A%09%09%09%09%09%3Cmenupopup%3E%0A%09%09%09%09%09%09%3Cmenuitem%20label%3D%22Subitem%20-%200%22%20/%3E%0A%09%09%09%09%09%09%3Cmenuitem%20label%3D%22Subitem%20-%201%22%20/%3E%0A%09%09%09%09%09%3C/menupopup%3E%0A%09%09%09%09%3C/menu%3E%0A%09%09%09%3C/popup%3E%3B%0A%09%09this.showGeneratedFromXMLPopup%28xml%29%3B%0A%09%7D%2C%0A%09showGeneratedFromXMLPopup%3A%20function%28xml%29%20%7B%0A%09%09var%20popup%20%3D%20this.getPopup%28xml%29%3B%0A%09%09this.showPopupOnCurrentItem%28popup%29%3B%0A%09%09return%20popup%3B%0A%09%7D%2C%0A%09getPopup%3A%20function%28xml%29%20%7B%0A%09%09var%20pSet%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0A%09%09var%20id%20%3D%20%22handyClicks-generatedPopup%22%3B%0A%09%09var%20popup%20%3D%20document.getElementById%28id%29%3B%0A%09%09if%28popup%29%0A%09%09%09pSet.removeChild%28popup%29%3B%0A%09%09popup%20%3D%20xml%0A%09%09%09%3F%20new%20DOMParser%28%29.parseFromString%28xml.toXMLString%28%29%2C%20%22application/xml%22%29.documentElement%0A%09%09%09%3A%20document.createElement%28%22popup%22%29%3B%0A%09%09if%28xml%29%20%7B%0A%09%09%09//%20Bug%3A%20labels%20of%20%3Cmenu%3E%20does%20not%20shown.%0A%09%09%7D%0A%09%09popup.id%20%3D%20id%3B%0A%09%09popup.tooltip%20%3D%20%22handyClicks-tooltip%22%3B%0A%09%09pSet.appendChild%28popup%29%3B%0A%09%09return%20popup%3B%0A%09%7D%2C%0A%09showPopupOnCurrentItem%3A%20function%28popup%29%20%7B%0A%09%09var%20node%20%3D%20this.origItem%3B%0A%09%09var%20e%20%3D%20this.copyOfEvent%3B%0A%0A%09%09if%28this.isFx%282%29%20%26%26%20this.cMenu.id%20%3D%3D%20%22contentAreaContextMenu%22%29%20%7B%20//%20workaround%20for%20spellchecker%20bug%0A%09%09%09//%20if%28this.getPref%28%22forceHideContextMenu%22%29%29%0A%09%09%09//%09window.removeEventListener%28%22contextmenu%22%2C%20this%2C%20true%29%3B%0A%0A%09%09%09var%20evt%20%3D%20document.createEvent%28%22MouseEvents%22%29%3B%20//%20thanks%20to%20Tab%20Scope%21%0A%09%09%09evt.initMouseEvent%28%0A%09%09%09%09%22click%22%2C%20true%2C%20false%2C%20node.ownerDocument.defaultView%2C%201%2C%0A%09%09%09%09e.screenX%2C%20e.screenY%2C%20e.clientX%2C%20e.clientY%2C%0A%09%09%09%09false%2C%20false%2C%20false%2C%20false%2C%0A%09%09%09%092%2C%20null%0A%09%09%09%29%3B%0A%09%09%09node.dispatchEvent%28evt%29%3B%0A%0A%09%09%09//%20this.disabledBy.cMenu%20%3D%20true%3B%0A%09%09%09//%20this.blinkNode%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09document.popupNode%20%3D%20node%3B%0A%09%09var%20xy%20%3D%20this.getXY%28e%29%3B%0A%09%09popup.showPopup%28this.isFx%283%29%20%3F%20node%20%3A%20e.target%2C%20xy.x%2C%20xy.y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%09%7D%2C%0A%09getXY%3A%20function%28e%29%20%7B%0A%09%09var%20isFx3%20%3D%20this.isFx%283%29%3B%0A%09%09return%20%7B%0A%09%09%09x%3A%20isFx3%20%3F%20e.screenX%20%3A%20e.clientX%2C%0A%09%09%09y%3A%20isFx3%20%3F%20e.screenY%20%3A%20e.clientY%0A%09%09%7D%3B%0A%09%7D%2C%0A%09get%20fxVersion%28%29%20%7B%0A%09%09if%28typeof%20this._fxVersion%20%3D%3D%20%22undefined%22%29%0A%09%09%09this._fxVersion%20%3D%20Components.classes%5B%22@mozilla.org/xre/app-info%3B1%22%5D%0A%09%09%09%09.getService%28Components.interfaces.nsIXULAppInfo%29%0A%09%09%09%09.version%3B%0A%09%09return%20this._fxVersion%3B%0A%09%7D%2C%0A%09isFx%3A%20function%28version%29%20%7B%0A%09%09return%20this.fxVersion.indexOf%28version%20+%20%22.%22%29%20%3D%3D%200%3B%0A%09%7D%0A%7D%3B%0Athis._obj%20%3D%20obj%3B%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09if%28e.button%20%21%3D%202%29%0A%09%09this._obj._test%28e%29%3B%0A%7D%3B%5D%5D%3E%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 Суть проблемы: При этом не видно label у menu. И, если посмотреть в DOM Inspector'е, у menu нету «anonymous nodes» (которые показываются красным), задаваемых binding'ом. Выделить код Код:var _menu = document.createElement("menu"); _menu.setAttribute("label", menu.getAttribute("label")); // а если перенести все menu.childNodes, то работать уже не будет =/ menu.parentNode.replaceChild(_menu, menu); | ||||||||
Anton > 04-09-2008 19:56:49 | ||||||||
Infocatcher Я пас, в общем, кому-то даже жаловался уже, что за кнопку с вложенными меню на xml браться не буду. Идей нет. | ||||||||
Infocatcher > 04-09-2008 21:13:10 | ||||||||
Anton
Видимо, придется делать менее «прозрачные» способы задания меню. Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EPop-up%20menu%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%5Bvar%20obj%20%3D%20%7B%0A%09_test%3A%20function%28e%29%20%7B%0A%09%09this.origItem%20%3D%20e.originalTarget%3B%0A%09%09this.copyOfEvent%20%3D%20e%3B%0A%09%09this.cMenu%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0A%0A%09%09var%20items%20%3D%20%5B%0A%09%09%09%7B%20label%3A%20%22Label%20-%200%22%20%7D%2C%0A%09%09%09%7B%7D%2C%0A%09%09%09%7B%20label%3A%20%22Label%20-%201%22%20%7D%2C%0A%09%09%09%7B%20label%3A%20%22Label%20-%202%22%20%7D%2C%0A%09%09%09%7B%20label%3A%20%22Label%20-%203%22%20%7D%2C%0A%09%09%09%5B%0A%09%09%09%09%7B%20label%3A%20%22Menu%20-%204%22%20%7D%2C%0A%09%09%09%09%5B%0A%09%09%09%09%09%7B%20label%3A%20%22Label%20-%204%20-%200%22%20%7D%2C%0A%09%09%09%09%09%5B%0A%09%09%09%09%09%09%7B%20label%3A%20%22Menu%20-%204%20-%201%22%20%7D%2C%0A%09%09%09%09%09%09%5B%0A%09%09%09%09%09%09%09%7B%20label%3A%20%22Label%20-%204%20-%201%20-%201%22%20%7D%0A%09%09%09%09%09%09%5D%0A%09%09%09%09%09%5D%2C%0A%09%09%09%09%09%7B%20label%3A%20%22Label%20-%204%20-%201%22%20%7D%2C%0A%09%09%09%09%09%7B%20label%3A%20%22Label%20-%204%20-%202%22%20%7D%0A%09%09%09%09%5D%0A%09%09%09%5D%0A%09%09%5D%3B%0A%09%09var%20popup%20%3D%20this.showGeneratedPopup%28items%29%3B%0A%09%09popup.setAttribute%28%22oncommand%22%2C%20%22alert%28event.target.label%29%3B%22%29%3B%0A%09%7D%2C%0A%09showGeneratedPopup%3A%20function%28items%29%20%7B%0A%09%09var%20popup%20%3D%20this.createPopup%28items%29%3B%0A%09%09this.showPopupOnCurrentItem%28popup%29%3B%0A%09%09return%20popup%3B%0A%09%7D%2C%0A%09createPopup%3A%20function%28items%29%20%7B%0A%09%09var%20popup%20%3D%20this.popup%3B%0A%09%09this.appendChilds%28popup%2C%20items%29%3B%0A%09%09return%20popup%3B%0A%09%7D%2C%0A%09get%20popup%28%29%20%7B%0A%09%09var%20pSet%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0A%09%09var%20id%20%3D%20%22handyClicks-generatedPopup%22%3B%0A%09%09var%20popup%20%3D%20document.getElementById%28id%29%3B%0A%09%09if%28popup%29%0A%09%09%09pSet.removeChild%28popup%29%3B%0A%09%09popup%20%3D%20document.createElement%28%22popup%22%29%3B%0A%09%09popup.id%20%3D%20id%3B%0A%09%09popup.tooltip%20%3D%20%22handyClicks-tooltip%22%3B%0A%09%09pSet.appendChild%28popup%29%3B%0A%09%09return%20popup%3B%0A%09%7D%2C%0A%09appendChilds%3A%20function%28parent%2C%20childs%29%20%7B%0A%09%09for%28var%20i%20%3D%200%3B%20i%20%3C%20childs.length%3B%20i++%29%0A%09%09%09this%5B%22appendMenu%22%20+%20%28childs%5Bi%5D%20instanceof%20Array%20%3F%20%22%22%20%3A%20%22item%22%29%5D%28parent%2C%20childs%5Bi%5D%29%3B%0A%09%7D%2C%0A%09appendMenu%3A%20function%28parent%2C%20itemsArr%29%20%7B%0A%09%09var%20menu%20%3D%20document.createElement%28%22menu%22%29%3B%0A%09%09this.setAttributes%28menu%2C%20itemsArr%5B0%5D%29%3B%0A%09%09var%20mPopup%20%3D%20document.createElement%28%22menupopup%22%29%3B%0A%09%09this.appendChilds%28mPopup%2C%20itemsArr%5B1%5D%29%3B%0A%09%09menu.appendChild%28mPopup%29%3B%0A%09%09parent.appendChild%28menu%29%3B%0A%09%7D%2C%0A%09appendMenuitem%3A%20function%28parent%2C%20attrs%29%20%7B%0A%09%09var%20mi%20%3D%20document.createElement%28attrs.label%20%3F%20%22menuitem%22%20%3A%20%22menuseparator%22%29%3B%0A%09%09this.setAttributes%28mi%2C%20attrs%29%3B%0A%09%09parent.appendChild%28mi%29%3B%0A%09%7D%2C%0A%09setAttributes%3A%20function%28item%2C%20attrs%29%20%7B%0A%09%09for%28var%20p%20in%20attrs%29%20%7B%0A%09%09%09if%28typeof%20attrs%5Bp%5D%20%21%3D%20%22string%22%20%7C%7C%20p.indexOf%28%22__%22%29%20%3D%3D%200%29%0A%09%09%09%09item%5Bp%5D%20%3D%20attrs%5Bp%5D%3B%20//%20not%20works%20for%20%22oncommand%22%0A%09%09%09else%0A%09%09%09%09item.setAttribute%28p%2C%20attrs%5Bp%5D%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09showPopupOnCurrentItem%3A%20function%28popup%29%20%7B%0A%09%09var%20node%20%3D%20this.origItem%3B%0A%09%09var%20e%20%3D%20this.copyOfEvent%3B%0A%0A%09%09if%28this.isFx%282%29%20%26%26%20this.cMenu.id%20%3D%3D%20%22contentAreaContextMenu%22%29%20%7B%20//%20workaround%20for%20spellchecker%20bug%0A%09%09%09//%20if%28this.getPref%28%22forceHideContextMenu%22%29%29%0A%09%09%09//%09window.removeEventListener%28%22contextmenu%22%2C%20this%2C%20true%29%3B%0A%0A%09%09%09var%20evt%20%3D%20document.createEvent%28%22MouseEvents%22%29%3B%20//%20thanks%20to%20Tab%20Scope%21%0A%09%09%09evt.initMouseEvent%28%0A%09%09%09%09%22click%22%2C%20true%2C%20false%2C%20node.ownerDocument.defaultView%2C%201%2C%0A%09%09%09%09e.screenX%2C%20e.screenY%2C%20e.clientX%2C%20e.clientY%2C%0A%09%09%09%09false%2C%20false%2C%20false%2C%20false%2C%0A%09%09%09%092%2C%20null%0A%09%09%09%29%3B%0A%09%09%09node.dispatchEvent%28evt%29%3B%0A%0A%09%09%09//%20this.disabledBy.cMenu%20%3D%20true%3B%0A%09%09%09//%20this.blinkNode%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09document.popupNode%20%3D%20node%3B%0A%09%09var%20xy%20%3D%20this.getXY%28e%29%3B%0A%09%09popup.showPopup%28this.isFx%283%29%20%3F%20node%20%3A%20e.target%2C%20xy.x%2C%20xy.y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%09%7D%2C%0A%09getXY%3A%20function%28e%29%20%7B%0A%09%09var%20isFx3%20%3D%20this.isFx%283%29%3B%0A%09%09return%20%7B%0A%09%09%09x%3A%20isFx3%20%3F%20e.screenX%20%3A%20e.clientX%2C%0A%09%09%09y%3A%20isFx3%20%3F%20e.screenY%20%3A%20e.clientY%0A%09%09%7D%3B%0A%09%7D%2C%0A%09get%20fxVersion%28%29%20%7B%0A%09%09if%28typeof%20this._fxVersion%20%3D%3D%20%22undefined%22%29%0A%09%09%09this._fxVersion%20%3D%20Components.classes%5B%22@mozilla.org/xre/app-info%3B1%22%5D%0A%09%09%09%09.getService%28Components.interfaces.nsIXULAppInfo%29%0A%09%09%09%09.version%3B%0A%09%09return%20this._fxVersion%3B%0A%09%7D%2C%0A%09isFx%3A%20function%28version%29%20%7B%0A%09%09return%20this.fxVersion.indexOf%28version%20+%20%22.%22%29%20%3D%3D%200%3B%0A%09%7D%0A%7D%3B%0Athis._obj%20%3D%20obj%3B%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09if%28e.button%20%21%3D%202%29%0A%09%09this._obj._test%28e%29%3B%0A%7D%3B%5D%5D%3E%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 Радует только, что добавлять к уже имевшемуся коду пришлось только поддержку вложенных меню (по сути было то же самое, но без .appendMenu( ... )). P.S.
Сделать menu? Или очепятка, или я чего-то не догоняю. | ||||||||
Anton > 04-09-2008 23:21:13 | ||||||||
mozilla-russia navigator | ||||||||
vv07 > 12-09-2008 07:37:52 | ||||||||
Черт,возникла неприятная ситуация.Обновился до версии 0,0,3,3.Половина кнопок слетела почему то.При этом не могу откатиться назад.Не сохранилась версия 0,0,3,2.Или подскажите,в чем проблема,или дайте ссылку,на 0,0,3,2. | ||||||||
Anton > 12-09-2008 14:29:54 | ||||||||
vv07
Что значит "слетела" ?
https://addons.mozilla.org/ru/firefox/addon/2707 - на странице есть ссылка "Отобразить все версии". Не думаю, что корень проблемы в расширении, но на всякий случай, если не трудно - отправьте до установки 0.0.3.2 файлы (buttonsoverlay.xul и buttonsoverlay.xul.bak) из подкаталога custombuttons профиля на адрес custombuttonsextension@gmail.com. | ||||||||
vv07 > 12-09-2008 15:57:24 | ||||||||
Извините меня пожалуйста за поспешность.Сильно расстроился блин.Разобрался в чем проблема.Дело в том,что папку с иконками для расширения,расположил в корневой папке.При установке обновления,папка полностью обновилась и иконки были утрачены.именно поэтому,кнопки перестали отображаться.Может стоит,как то исключить такую возможность,в последующем.Просто удобнее держать иконки,именно в директории расширения. | ||||||||
Mashinist > 12-09-2008 18:05:25 | ||||||||
AndreyA пишет
Вот эта штука сохраняет старницу далеко в "C:\Documents and Settings\Администратор\Application Data\Mozilla\Firefox\Profiles\ksc247o6.default\ScrapBook\data\20080912165717\" Да и каждый раз в разную директорию... А как сделать так что бы всегда в одну директорию? Да и которую я хочу явно задать... скажем в коде... | ||||||||
vv07 > 12-09-2008 18:28:24 | ||||||||
Если я правильно понял,речь о расширении ScrapBook,так в нем можно задать директорию,в настройках.Скопируйте или перенесите папку ScrapBook,в любое удобное для вас место.В настройках укажите эту папку.Все,по умолчанию будет сохраняться туда. | ||||||||
Mashinist > 13-09-2008 13:05:02 | ||||||||
vv07 пишет
Спасибо! | ||||||||
Anton > 13-09-2008 21:35:36 | ||||||||
vv07
В корневой папке чего ? В каталог, где находится установленное расширение ?
А в перекодированном в base64 виде или в подкаталоге custombuttons профиля не пойдёт ? Mashinist Если недостаточно, можно попробовать такой код: Выделить код Код:var saveDirectory = "c:\\savedhtml"; var doc = window. content. document; var url = doc. location. href; var charset = doc. characterSet; var contentType = doc. contentType; var fileInfo = new FileInfo (""); initFileInfo (fileInfo, url, charset, doc, contentType, null); var file = Components. classes ["@mozilla.org/file/local;1"]. createInstance (Components. interfaces. nsILocalFile); file. initWithPath (saveDirectory); var dir = file. clone (); dir. append (fileInfo. fileName); file. append (fileInfo. fileName + "." + fileInfo. fileExt); var fileURL = makeFileURI (file); var persist = makeWebBrowserPersist (); var persistArgs = { source : doc, contentType : contentType, target : fileURL, postData : getPostData (), bypassCache : false // aShouldBypassCache }; var encodingFlags = Components. interfaces. nsIWebBrowserPersist. ENCODE_FLAGS_ENCODE_BASIC_ENTITIES; var tr = Components. classes ["@mozilla.org/transfer;1"]. createInstance (Components. interfaces. nsITransfer); tr.init (fileInfo. uri, persistArgs. target, "", null, null, null, persist); //persist.persistFlags = Components. interfaces. nsIWebBrowserPersist. PERSIST_FLAGS_BYPASS_CACHE; persist.persistFlags = Components. interfaces. nsIWebBrowserPersist. PERSIST_FLAGS_FROM_CACHE; persist. progressListener = tr; persist. saveDocument (persistArgs.source, persistArgs.target, dir, persistArgs.contentType, encodingFlags, 80); в первой строке которого задаём нужный каталог. | ||||||||
Mashinist > 14-09-2008 00:38:26 | ||||||||
Anton пишет Спасибо! | ||||||||
vv07 > 14-09-2008 06:58:34 | ||||||||
Да речь,о корневой папке расширения custombuttons@xsms.org.Держу иконки там,в подпапке Icon.Насчет
незнаю,а вот
думаю нормально.Главное,что бы,при обновлениях,директория,в которой будут находиться иконки,не изменялась.Пусть основной каталог меняеться,а подкаталог нет.Тогда при обновах,иконки будут сохраняться и не надо морочиться,держать их хрен знает где.Я пользуюсь еще и портаблелисом,переношу конфигу из системной.Не надо ничего менять.Пути все прописываються по умолчанию.Никаких проблем.Раньше держал иконки в отдельной папке,на другом диске.Приходилось,каждый раз,по новому кнопки править.Поэтому и прошу о правке. | ||||||||
Anton > 14-09-2008 19:40:24 | ||||||||
vv07 пишет
В диалоговом окне редактирования кнопки есть кнопка "=> base64", которая преобразует файл изображения в строку символов, которая хранится вместе с кодом кнопки.
В custombuttons уже есть один механизм, позволяющий исключить зависимость от места расположения изображений кнопок - это кодирование в base64. Стоит ли создавать второй ? Я подумаю, но ничего не обещаю. | ||||||||
vurdalak > 16-09-2008 23:06:25 | ||||||||
Помогите если не сложно: Вообще можна ли создать скрипт, который выполянется при закрытии Firefox если не с помощью кнопки , то может с помощью чего либо другого ? | ||||||||
Infocatcher > 16-09-2008 23:44:33 | ||||||||
vurdalak
По-хорошему, вроде, надо делать расширение с XPCOM-компонентой... Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EStartup%20/%20Shutdown%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%5Bfunction%20getWindowsCount%28%29%20%7B%0A%09var%20wins%20%3D%20Components.classes%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D%0A%09%09.getService%28Components.interfaces.nsIWindowMediator%29%0A%09%09.getEnumerator%28%22navigator%3Abrowser%22%29%3B%0A%09var%20count%20%3D%200%3B%0A%09while%28wins.hasMoreElements%28%29%29%20%7B%0A%09%09wins.getNext%28%29%3B%0A%09%09count++%3B%0A%09%7D%0A%09return%20count%3B%0A%7D%0Afunction%20_log%28%29%20%7B%0A%09alert%28%22Startup%20/%20Shutdown%20button%20-%3E%20%22%20+%20arguments.callee.caller.name%29%3B%0A%7D%0Afunction%20startup%28%29%20%7B%0A%09_log%28%29%3B%0A%7D%0Afunction%20shutdown%28%29%20%7B%0A%09_log%28%29%3B%0A%7D%0Afunction%20eventHandler%28e%29%20%7B%0A%09window.removeEventListener%28e.type%2C%20arguments.callee%2C%20false%29%3B%0A%09if%28e.type%20%3D%3D%20%22load%22%20%26%26%20getWindowsCount%28%29%20%3D%3D%201%29%0A%09%09startup%28%29%3B%0A%09else%20if%28e.type%20%3D%3D%20%22unload%22%20%26%26%20getWindowsCount%28%29%20%3D%3D%200%29%0A%09%09shutdown%28%29%3B%0A%7D%0Aif%28%21window%5B%22__listeners__%22%20+%20this.id%5D%29%20%7B%0A%09window%5B%22__listeners__%22%20+%20this.id%5D%20%3D%20true%3B%0A%09window.addEventListener%28%22load%22%2C%20eventHandler%2C%20false%29%3B%0A%09window.addEventListener%28%22unload%22%2C%20eventHandler%2C%20false%29%3B%0A%7D%5D%5D%3E%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 Внутри функций startup и shutdown пишем то, что должно выполняться при запуске и закрытии соответственно. Учитывается только «главное» окно. Например, если оставить загрузки и закрыть все другие окна, скрипт решит, что произошел выход.
Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EFocus%20URL%20Bar%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%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20uBar%20%3D%20document.getElementById%28%22urlbar%22%29%3B%0AuBar.focus%28%29%3B%0AuBar.select%28%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 16-09-2008 23:49:58 P.S. Идея. При добавлении кнопки через custombutton-протокол сделать возможность посмотреть код (по аналогии с Greasemonkey). Из тех же соображений безопасности (или есть способ добраться до кода кнопки без запуска инициализации?). | ||||||||
vurdalak > 17-09-2008 00:28:43 | ||||||||
Спасибо за быстрый ответ. Выделить код Код: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 ("C:\\windows\\system32\\calc.exe"); process. init (file); process. run (false,[''],1); То уже: работать отказывается P.S. Хм... Или может не через taskkill.exe можна ? | ||||||||
Infocatcher > 17-09-2008 01:05:01 | ||||||||
vurdalak
Гм, у меня вот так заработало: Выделить код Код:function startProcess(path, args) { args = args || []; var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(!file.exists()) { alert(path + "\nnot found!"); return; } var process = Components.classes["@mozilla.org/process/util;1"] .getService(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } function killProcess(name) { startProcess("c:\\WINDOWS\\system32\\taskkill.exe", ["/F", "/IM" , name]); } killProcess("notepad.exe"); killProcess("Opera.exe"); 17-09-2008 01:06:57 P.P.S. Или функция startProcess + Выделить код Код:function killProcesses() { var args = ["/F"]; for(var i = 0; i < arguments.length; i++) args.push("/IM"), args.push(arguments[i]); startProcess("c:\\WINDOWS\\system32\\taskkill.exe", args); } killProcesses("notepad.exe", "Opera.exe"); 17-09-2008 01:28:56 | ||||||||
vurdalak > 17-09-2008 13:32:02 | ||||||||
Все работает на ура. Видимо я где-то допускал ошибку. | ||||||||
macuache > 17-09-2008 23:50:13 | ||||||||
Нужна кнопка Open notebook. Та, что в статус баре от приложения Google notebook. Мне не нравится статус бар. Я хотел бы иметь кнопку на тулбаре. Но код этой кнопки я не знаю. | ||||||||
Anton > 18-09-2008 18:09:58 | ||||||||
Infocatcher
Как-нибудь сподоблюсь. В cb2 давно уже есть, но "утягивать" один-в-один мне не хочется.
Я уже говорил об этом, кажется. В тройке process.run запускает cmd.exe так, что окна не видно. macuache
вроде, работает. | ||||||||
Infocatcher > 18-09-2008 21:31:01 | ||||||||
Anton
Примерно так: P.S.
Гм, может, конечно, искал плохо, но не увидел. | ||||||||
Anton > 18-09-2008 22:01:26 | ||||||||
Infocatcher
Понятно. Прямо сейчас не могу, но сделаю, как появится свободное время.
В контекстном меню custombutton:// ссылки есть пункт "View Custom Button Codes". | ||||||||
Infocatcher > 18-09-2008 22:30:55 | ||||||||
Anton
Ааа... А я в адресную строку код пихал. | ||||||||
saab > 17-10-2008 12:45:54 | ||||||||
Добрый день, а нет ли уже готовой кнопки для Thunderbird, которая по клику пересылала бы выбранные сообщения на заранее определенный адрес (нужно для обучения серверного байес фильтра)? | ||||||||
macuache > 01-11-2008 11:18:16 | ||||||||
Будьте добры. Нужна кнопка "Organize bookmarks" | ||||||||
alla_ > 01-11-2008 13:38:41 | ||||||||
macuache | ||||||||
Infocatcher > 01-11-2008 21:18:08 | ||||||||
macuache
DOM Inspector (для Firefox 2.0.0.x и ниже нужно при установке выбрать выборочную установку и поставить соответствующую галочку) Теперь набор пояснительных скриншотов. 1. Выбираем нужный документ для исследования: 2. Выбираем поиск: 3. Ищем по атрибуту. 4. (Справа нужно выбрать отображение «DOM Node».) Затем нужно найти атрибут oncommand, command или onclick и скопировать его значение, выбрав в контекстном меню редактирование: 5. Для oncommand и onclick искомым кодом является скопированное ранее значение атрибута. 5.1. Ищем по идентификатору, в качестве которого берем значение атрибута command: 5.2. У найденного элемента ищем атрибут oncommand и копируем его (это и есть искомый код): В итоге получаем: | ||||||||
macuache > 01-11-2008 21:36:24 | ||||||||
спасибо | ||||||||
cHeRsAnYa > 03-12-2008 00:03:29 | ||||||||
Дайте пожалуйста кнопку, при нажатии на которую открывается нужная папка закладок (в виде меню над этой кнопкой). | ||||||||
=Agasfer= > 03-12-2008 00:47:00 | ||||||||
Infocatcher | ||||||||
Infocatcher > 03-12-2008 04:06:50 | ||||||||
68agasfer пишет
Секция «код»: Выделить код Код:var tName = "toolbarName"; // Вместо toolbarName – название добавленной панели инструментов var tBar = document.getElementById("__customToolbar_" + tName.replace(/\s/, "_")); tBar.collapsed = !tBar.collapsed; Почему-то добавленные панели инструментов свое состояние не запоминают (точнее, с почему понятно – специально атрибута нету, а вот зачем так сделано – совершенно неясно). Выделить код Код:var tName = "toolbarName"; // Вместо toolbarName – название добавленной панели инструментов document.getElementById("__customToolbar_" + tName.replace(/ /, "_")).collapsed = true; Кстати, с заменой пробелов на подчеркивания тоже глюк какой-то – только первый заменяется. | ||||||||
=Agasfer= > 03-12-2008 10:25:23 | ||||||||
СПС большое! | ||||||||
=Agasfer= > 03-12-2008 11:03:03 | ||||||||
Заработала!!! | ||||||||
Anton > 03-12-2008 13:30:37 | ||||||||
Infocatcher
? | ||||||||
Anton > 03-12-2008 21:41:42 | ||||||||
saab пишет
Сделал вот такую: Выделить код Код:function forwardTo (uri, email) { var gIOService = Components. classes ["@mozilla.org/network/io-service;1"]. getService (Components. interfaces. nsIIOService); var hdr = messenger. messageServiceFromURI (uri). messageURIToMsgHdr (uri); // полям hdr лучше ничего не присваивать - это отразится на исходном сообщении var sMsgComposeService = Components. classes ["@mozilla.org/messengercompose;1"]. getService (Components. interfaces. nsIMsgComposeService); var msgWindow = Components. classes ["@mozilla.org/messenger/msgwindow;1"]. createInstance(); msgWindow = msgWindow. QueryInterface (Components. interfaces. nsIMsgWindow); msgWindow. SetDOMWindow (window); msgWindow. rootDocShell. allowAuth = true; var folder = hdr. folder; var smtpService = Components. classes ["@mozilla.org/messengercompose/smtp;1"]. getService (Components. interfaces. nsISmtpService); var accountManager = Components. classes ["@mozilla.org/messenger/account-manager;1"]. getService (Components. interfaces. nsIMsgAccountManager); var server = accountManager. defaultAccount. incomingServer; sMsgComposeService. forwardMessage (email, hdr, msgWindow, server); } var messageArray = GetSelectedMessages (); for (var i = 0; i < messageArray. length; i++) forwardTo (messageArray [i], "box@mail.com"); Есть одна неприятность при использовании, у некоторых писем тема контейнера (но не исходного письма) выходит "кракозябрами". Приблизительно, это письма, тема которых с кириллицей в кодировке windows-1251 начинается латиницей. | ||||||||
Infocatcher > 03-12-2008 22:59:43 | ||||||||
Anton пишет
|