Я правильно понимаю - расширенное отображение закладок в сайдбаре задумано только для того, чтобы получить url закладки ?
Смотря что понимать под «получить url закладки». Для начала – просто добавить выбор: без столбцов / со столбцами (когда можно увидеть URL).
А в идеале – сделать подсказки (и URL в строке состояния) и для сайдбара (честно говоря, понятия не имею, как получить что-нибуть от treechildren). Плохо, что в Boox многовато лишнего – поди отыщи нужный код.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Сделать оверлей на тот *.xul, который показывает в боковой панели закладки.
О, заработало! Спасибо!
Прикрутил интерфейс для настроек.
Bookmarks Tooltips 0.0.4a4 [4,8 кб]
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Мои исследования в области боковой панели закладок: http://pastebin.mozilla-russia.org/89760, http://pastebin.mozilla-russia.org/89761
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
На исследования сейчас взгляну, а пока...
Код
if(et == "mouseout") if(currentStatus == bmURI) // else => status change => not backup restore setStatus(bookmarksTooltips_oldStatus); // restore old
в случае, когда URL отображается в urlbar'е, сбрасывает состояние после клика по закладке:
currentStatus = url закладки (мы его открыли)
bmURI = url закладки
Есть идея сделать так:
var showIn = nsPreferences.getIntPref("bookmarkstooltips.showUriIn", 1); // ... if(currentStatus == bmURI) { // else => status change => not backup restore (not urlbar) var s = showIn == 4 ? «получение текущего адреса» : bookmarksTooltips_oldStatus; setStatus(s); // restore old }
Но все, что у меня заработало (window.location и document.location), возвращает chrome://browser/content/browser.xul
location.bref, хоть и работает из закладок (например, «javascript: location.href='view-source:' + location.href;»), почему-то не помогло.
Посему вопрос. Как получить URL открытого в браузере документа?
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Мои исследования в области боковой панели закладок
Замечательно!
Приделал switch для установки нового значения и восстановления, в зависимости от bookmarkstooltips.showUriIn.
Теперь бы только изменение строки состояния прикрутить (мне так как-то привычней), вернее, не изменение, а придумать алгоритм бэкапа / восстановления (наверное, разделить mouseover и mouseout по аналогии с тем, что уже есть).
Можно ли сделать выделение закладки под курсором? (Не, я понимаю, что можно, вот только как...)
И еще (только сначала надо разобраться со статусбаром). Надо бы tooltip для закладок в боковой панели добавить (aka покажем кукиш Boox'у ).
Отредактировано Infocatcher (21-07-2007 20:14:06)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Нда... В случае с сайдбаром, похоже, сплошной mouseover...
Так что восстанавливает исходное состояние только заголовок
Bookmarks Tooltips 0.0.4a5 [5,5 кб]
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Как получить URL открытого в браузере документа?
Можно ли сделать выделение закладки под курсором?
http://pastebin.mozilla-russia.org/89765
Кстати. Функция getBookmarkURLById должна работать и для пунктов меню "Закладки". Может быть, это пригодится в плане упрощения кода.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Нда, искал-искал – чего только не нашел, кроме нужного. А в результате ответ был найден на моем собственном винчестере (в коде практически моего собственного расширения):
document.getElementById("content").currentURI.spec
Bookmarks Tooltips 0.0.4a6 [5,7 кб]
Точно правильно работает отображение в заголовке (не titlemodifier) и в urlbar'е.
Два оставшихся способа, думается, заглючат на дрегендропе в сайдбаре, но сегодня уже даже проверять не хочется. [позже: таки глючит...]
Может быть, это пригодится в плане упрощения кода.
Раз уж речь зашла о упрощениях...
Есть пары функций backupStatus, setStatus и restoreStatus (по две каждой – всего 6 – см. код), которые отличаются только наличием parent. перед обращением к свойству. Можно ли их как-нибудь объединить (надеюсь, моя мысль понятна)?
P. S. Спасибо за код подсветки текущей закладки.
P. P. S. А теперь – спать
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Можно ли их как-нибудь объединить
У меня идея примерно такая: http://pastebin.mozilla-russia.org/89768
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
У меня идея примерно такая
Так, оптимизация пока откладывается до лучших времен (когда всё нормально заработает – вот тогда )...
В общем, проблема с сайдбаром.
1. Ставим отображение в строке состояния.
2. Открывает about:blank не из сайдбара – ручками, например (в статусе – пусто).
3. Из сайдбара открываем любую ссылку (в статусе – «Готово»).
4. Двигаем мышь – устанавливается адрес закладки.
5. Уходим с сайдбара (в статусе – пусто).
Пытался восстанавливать только если «то, что мы сами установили» == «то, что сейчас в статусе», но что-то не выходит...
Уфф, я уж думал, AiOS обиделся... Короче говоря, если добавить столбцы в боковую панель с закладками, то они (ссылки) будут открываться только даблкликом (только СКМ не меняет действия). Кстати, после этого решил проверить, так вот, из менеджера закладок открывается также (даблкликом).
[Помнится, кто-то когда-то желал получить сию фичу...]
Bookmarks Tooltips 0.0.4a7 [5,8 кб]
Отредактировано Infocatcher (22-07-2007 20:41:43)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Еще один момент.
Надо как-то останавливать функцию mousemovehandler при открытии контекстного меню.
А
mousemovehandler: function (event) { var tree = event.target; bookmarkstooltipsSB.dumpMsg("tree.tagName = " + tree.tagName);
нужного результата не дает...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
оптимизация пока откладывается до лучших времен (когда всё нормально заработает – вот тогда smile)...
По-моему, самое время оптимизировать архитектуру.
В общем, проблема с сайдбаром. ... Пытался восстанавливать только если «то, что мы сами установили» == «то, что сейчас в статусе», но что-то не выходит...
... var bookmarksTooltips_setStatus = "?"; // copy of last established status var bookmarksTooltipsPrevURL = null; ... setStatus: function(val) { switch( nsPreferences.getIntPref("bookmarkstooltips.showUriIn", 1) ) { case 1: var st = this. getStatus (); if ((st != bookmarksTooltips_oldStatus) && (st != bookmarksTooltipsPrevURL)) bookmarksTooltips_oldStatus = st; parent.document.getElementById("statusbar-display").setAttribute("label", val); ... } bookmarksTooltips_setStatus = val; bookmarksTooltipsPrevURL = val; }, ...
Добавлено Срд 25 Июл 2007 22:37:02 :
p.s. небольшое добавление к коду подсветки закладок в боковой панели:
bookmarkstooltipsSB.oldFocus = parent.document.commandDispatcher.focusedElement || parent.document.commandDispatcher.focusedWindow;
Отредактировано Anton (25-07-2007 22:38:16)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
По-моему, самое время оптимизировать архитектуру.
Ну...
После внесения изменений всё заработало (0.0.4a8). Т.е. если что – полностью рабочая версия имеется
Выделил common-секцию, подключил к ней сайдбар (0.0.4a9). Всё Ok.
Подключил основное окно – и всё...
Ошибка: this.doc has no properties Источник: chrome://bookmarkstooltips/content/common.js Строка: 75
case 1: if(noEsc) this.doc.getElementById("statusbar-display").setAttribute("label", bookmarksTooltips_oldStatus);
Или я в чем-то нехило промахнулся?..
Bookmarks Tooltips 0.0.4a10 [5,7 кб] (Внимание! Глюкует не по-детски!)
P. S. Чуть не забыл.
Как насчет этого:
Надо как-то останавливать функцию mousemovehandler при открытии контекстного меню.
?
А то сейчас при (после) клике правой кнопкой мыши по-прежнему происходит выделение строк, вот только совсем неадекватно (высота, похоже, берется от начала <menupopup>).
Отредактировано Infocatcher (26-07-2007 16:10:59)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Или я в чем-то нехило промахнулся?
this в обработчике указывает не на bookmarksTooltips. Можно сделать _this = bookmarksTooltips; или вызывать bookmarksTooltips. restoreStatus (); из функции-обработчика.
Как насчет этого:
Ставишь обработчики popupshown или popushowing и popuphiding на id="bookmarks-view", при обработке соответственно снимаешь/ставишь все mouse* обработчики.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Полезное расширение, только вот у меня стоит еще "2 Pane Bookmarks", очень удобно, но подсказки "не всплывают" (точнее нет адреса УРЛ ни в подсказке, ни в строке состояния), как задумано в Bookmarks Tooltips...
Может, подкрутите в "консерватории"?
Отсутствует
М. Порешаев
Сейчас скачаю расширение и посмотрю, что там такое сотворили...
А вообще, добавьте в userChrome.css
/* Многострочная панель закладок */ #bookmarks-ptf { display: block !important; } #bookmarks-ptf toolbarseparator { display: inline !important; }
И будет Вам счастье прямо здесь и прямо сейчас
[Позже] *качает расширение* Если речь идет о боковой панели, то счастья, пожалуй, будет чуть меньше...
К тому же, с боковой панелью работают только версии 0.0.4a*, а полностью (надеюсь) рабочую версию я зажал и не выкладывал...
С дрегендропом опять траблы (корректно работает только в сайдбаре) – как мне кажется, из-за
backup: function() { var st = this.getStatus(); if((st != bookmarksTooltips_oldStatus) && (st != bookmarksTooltips_PrevURL)) bookmarksTooltips_oldStatus = st; },
Пока пытался убрать все ошибки, заметил кое-что интересное: если при неправильном статусе навести курсор на ссылку, то статус (после ухода со ссылки, конечно) восстановится на "Готово". Отсюда вывод: "правильный" статус где-то запоминается (или его можно как-то заполучить). Вот только поиск в коде браузера пока результатов не дал...
P. S. Давно хотел спросить (но все забывал). Как влияет true / false в конце addEventListener (опытным путем я понял только что при true функция может выполняться несколько раз)?
Отредактировано Infocatcher (26-07-2007 23:43:56)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
М. Порешаев
Тыкскыть, спешл фо ю:
Bookmarks Tooltips 0.0.4a8+ [6,0 кб]
(всплывающих подсказок – tooltip'ов – для сайдбара нет; а также выделение строк пока не подправлено на случай контекстного меню)
Прикручено вот так:
var bmcvw; // 2 Pane Bookmarks if(bmcvw = document.getElementById("bookmarks-content-view")) { bmcvw.addEventListener("mouseover", bookmarkstooltipsSB.backupStatus, true); bmcvw.addEventListener("dragover", bookmarkstooltipsSB.backupStatus, true); bmcvw.addEventListener("mousemove", bookmarkstooltipsSB.mousemovehandler, true); bmcvw.addEventListener("mouseout", bookmarkstooltipsSB.restoreStatus, true); }
Отредактировано Infocatcher (27-07-2007 00:25:11)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Как влияет true / false в конце addEventListener
Если true, обработчик поймает событие в capture phase, если false - в bubble phase.
http://www.w3.org/TR/DOM-Level-3-Events … vents-flow
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Если true, обработчик поймает...
Ммм? Мой английский не столь хорош, как хотелось бы, посему (если не трудно) или суть кратко, или что-нибудь по-русски на тему (если есть).
P. S. Нда, Гугл выдал:
булевое значение, если true, то осуществляется capture, если false - bubling (если не в курсе, что это означает - пишите false ;-)
Отредактировано Infocatcher (27-07-2007 01:15:05)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Ммм? Мой английский не столь хорош...
Смотри картинку по ссылке, которую я дал. Там видно где capture phase, где bubble phase. Вкратце - если хочешь поймать клик по кнопке и ставишь "click" обработчик на эту кнопку, значение параметра useCapture можешь задавать каким захочешь, параметр имеет значение только для обработчиков на родительских элементах этой кнопки.
В продолжение моих исследований: http://forum.mozilla-russia.org/uploade … -0.1.0.xpi
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Смотри картинку по ссылке, которую я дал
О, нашел-таки
Отредактировано Infocatcher (27-07-2007 01:29:00)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
В продолжение моих исследований
Ну, что я могу сказать... Ты крут!
Но я все равно придерусь
Найденные баги (в боковой панели):
I («Стандартный» режим – без доп. столбцов)
1. Дрегендроп работает только сразу после загрузки сайдбара (один раз)
Примерно так: Ctrl+T – переоткрытие сайдбара (*) – работает ([позже] не всегда...)
2. Первая закладка открывается одинарным кликом, все последующие – двойным (а иногда – все двойным... – связи не уловил).
(*) – клик по ссылке (одинарный). Остальные – двойной.
Хотелось бы вернуть в «стандартный» режим одинарный клик...
3. Трудно «поймать» скроллбар... (опять же не всегда, но иногда совсем не скроллится).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Спасибо, за "спешл фо ю"!
Отсутствует
все равно придерусь
http://forum.mozilla-russia.org/uploade … -0.2.0.xpi
Одна из причин крылась в вызове showPopup.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Новые замечания (тестировался только режим с отображением в строке состояния).
1. «Стандартный» режим боковой панели.
Грузим about:blank, наводим курсор на любую закладку, кликаем, ждем, пока выдаст «Готово» и уходим с закладки – статус сбросится.
По этому поводу еще раз повторюсь: если после некорректной записи статуса навести курсор на ссылку, статус восстановится (sic!)
Хмм... Мёд – это очень уж хитрый предмет: если он есть, то его сразу нет. Описанное выше действо не всегда приводит к ошибке (и из панели закладок, кстати, тоже – то глючит, то нет)...
2. Столбцы в боковой панели.
tooltip'ы замирают и не исчезают, пока не наведешь на них курсор (или не всплывет стандартная подсказка на URL).
Строки не выделяются (по клику – да, при перемещении – нет). Удобнее, ИМХО, все же как-то отмечать закладку под курсором (как там серая подсветка достигалась?)
И, я думаю, удобнее будет показывать в tooltip'е еще и URL – не только название.
Да, и статус отваливается напрочь – ничего не показывается.
3. Панель закладок.
about:blank (пусто) – получаем about:neterror («Готово») – уходим с закладки (статус сбрасывается) – жмем на file-закладку – получаем file:///... в статусе. *здесь должен быть сильно удивленный смайлик*
Отредактировано Infocatcher (27-07-2007 23:31:42)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует