google-chrome - Chrome 扩展 options.js 通知 content_script.js 设置更改

标签 google-chrome google-chrome-extension

通知我的 content_script.js 设置更改的正确方法是什么?

当我将设置写入 localStorage 时,我想对内容脚本执行 sendMessage/sendRequest ,以便它可以相应地应用它们。

我必须执行 options.js > background.js > content_script.js

想法?

选项.js

$('#add-filter-button')
    .button()
    .click(function(event) {
        event.preventDefault();
        var userFilters = new Array();
        var newFilter = $('#add-filter').val();
        if (newFilter !== undefined && newFilter.length > 0) {
            $('#filters-box').append(new Option(newFilter, newFilter));
            $('#add-filter').val('');
            $('#filters-box option').each(function() {
                userFilters.push( $(this).text() );
            });
            localStorage['userFilters'] = JSON.stringify(userFilters);
            chrome.storage.sync.set({'userFilters': userFilters});
        }
    });

内容.js

chrome.storage.onChanged.addListener(function(changes, namespace) {
    for (key in changes) {
        var storageChange = changes[key];
        console.log('Storage key "%s" in namespace "%s" changed. ' +
            'Old value was "%s", new value is "%s".',
            key,
            namespace,
            storageChange.oldValue,
            storageChange.newValue);
        }
});

最佳答案

使用chrome.storage API https://developer.chrome.com/docs/extensions/reference/storage/#event-onChanged

它有一个事件onChanged

例如:

设置.js

chrome.storage.local.set({'value': theValue});

内容.js

chrome.storage.onChanged.addListener(function(changes, namespace) {
  for (key in changes) {
    var storageChange = changes[key];
    console.log('Storage key "%s" in namespace "%s" changed. ' +
                'Old value was "%s", new value is "%s".',
                key,
                namespace,
                storageChange.oldValue,
                storageChange.newValue);
  }
});

关于google-chrome - Chrome 扩展 options.js 通知 content_script.js 设置更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765434/

相关文章:

javascript - Chrome History API 异常行为

google-chrome - 如何在 Windows 中为 Google Chrome 创建 PPAPI 插件?

google-chrome - 如何将 Vue.js Chrome devtools 与 jsFiddle 一起使用?

google-chrome - Chrome扩展修改FormData

java - 从 Selenium 和 chromedriver 下载文件

html - Chrome 中的慢速聚焦输入字段

javascript - 在 javascript 中处理 RFC 2822 电子邮件

google-chrome - 是否可以在 Google Chrome 扩展程序中与本地应用程序交互?

google-chrome - 如何获取 Chrome 扩展程序的当前选项卡 URL?

javascript - 将变量从 popup.js 传递到 background.js 作为未定义接收