【问题标题】:Saving status of a checkbox across Chrome tabs/ browsers in the chrome extension在 chrome 扩展中跨 Chrome 选项卡/浏览器保存复选框的状态
【发布时间】:2013-07-24 16:14:31
【问题描述】:

我正在创建一个通过快捷方式激活的 chrome 扩展程序。基本上,会在您所在的页面上创建一个 div,该页面有几个问题。每个答案都带有一个复选框。

然后用户可以选择一个或几个答案,并且需要转到另一个页面/选项卡,他/她可以选择更多或更少选项。

问题在于,一旦您在另一个选项卡中激活此扩展程序,用户从另一个选项卡单击的所有复选框都不会传递到新选项卡(尽管它们保存在该选项卡上)。因此,我的目标是弄清楚如何在本地缓存该信息,以便用户可以转到不同的选项卡并继续使用这些复选框,它们将跨选项卡保存。

我一直在阅读有关 Chrome.Storage (https://developer.chrome.com/extensions/storage.html) 的信息,但无法弄清楚语法会是什么样子。

想知道是否有人可以为我指出一个更好的例子或让我从这里开始。

干杯,非常感谢, -是的

【问题讨论】:

    标签: google-chrome-extension


    【解决方案1】:

    如果您想将数据保存到用户的 Google 帐户以便跨计算机使用,请使用 chrome.storage.sync

    但如果只需要在本地保存数据,请使用chrome.storage.local

    保存数据:

    var answersToSet = {};
    answersToSet.answerA = 'foo';
    answersToSet.answerB = 'bar';
    chrome.storage.sync.set(answersToSet, function(){
        if (chrome.runtime.lastError) {
            alert('Error setting answers:\n\n'+chrome.runtime.lastError);
        } else {
            alert('Answers saved.');
        }
    });
    

    检索数据:

    var answersToGet = [];
    answersToGet.push('answerA');
    answersToGet.push('answerB');
    chrome.storage.sync.get(answersToGet, function(answers){
        console.log(answers.answerA);
        console.log(answers.answerB);
    });
    

    或者,您可以只使用localStorage,尽管这不是异步的:

    localStorage.answerA = 'foo';
    localStorage.answerB = 'bar';
    console.log(localStorage.answerA);
    console.log(localStorage.answerB);
    

    【讨论】:

    • 只是想知道:一旦单击复选框并保存它,它怎么知道? (对不起,如果这是一个菜鸟问题,只是想理解它,因为我让它适用于文本区域但不适用于复选框)
    • 我不知道普通的 JavaScript,但如果你使用 jQuery,你可以监听 change 事件。示例:stackoverflow.com/a/9180144/206410 官方文档:api.jquery.com/change
    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    相关资源
    最近更新 更多