Anton
Я из DOM Inspectora смотрел - type="menu". Может и врёт, конечно.
Именно из него и смотрел...
стрелка оказывается в этом случае дальше от кнопки, чем обычно.
Гм, хорошо, как создать «обычную» кнопку-меню? И на какой версии Thunderbird все это проверялось (есть у меня смутные подозрения...)?
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Гм, хорошо, как создать «обычную» кнопку-меню?
Ну очевидно же - type="menu";
И на какой версии Thunderbird все это проверялось (есть у меня смутные подозрения...)?
2.0.0.12, инспектор 1.8.1.2
Плюс ещё из кнопки
var bt = document. getElementById ("button-tag"); alert (bt. getAttribute ("type")); alert (bt. type);
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
Ну очевидно же - type="menu";
Ну, type="menu" и type="menu-button" – разные вещи. Например, «Получить новые сообщения» – и кнопка, и список (что я и хотел получить).
С другой стороны, стрелка оказывается в этом случае дальше от кнопки, чем обычно.
В этом и дело.
Для menu-button слева – кнопка, справа – список. А у menu – только список. Потому-то первая и шире.
P.S. Версии совпали.
Добавлено Thu Apr 10 00:29:21 2008 :
Кстати, из-за того, что атрибут orient="vertical" не работает в Firefox 2.0, есть смысл привязать к
toolbarbutton[type="menu"]
chrome://global/content/bindings/toolbarbutton.xml#menu-vertical
(причем в Firefox 1.5 данный binding отсутствует)
Тогда «треугольничек» будет справа, а не снизу.
Добавлено Thu Apr 10 00:34:06 2008 :
Причем я еще менял класс "menu-iconic-icon" на "blah-blah-blah-menu-iconic-icon". Насколько я помню, в одной из альф fx 3.0 в дефолтной теме было ограничение в 16px на размеры иконки, что жутко корявило картинки большего размера.
Отредактировано Infocatcher (10-04-2008 00:17:24)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
атрибут orient="vertical" не работает в Firefox 2.0,
Почему у меня работает ?
2.0.0.12/13
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Почему у меня работает ?
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
После клика по кнопке:
fx 1.5.0.12:
fx 2.0.0.13:
Добавлено Thu Apr 10 14:33:55 2008 :
А без
this.setAttribute("orient", "vertical");
вид у кнопок будет одинаковый.
Отредактировано Infocatcher (10-04-2008 14:32:01)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
может быть, это наоборот в 1.5 что-то не поддерживается, или просто разное поведение по умолчанию ?
попробуй
this. type = "menu"; this. orient = "horizontal"; // this. setAttribute ("orient", "horizontal");
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Ошибка связана с отсутствием четырёх строчек в chrome.manifest. В 0.0.3 добавлю недостающие.
Для временного обхода ошибки могу предложить записать в userChrome.css содержимое chrome://custombuttons/content/overlay.css
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"); }
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
может быть, это наоборот в 1.5 что-то не поддерживается, или просто разное поведение по умолчанию ?
Это смотря как посмотреть...
Реакцию на orient="vertical" я уже показал (см. скриншоты). И в 1.5 нет chrome://global/content/bindings/toolbarbutton.xml#menu-vertical.
Насколько я помню (давно это было), способ изменения положения «треугольничков» (через binding на #menu-vertical) я подсмотрел в Tab Mix Plus... Про orient="vertical" – тоже где-то подсмотрел.
В общем, хорошо, что компактная по высоте менюшка получилась с помощью уже имеющихся средств
Отредактировано Infocatcher (10-04-2008 23:26:26)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Это смотря как посмотреть...
Заинтриговал ты меня этим orient'ом. Объясни на словах, пожалуйста, что значит, что этот атрибуте "не работает" ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Заинтриговал ты меня этим orient'ом. Объясни на словах, пожалуйста, что значит, что этот атрибуте "не работает" ?
(Ну вот, опять все дело в словах)
Не работает == не дает никакого эффекта.
На что Firefox 1.5 выдает стрелочку справа, без «this.orient = "vertical";» – стрелочку снизу. Firefox 2.0 на «this.orient = "vertical";» не реагирует никак (стрелочка всегда снизу).
Отредактировано Infocatcher (11-04-2008 21:26:31)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Firefox 1.5 выдает стрелочку слева
Очепятка ?
Firefox 2.0 на «this.orient = "vertical";» не реагирует никак
Реагирует же на orient="horizontal" ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Очепятка ?
Да. Исправил.
Реагирует же на orient="horizontal" ?
Реагирует. Это я уже понял, спасибо за помощь.
В общем, имеет место изменение реакции на orient="vertical", на этом предлагаю данную тему закрыть.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Ок. Просто, сейчас не в силах объять всё в комплексе, из-за этого опасения, что я что-то упустил, вплоть до "а не 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
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
[...] из-за этого опасения, что я что-то упустил, вплоть до "а не CB ли "ломает" orient ?".
Нет, 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 (11-04-2008 23:35:29)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Нашел довольно странную фичу.
Если в поле «Инициализация» написать что-нибудь вроде
this.image = this.parentNode.getAttribute("iconsize") == "large" ? "file:///J:/somePath/24.png" : "file:///J:/somePath/16.png";
, а поле «Картинка» оставить пустым, то при открытии редактора в этом поле появится текущая картинка.
Я так понимаю, что берется button.image – независимо от того, что было сделано в кнопке.
Т.е. если перед сохранением не очистить поле «Картинка», сохранится совершенно ненужная информация...
Демонстрация:
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 00:51:49)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Кнопка для закрытия вкладок:
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]
Забыл сконвертировать картинку в base64... – исправил.
В Linux'е работает
Отредактировано Infocatcher (15-04-2008 17:03:29)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Нашел довольно странную фичу.
Что касается 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
Забыл сконвертировать картинку в base64... – исправил.
Себе ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Обычно очищается атрибут context, а обработчик onclick показывает контекстное меню, когда надо.
Ага, ясно. А варианты с сохранением способа показа контекстного меню есть? (Т.е. сразу по нажатию / после отпускания кнопки.)
Себе ?
Ммм? Не понял...
Закрытие вкладок №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) больше похоже на обычное поведение )
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
А варианты с сохранением способа показа контекстного меню есть? (Т.е. сразу по нажатию / после отпускания кнопки.)
Я проблемой мануального отображения контекстного меню в практике конструирования кнопок не занимался никогда. this.showPopup - это из кнопок LouCypher'а. То есть, готового кода нет у меня и не попадалось.
Ммм? Не понял...
Ну, там было что-то вроде file:///D....
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Ну, там было что-то вроде file:///D....
Было, но текст, который ты процитировал («Забыл сконвертировать картинку в base64... – исправил.»), я добавил вместе с исправлением кода кнопки. Это меня и смутило.
То есть, готового кода нет у меня и не попадалось.
Ясно.
Однако у меня есть подозрение, что способ показа контекстного меню сохраняется где-то в about:config (впрочем, может, расширение какое делает), потому как если мой основной профиль (под Windows) использовать в Linux, контекстное меню будет показываться по нажал-отпустил. Будет время – поковыряюсь... [позже: видимо, это делает Mouse Gestures в включенными жестами вида ПКМ-ЛКМ.]
Отредактировано Infocatcher (16-04-2008 00:45:25)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Написал скрипт для вставки URL (а также времени сохранения) в сохраняемую страницу.
Если текущая страница – about:blank, то открывается диалог «Открыть файл». Во всех остальных случаях – диалог сохранения. Если установлено ILO, будет включена политика «загружать только из кэша».
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 (02-05-2008 00:47:56)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Кнопка для Thunderbird, показывающая меню, аналогичное Настройки – Формат. Как и оригинальное меню, доступно только из HTML-редактора. По клику средней кнопкой мыши переключает на простой текст.
Код: http://pastebin.mozilla-russia.org/91283
Инициализация: http://pastebin.mozilla-russia.org/91284
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Единственная кнопка, которой я регулярно пользуюсь как обычный пользователь
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 - поправил код кнопки, так как первоначальный не выравнивал текст по ширине
Отредактировано Anton (26-05-2008 13:36:22)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton, а не проше ли делать так: http://pastebin.mozilla-russia.org/91285?
Кстати, на тему удобочитаемости: http://forum.mozilla-russia.org/viewtop … 42#p230242
Это я к тому, что можно сделать аналогичную штуку только при помощи закладок, да еще и с выключением.
P.S. Спасибо за апдейт
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Anton, а не проше ли делать так: http://pastebin.mozilla-russia.org/91285?
В данном конкретном и простом случае - конечно проще. Но с некоторых пор я не сторонник использования with, да и не ставил себе целью "заточку" кода этой кнопки. В исходном варианте там была всего одна строка - на background.
Конструкцию with лучше совсем не использовать - поверь моему опыту как разработчика Pastebin Panel.
Кстати, на тему удобочитаемости: http://forum.mozilla-russia.org/viewtop … 42#p230242
Это я к тому, что можно сделать аналогичную штуку только при помощи закладок, да еще и с выключением.
Я не привык к использованию закладурок. Не помню уже точно по какой причине - скорее всего сложность отладки.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует