Xpoint
   [напомнить пароль]

Расширения к Netscape Navigator и, в частности, регистрация тулбара

Метки: [без меток]
2007-03-02 19:56:39 [обр] blacklion[досье]

Надо спортировать расшерение на Netscape Navigator 7.2+, с FireFox/Mozilla.
И не могу решить даже простую задачу — добавление тулбара.
Нет, он добавляется. Через оверлей. Как обычно.
Но после этого он самый верхний (сразу под меню), и не виден в "Customize toolbars...". Как ни крутил — не смог седалть, что бы он был самым нижним по-умолчанию или хотя бы настраивался.

Никто не делал расширений именно для NN? А то документации по нему практически нет :(

спустя 1 день [обр] Владимир Палант(434/4445)[досье]

Для ясности: последняя версия браузера Netscape Navigator вышла восемь лет назад. После этого был только Netscape, у которого с Netscape Navigator мало общего. Более того, даже у Netscape 7.2 и Netscape 8.0+ общего мало — один в принципе Mozilla 1.7 (который теперь SeaMonkey), а другой — Firefox 1.0. Вас на самом деле интересует Netscape 8.0+, насколько я понимаю?

Для Netscape 8.0 делал — Adblock Plus его какое-то время поддерживал. Существенных отличий от Firefox 1.0 в области работы с тулбарами не заметил. Может покажете код, которым ваш оверлей добавляет тулбар?

спустя 21 минуту [обр] blacklion[досье]

Мне нужны Netscape 7.2 и Netscape 8.0+. Т.е., по сути, Mozilla 1.7 и FF 1.0, я уже это увидел. Соотв., экстеншен, который работает и там и там вполне возможен — так же как возможен экстеншен для FF+Moz "в одном флаконе".

С тулбаром таки есть хитрость в Netscpae 8.0+: там система тулбаров расширена относительно FF 1.0 (возможны пользовательские тулбары) и тулбокс (toolbox) сортирует тулбары при старте. Причём, первыми идут те, что не упомянуты в toolset'е (в его атрибуту toolbarorder). Так как оверлей не может добавить значение к атрибуту, пришлось добавить вот такой код в обработчик load'а:

  var toolbarset = document.getElementById('navigator-toolbox').toolbarset;
  var f = false;
  var dto = toolbarset.getAttribute("toolbarorder").split(',');
  for(var i = 0; !f && i < dto.length; ++i) {
    if(dto[i] == "pts-toolbar") {
      f = true;
    }
  }
  if(!f) {
    toolbarset.setAttribute("toolbarorder", toolbarset.getAttribute("toolbarorder") + ",pts-toolbar");
    document.getElementById('navigator-toolbox').reorderToolbars();
  }
  // always add this one, it is not persistent
  toolbarset.setAttribute("defaulttoolbarorder", toolbarset.getAttribute("defaulttoolbarorder") + ",pts-toolbar");

Самое обидное, что нужен разный код в одних и тех же оверлеях для FF/N8 и MZ/N7.2 — не получается сделать одну сборку экстеншена на 4 браузера (ну или надо делать динамическую проверку на барузер в коде — но это мне не нравится из-за неэффективности. Хотя может бытья так и поступлю в результате).

спустя 2 минуты [обр] blacklion[досье]
Ах, да, еще из хитсростей, может кому пригодится: я сделал скин classic как всегда, и N8.1.2 упорно не находил CSS (с замечательным, как всегда, сообщением об ошибке при парсинге XUL'а). А вот скин modern он понял. Хотя, по идее, должен понимать любой... но факт — простое переименование скина (каталога и ссылок в RDF) помогло...
спустя 1 день 17 часов [обр] Владимир Палант(434/4445)[досье]
сообщение промодерировано

У меня вполне нормально умещаются SeaMonkey и Firefox в одном оверлее. Принцип такой:

<!-- SeaMonkey tools menu -->
<menupopup id="taskPopup">
  <menuitem label="&menuitem.label;..." accesskey="&menuitem.accesskey;" key="abp-key-settings" insertafter="downloadmgr" oncommand="abpSettings()"/>
</menupopup>
<!-- Firefox tools menu -->
<menupopup id="menu_ToolsPopup">
  <menuitem label="&menuitem.label;..." accesskey="&menuitem.accesskey;" key="abp-key-settings" insertafter="javascriptConsole" oncommand="abpSettings()"/>
</menupopup>

Плохо то, что приходится несколько раз писать одно и то же. Кроме того, для Thunderbird или Songbird все-таки приходится использовать отдельные оверлеи (хотя пакет один и тот же). Поэтому теперь я в оверлеях прописываю лишь отличающиеся элементы:

<!-- SeaMonkey tools menu -->
<menupopup id="taskPopup">
  <menuitem id="abp-menuitem" insertafter="downloadmgr"/>
</menupopup>
<!-- Firefox tools menu -->
<menupopup id="menu_ToolsPopup">
  <menuitem id="abp-menuitem" insertafter="javascriptConsole"/>
</menupopup>

А на этот оверлей вешаю общий оверлей, для всех приложений:

<menuitem id="abp-menuitem" label="&menuitem.label;..." accesskey="&menuitem.accesskey;" key="abp-key-settings" oncommand="abpSettings()"/>
спустя 18 часов [обр] blacklion[досье]

Да, Seamonket и FireFox — сколько угодно, я сам уже придумал (еще год назад) идею с общим оверлеем.
Но вот когда оверлеить надо один и тот же базовый файл (так как база одна), но совершенно по-разному (потому что шаловливые ручёнки Netscape'овских программистов сильно что-то поменяли) — тут-то и возникакет проблема.

Хотя, как я уже написал в комменте к ЖЖ, это можно решиь на уровне разных способов инсталляции.

И очновная проблема даже не с оверлеями а со skins — что бы они выглядели родными они должны быть разными для разных браузеров.

Powered by POEM™ Engine Copyright © 2002-2005