Страницы: 1
Помогите написать скрипт добавления вкладки в закладки.
Есть такой код, который я взял из плагина bookmarkthistab:
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <popupset id="mainPopupSet"> <menupopup id="tabContextMenu"> <menuitem insertbefore="context_bookmarkAllTabs" command="Browser:AddBookmarkAs" label="Bookmark This Tab" /> </menupopup> </popupset> </window>
Но он добавляет текущую открытую вкладку в закладки (даже если кликнуть по другой).
Я нашел способ (как мне кажется), получить кликнутую вкладку через gBrowser.selectetTab (если не ошибаюсь).
Теперь мне нужна помощь: как наз. ф-ция добавления в закладки и можно-ли туда передать эту табу? я помню что-то видел подобное, но оно принимало урл и тайтл (как из selectedTab получить урл и тайтл?).
Заранее спасибо (сам я программирую на плюсах \ шарпе и не знаю даже что собсно гуглить =\ а новый язык учить из-за такой мелочи неохота).
Отсутствует
Можно сделать как в пункте «Добавить страницу в закладки» контекстного меню страницы.
Там
chrome://browser/content/nsContextMenu.js
bookmarkThisPage: function CM_bookmarkThisPage() { window.top.PlacesCommandHook.bookmarkPage(this.browser, PlacesUtils.bookmarksMenuFolderId, true); },
Далее посмотреть на
label="Обновить вкладку"
oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"
и попробовать что-нибудь вроде
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <popupset id="mainPopupSet"> <menupopup id="tabContextMenu"> <menuitem insertbefore="context_bookmarkAllTabs" oncommand="window.top.PlacesCommandHook.bookmarkPage(TabContextMenu.contextTab.linkedBrowser, PlacesUtils.bookmarksMenuFolderId, true);" label="Bookmark This Tab" /> </menupopup> </popupset> </window>
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Добавлено 01-12-2012 00:55:44
Громаднейшее спасибо! Все работает!
(правда по началу добавляло имя как адрес, но после получаса манипуляций я понял что я кликал еще не по подгруженной вкладке (когда перезапустил ФФ все вкладки кроме текущей не активны, я об этом), думал нужно передать третий параметр (который бул)).Еще вопрос:
insertbefore="context_bookmarkAllTabs"не работает эта строчка кода (меню получается в самом низу). Не подскажите как исправить?
Прошу прощения. Портил все Menu Editor. Все работает!
Отредактировано Zedx (01-12-2012 00:57:45)
Отсутствует
Еще хотелось бы сделать, что-бы ФФ запоминал последний ИД добавленной папки вкладок (т.е. добавили закладку в папку Test и добавляя другую вкладку в закладки, что-бы по умолчанию стояла уже эта папка Test).
PlacesCommandHook.bookmarkPage(TabContextMenu.contextTab.linkedBrowser, PlacesUtils.bookmarksMenuFolderId, true);
3-й параметр как-раз и передаёт АЙди папки.
Вопрос:
Как сделать, чтобы при сохранении закладки менялся и bookmarksMenuFolderId на значение папки этой самой сохраненной закладки.
Или если этого сделать нельзя, получается нужно завести скрипт, в котором объявить переменную, которая будет хранить последний индекс сохраненной папки?
Заранее спасибо за ответ.
Отсутствует
Окей. Может кто-то подскажет как отловить событие закрытия окна закладок? и в нем сделать что-то типа:
var bmm = document.getElementById("bookmarksMenuPopup"); if (bmm) bmm.addEventListener("popuphiding", oncloseBookmarksMenu, false);
А в oncloseBookmarksMenu получить ИД выбранной папки и сохранить ее в переменную (которую мы будет передавать в PlacesCommandHook.bookmarkPage)? не?
Отсутствует
Страницы: 1