2011-09-08 14 views
0

設定ページがあるクロム拡張機能があります。設定ページでは、プレビューと保存ボタンが必要です。一時的なオプションオブジェクトを私のアプリケーションに渡すことができるようにしたい。アプリケーションを2回書き直す必要がないように、どうすればいいですか?今回は、LocalStorage ['permanent_settings']やその他のLocalStorage ['temporary_settings']にアクセスし、そのオブジェクトを設定オブジェクトとしてレンダリングする必要がある情報をhtmlページに渡す方法。条件付きで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");  
+0

詳細を記入してください。おそらくあなたの既存のコードのいくつか。問題が何を持っているのかははっきりしていません。 – gilly3

+0

終了時にread_fromをpermanent_settingsに変更する前にChromeがクラッシュした場合、プラグインは起動時にデフォルトでこのソースになります。こうすることで、[保存]または[プレビュー]を押さなくても、暗黙的な動作としてpermanent_settingsから読み取ることができます。詳細については私の編集された回答を参照してください。 – luvieere

答えて

2

を私は自分のコードがローカルに実行したいので、私は任意のPHPなどをしたくありませんあなたは、スクリプトをロードし、それがロードされるときにもコードを実行するためにjQueryを使用することができます

// 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]; 
} 
1

:また、あなたが動的に外部のJavaScriptファイルを追加することができ、この方法のために、条件を追加することができます

+0

終了時にread_fromをpermanent_settingsに変更する前にクロムがクラッシュするとどうなりますか?私は一時的に変更するオプションを持つ永続的な設定をデフォルトのオプションにしたい。 – siemanko

0

:あなたはと同様に、同様のローカルストレージに読み出し元を保持してみてください。 $(function(){ ... })ブロックにコードをラップする必要はありません。

$.getScript(chrome.extension.getURL("myscript.js"), function() { 
    alert("myscript.js has finished loading"); 
}); 
関連する問題