Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展-保存弹出窗口的登录详细信息_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript Chrome扩展-保存弹出窗口的登录详细信息

Javascript Chrome扩展-保存弹出窗口的登录详细信息,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在开发一个Chrome扩展,它需要用户登录一个帐户才能看到他们的内容。我想做的是防止用户每次登录时都必须使用相关登录/会话数据保存某种cookie或localStorage 到目前为止,在做了一些研究之后,使用谷歌Chromes本地存储API似乎是最好的方法(如果有人能证实这一点,那就太好了) 我的问题是设置和获取本地存储。我在这里设置了一个虚拟本地存储场景,只是想让Chrome为扩展存储任何类型的本地存储: Popup.js: function setCookie(){ chrom

我正在开发一个Chrome扩展,它需要用户登录一个帐户才能看到他们的内容。我想做的是防止用户每次登录时都必须使用相关登录/会话数据保存某种cookie或localStorage

到目前为止,在做了一些研究之后,使用谷歌Chromes本地存储API似乎是最好的方法(如果有人能证实这一点,那就太好了)

我的问题是设置和获取本地存储。我在这里设置了一个虚拟本地存储场景,只是想让Chrome为扩展存储任何类型的本地存储:

Popup.js:

function setCookie(){
    chrome.extension.sendMessage({name: 'setLoginCookie'}, function(otherResponse) {
        console.log(otherResponse)
    })
}

function getCookie(){
    chrome.extension.sendMessage({name: 'getloginCookie'}, function(response) {
        alert(response)
    })
}
event.js:

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {

    if (request.name == 'setLoginCookie') {
        var obj = {test:"test"}    
        chrome.storage.sync.set(obj, function() {
            alert('Data saved');
        });           
    }    

    if (request.name == 'getLoginCookie') {
           chrome.storage.sync.get('test', function(data) {
                sendResponse({ screenshotUrl: data.test });
        })       
    }
    return true;

});
当执行setCookie函数时,我会收到“数据已保存”的警报这对我来说意味着它已经工作了,但是当我检查扩展Chrome开发工具上的本地存储时,那里什么都没有,如果我调用
getCookie
函数,那么它就什么都没有了

以下是my manifest.json中的权限:

  "permissions": [
    "storage",
   "cookies",      
    "tabs",
    "<all_urls>",
    "pageCapture",
    "downloads"      
  ],  
“权限”:[
“存储”,
“饼干”,
“标签”,
"",
“页面捕获”,
“下载”
],  
我在这里用错方法了吗?是否正在使用
chrome.storage.sync
可能是哪里出了问题


谢谢,chrome.storage.sync与本地存储不同,在开发工具本地存储中,您将看不到使用此方法保存的数据

您的消息不匹配。您正在使用
{name:'getloginCookie'}
发送消息,并且
if
语句正在检查
getloginCookie
。不同之处在于传递给
sendMessage
函数的参数中的小写字母
l

当我在我的Chrome开发工具上检查本地存储时,那里什么都没有

开发工具不会暴露其中的
chrome.storage

“本地存储”项将公开
localStorage

要检查扩展的
chrome.storage
,您可以从控制台使用或简单调用
chrome.storage.sync.get(null,(data)=>{console.log(data)})



注意:您不必将使用
chrome.storage
的工作委托给您的事件页面
chrome.storage
可直接从所有扩展上下文(后台、弹出窗口、选项、内容脚本)访问。不要仅仅为了这个而对消息进行分层。

1。2.如何调用getCookie?为什么不直接在弹出窗口中存储和获取数据
chrome.storage.local
在后台上下文(包括弹出窗口)和内容脚本中的任何页面都可用。好的,我刚刚看到扩展上次通过时在扩展中有一些会话存储,所以我想知道他们是如何做到的!您可以从扩展内部使用
sessionStorage
/
localStorage
,但它与域绑定,因此不能与内容脚本共享
chrome.storage
是一个新的API,在这些应用程序之间共享。这是一个问题,也是一个好地方。代表我犯了愚蠢的错误。那么您是否同意使用chrome.storage.sync是存储登录/会话详细信息的正确方法?@BenLiger那么您是否认为我们可以使用其他方法在chrome扩展中保存登录的会话?如果不在本地存储中存储用户密码,我就不知道如何存储会话以防止重新登录?@Hafizallylalani您可以从这里了解有关chrome extensions中存储的更多信息。我应该在询问之前阅读它,但现在有一个足够清楚的信息,本地存储不应用于存储用户数据。