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扩展。我在浏览器操作场景中面临一个问题。我曾尝试在谷歌搜索解决方案,但徒劳无功 下面是一个场景 当点击chrome扩展图标时,我想要两个不同的动作(浏览器动作)。如果我有一些密钥存储在本地存储器中,我需要向内容脚本发送消息,否则我需要显示弹出窗口 例如,假设我试图验证用户是否登录了gmail。第一次,如果用户没有登录,我需要在单击扩展图标时显示带有消息“请登录”的弹出窗口。如果用户已经登录,那么我会将其存储在本地存储中,因此如果用户再次单击图标而不

我正在尝试创建一个带有内容脚本交互的chrome扩展。我在浏览器操作场景中面临一个问题。我曾尝试在谷歌搜索解决方案,但徒劳无功

下面是一个场景

当点击chrome扩展图标时,我想要两个不同的动作(浏览器动作)。如果我有一些密钥存储在本地存储器中,我需要向内容脚本发送消息,否则我需要显示弹出窗口

例如,假设我试图验证用户是否登录了gmail。第一次,如果用户没有登录,我需要在单击扩展图标时显示带有消息“请登录”的弹出窗口。如果用户已经登录,那么我会将其存储在本地存储中,因此如果用户再次单击图标而不是显示弹出窗口,则需要联系内容脚本

请建议

编辑:在此处更新我的代码

在background.js中。(问题是它没有进入else部分。尽管它有本地存储值,但始终显示弹出事件)


现在还不完全清楚您在这里需要什么帮助,所以根据您问题的措辞,我猜测您需要逻辑或本地存储方面的帮助

我对chrome扩展图标上的事件一无所知,但假设您可以获得该事件,您的代码应该如下所示:

// this code goes inside your icon click handler
if (localStorage.loggedIn === 'loggedIn') {
    // do whatever action you want to happen if the user is logged in
} else {
    if (/* check to see if logged in goes here*/) {
        // user is logged in so store value so you don't have to check again
        localStorage.loggedIn = 'loggedIn';
    } else {
        localStorage.clear('loggedIn');
        alert("Please login to gmail first")
    }
}

当然,这段代码会按照您的要求执行,但它不会处理用户单击按钮、登录、然后在将来某个点注销并再次单击按钮的情况。在这种情况下,不会重置localStorage值,除非您在其他位置执行此操作。

browserAction.onClicked事件在已经有弹出窗口时不会触发。

您好,mordred,我已经有了此逻辑。但我坚持使用chrome浏览器。我会在那里更新我的代码
// this code goes inside your icon click handler
if (localStorage.loggedIn === 'loggedIn') {
    // do whatever action you want to happen if the user is logged in
} else {
    if (/* check to see if logged in goes here*/) {
        // user is logged in so store value so you don't have to check again
        localStorage.loggedIn = 'loggedIn';
    } else {
        localStorage.clear('loggedIn');
        alert("Please login to gmail first")
    }
}