2011-06-28 51 views
1

我目前正在写一个Chrome扩展,其基本功能是作为一种快速选择工具。这意味着,我通过一个ASP.NET网站实现了一个文件分类界面的工作,我必须选择特定值(如日期,说明书,标签等)描述了一个特定的文件,当我把它上传。所以,我决定使用Chrome的DEVELOPPEMENT工具来构建一个易于使用的上下文菜单(你只需要在页面上点击右键)呈现的预先定义的规则列表,单击时,请填写所有相应的字段(文本框,下拉列表等)自动在页面上。从外部源填充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

我写的扩展,它确实相当类似于此(从定义的结构的一个内存JSON对象中读取)。只需使用JsonSerializer而不是XML,并确保文件看起来像'var myObj = {};'然后包含任何其他'.js'文件。看看我的扩展:https://github.com/jimschubert/select-actions –

+0

谢谢吉姆,你的扩展是非常有用的。我会看看我能否拿出类似的东西。 –

回答

0

你可以加载它通过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文件包含准备使用某种对象的所有设置。如果您只需将所有内容作为javascript对象存储起来,则无需将XML转换为javascript。

+0

感谢您的提示。似乎我会去与JSON序列化器。但很高兴看到如何获得XML文档。 –