2011-06-28 85 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文檔。 –