2011-09-08 45 views
0

我有一個Chrome擴展有一個設置頁面。在設置頁面中,我想要預覽和保存按鈕。我希望能夠將臨時選項對象傳遞給我的應用程序。我該怎麼做,以便我不必重寫APPLICATION兩次?如何將信息傳遞給html頁面,這次它應該訪問LocalStorage ['permanent_settings']和其他LocalStorage ['temporary_settings'],並使用該對象呈現內容作爲設置對象。此外,我希望我的代碼在本地執行,所以我不希望任何PHP等有條件加載JavaScript腳本

+0

請提供更多詳細信息。也許你現有的一些代碼。目前還不清楚你有什麼問題。 – gilly3

+0

如果Chrome在退出時將read_from更改爲permanent_settings之前崩潰,則插件在啓動時將默認爲此源。這樣,即使您沒有按保存或預覽,也可以從permanent_settings讀取隱含的行爲。有關詳細信息,請參閱編輯的答案 – luvieere

回答

2

您可以添加條件,以這種方法,它允許你動態地添加一個外部JavaScript文件:

loadExternalScriptFile = function(filename) { 
    var fileref = document.createElement("script"); 
    if (fileref){ 
     fileref.setAttribute("type","text/javascript"); 
     fileref.setAttribute("src", filename);   
     if (typeof fileref != "undefined") 
      document.getElementsByTagName("head")[0].appendChild(fileref); 
    } 
} 

//dynamically load and add this .js file 
loadExternalScriptFile("myscript.js");  
1

你應該抱着試試看在本地存儲讀取源爲好,以類似的方式:

// At startup, defaulting to permanent_settings 
function onLoad() { 
    LocalStorage['read_from'] = 'permanent_settings'; 

    // Other initialization work 
    // ... 
} 

// When pressing Save 
function onSaveClick() { 
    LocalStorage['read_from'] = 'permanent_settings'; 
} 

// When pressing Preview 
function onPreviewClick() { 
    LocalStorage['read_from'] = 'temporary_settings'; 
} 

// When accessing the settings, read their source 
function getSettingForKey(var key) { 
    var source = LocalStorage['read_from']; 

    // It can be either permanent_settings, or temporary_settings 
    var settingsArray = LocalStorage[source]; 

    return settingsArray[key]; 
} 
+0

如果在退出時將read_from更改爲permanent_settings之前chrome崩潰了,該怎麼辦?我希望默認選項是permananent設置,並且可以選擇更改爲臨時設置。 – siemanko

0

您可以使用jQuery加載腳本,甚至當它的加載執行代碼。您甚至不必將代碼包裝在$(function(){ ... })區塊中:

$.getScript(chrome.extension.getURL("myscript.js"), function() { 
    alert("myscript.js has finished loading"); 
});