Условно загружаемый скрипт javascript - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть расширение Chrome, на котором есть страница настроек. На странице настроек я хочу иметь кнопки предварительного просмотра и сохранения. Я хочу иметь возможность передать объект временных опций в мою заявку. Как я могу сделать это так, чтобы мне не приходилось переписывать APPLICATION дважды? Как передать информацию на html-страницу о том, что на этот раз она должна получить доступ к LocalStorage ['constant_settings'] и другим LocalStorage ['временные_установки'], и визуализировать контент, используя этот объект в качестве объекта настроек. Также я хочу, чтобы мой код выполнялся локально, поэтому я не хочу никакого PHP и т. Д.

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011

Вы можете добавить свои условия к этому методу, который позволяет динамически добавлять внешний файл 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 голос
/ 09 сентября 2011

Вы также должны попытаться сохранить источник чтения в локальном хранилище, аналогично:

// 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 голосов
/ 09 сентября 2011

Вы можете использовать jQuery для загрузки скрипта и даже выполнения кода при его загрузке. Вам даже не нужно заключать код в блок $(function(){ ... }):

$.getScript(chrome.extension.getURL("myscript.js"), function() {
    alert("myscript.js has finished loading");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...