Страницы: 1
Есть расширение https://addons.mozilla.org/en-US/firefox/addon/simplefill/ - под мои задачи почти полностью устраивает (заполнение форм из контекстного меню). Единственное неудобство, список полей раскрывается в дочернем меню, а я хотел бы видеть поля - в главном контестном меню. Немного переписал функцию по выводу полей в меню, получилось так:
function createChildContextMenus(jsonString) { if (typeof jsonString !== 'undefined' && jsonString !== null && ss.storage.jsonString !== 'null' && jsonString !== "") { var jsonObj = JSON.parse(jsonString); if (typeof jsonObj.cm_items !== 'undefined' && jsonObj.cm_items.length > 0) { for(var i = 0; i < jsonObj.cm_items.length; i++) { cm.Item({ label: jsonObj.cm_items[i].title, context: cm.SelectorContext("body"), contentScript: 'self.on("click", function (node,data) {' + 'document.activeElement.value="' + jsonObj.cm_items[i].info + '"' + '});' }); } } } }
Всё вроде бы заработало, пункты меню соответствующие заполненым полям появились... и всё работает до добавления нового поля, удаления какого то, ну или просто изменения в на полях (например просто залезть в настройки полей и сохранить) .
После этого из основного контекстного меню все мои пункты пропадают, появляется пункт add-ons и все мои пункты оказываются в дочернем меню этого пункта. Что уже само по себе удивило, а при последующих изменениях в этом же субменю все пункты дублируются ещё раз и ещё! Всю голову уже сломал, как это победить. Насколько я понимаю надо перед вызовом cm.Item({ чистить то что создалось при старте браузера, но как это сделать моих знаний увы не хватает. Если выше вставить cm.destroy(), то после вызова этого метода вообще ничего не создается. В документации прочитал про метод removeItem(Item), но примеров там нет и как его применить, так и не понял. Помогите плиз, а то мозг уже начал разрушаться.
Отсутствует
После этого из основного контекстного меню все мои пункты пропадают, появляется пункт add-ons и все мои пункты оказываются в дочернем меню этого пункта.
Вчера ещё немного помучал голову, вследствии чего обнаружил странное. Если в главное контестное меню добавлять до 10 пунктов, то всё нормально . Если пунктов больше 10, то как я писал выше, появляется пункт add-ons и все мои пункты переезжают в это субменю - Это какое то искусственное ограничение firefox? Его как то можно обойти?
Отсутствует
Частично победил! ) По умолчанию фаерфокс действительно позволяет создать не более 10 пунктов. Добавляем в about:cfg - extensions.addon-sdk.context-menu.overflowThreshold, присваиваем целое значение, например 20 - и всё заработало как надо. Осталось докопаться как пункты меню удалять перед повторным созданием!
Отредактировано jorevo (27-05-2016 12:48:38)
Отсутствует
Страницы: 1