Заполнить контекстное меню Chrome из внешнего источника / файла - PullRequest
1 голос
/ 28 июня 2011

В настоящее время я пишу расширение для Chrome, основная функция которого - служить инструментом быстрого выбора. Это означает, что я работаю с интерфейсом классификации файлов, реализованным через веб-сайт ASP.NET, и мне приходится выбирать конкретные значения (например, дату, описание, теги и т. Д.), Описывающие конкретный файл, когда я загружаю его. Итак, я решил использовать инструменты разработки Chrome для создания простого в использовании контекстного меню (вам просто нужно щелкнуть правой кнопкой мыши на странице), которое представляет список предопределенных правил, которые при нажатии заполняют все соответствующие поля ( текстовые поля, выпадающий список и т. д.) на странице автоматически.

Дело в том, что этих предопределенных правил много, и они подвержены изменениям, и у большинства из них есть дочерние узлы (например: правила 1 содержат 1.1, 1.2 и т. Д.), Что затрудняет кодирование прямо в форме сценария. Поэтому моя идея заключалась в том, чтобы включить определения в отдельный файл, такой как документ XML, и просто заполнить контекстные меню извлеченными данными. Только я пробовал много разных методов, и ни один из них не работал. Разве нельзя иметь этот XML-файл в папке расширений и просто получить к нему доступ? Если это так, как будет выглядеть код, вызывающий его? Могу ли я даже взаимодействовать с такого рода локальным ресурсом из расширения Chrome? Любые входные данные приветствуются.

Пример:

// This is the parent "general" section
var general = chrome.contextMenus.create({ "title": "General" });

 // Here, there would be a loop iterating through the "general" division of the XML,
 // creating the sub-menus (general_item1, general_item2, etc).

1 Ответ

0 голосов
/ 28 июня 2011

Вы можете загрузить его через XMLHttpRequest и проанализировать его с помощью jquery, например:

$.ajax({
    url: "include.xml",
    dataType: "xml",
    success: function(xml) {
        $(xml).find("entry").each(function(){
            //loop through children
            $(this).children("subentry").each(function(){
                console.log($(this).attr("param"));
            });
        });
    }
});

Но я хотел бы пойти с тем, что Джим Шуберт предложил в комментариях - просто включите файл js, который содержит все эти настройки в некотором родеобъекта, готового к использованию.Нет необходимости конвертировать XML в javascript, если вы можете просто сохранить все как объект javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...