Javascript 从外部源/文件填充Chrome上下文菜单

Javascript 从外部源/文件填充Chrome上下文菜单,javascript,xml,google-chrome,google-chrome-extension,Javascript,Xml,Google Chrome,Google Chrome Extension,我目前正在编写一个Chrome扩展,它的基本功能是作为一个快速选择工具。这意味着我使用的是一个通过ASP.NET网站实现的文件分类界面,我必须选择特定的值,如日期、说明、标记等,在上载特定文件时对其进行描述。因此,我决定使用Chrome的开发工具来构建一个易于使用的上下文菜单,您只需右键单击页面,该页面会显示一个预定义规则列表,当单击时,该列表会自动填写页面上所有适当的字段、文本框、下拉列表等 问题是有很多预定义的规则,它们很容易更改,并且大多数都有子节点,例如:规则1包含1.1、1.2等,这使

我目前正在编写一个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).

您可以通过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"));
            });
        });
    }
});

但我同意Jim Schubert在评论中的建议——只需将包含所有这些设置的js文件包含在某种对象中即可使用。如果您可以首先将所有内容存储为javascript对象,则无需将XML转换为javascript

我编写了一个扩展,它从一个已定义结构的内存JSON对象中读取类似的内容。只需使用JsonSerializer而不是XML,并确保您的文件看起来像var myObj={};然后作为任何其他.js文件包含。看看我的分机:谢谢吉姆,你的分机非常有用。我会看看能不能想出类似的办法。谢谢你的提示。看起来我会使用JSON序列化程序。但是很高兴看到如何获取XML文档。