Параметры расширений Chrome - PullRequest
0 голосов
/ 17 мая 2011

Хорошо, поэтому я пытаюсь установить параметры для моего расширения Chrome.Я не знаю, почему это не удается, но вот мой код.Я уверен, что я делаю что-то не так.

options.html

<html>
<head><title>PT'd Settings</title></head>
<script type="text/javascript">

// Saves options to localStorage.
function save_options() {
  var select = document.getElementById("show");
  var option = select.children[select.selectedIndex].value;
  localStorage["show"] = option;

  // Update status to let user know options were saved.
  var status = document.getElementById("status");
  status.innerHTML = "Options Saved: "+localStorage["show"]; //this shows up perfectly
  setTimeout(function() {
    status.innerHTML = "";
  }, 750);
}

// Restores select box state to saved value from localStorage.
function restore_options() {
  var favorite = localStorage["show"];
  if (!favorite) {
    return;
  }
  var select = document.getElementById("show");
  for (var i = 0; i < select.children.length; i++) {
    var child = select.children[i];
    if (child.value == favorite) {
      child.selected = "true";
      break;
    }
  }
}

</script>

<body onload="restore_options()">

When to show image:
<select id="show">
 <option value="load">Show on Load</option>
 <option value="click">Show on Click</option>
</select>

<br>
<button onclick="save_options()">Save</button>
<br />
<div id="status"></div>
</body>
</html>

Затем мне нужно отправить эту опцию моему внедренному javascript

background.html

<script type="text/javascript">
chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {set: localStorage["show"]}, function(response) {
        document.getElementById("box").value = response.answer; //just for testing purposes
    });
});
document.write(localStorage["show"]); //just for testing purposes
</script>
<div id="box"></div>

внедренный javascript

...
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    alert("set "+request.set); //never even runs
    if(request.show == "click") {
        //calculate "found" value and send it back
        sendResponse({answer: found});
    }
});
...

Так что я даже не уверен, что страница background.html может читать localStorage, но я точно знаю, что она отправляет неправильно любые переменные в JavaScript.

Спасибо

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Я не уверен, что вполне понимаю, что вы делаете, но ... возможно, метод " getBackgroundPage " может выключить лампочку?

getBackgroundPage () позволяет вамчтобы поделиться состоянием JS между вашими страницами расширений (вроде модуля, если вы использовали node или requireJS) ... Я использую его в моем popup.htm, чтобы получить и отобразить любые данные, которые мой background.htm собрал.Из background.htm я предупреждаю пользователя с помощью значка расширения и уведомлений рабочего стола.

Надеюсь, это поможет!

0 голосов
/ 17 мая 2011

Я понял это!

Просто нужно было добавить разрешения к манифесту

"permissions": ["tabs"]

Документация в Google Chrome слаба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...