Javascript 选择第一次单击浏览器操作时打开的弹出窗口
我开发了一个chrome扩展,将数据上传到我的API 随后是Javascript 选择第一次单击浏览器操作时打开的弹出窗口,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我开发了一个chrome扩展,将数据上传到我的API 随后是登录页面和数据上传页面。至于这个功能,一切正常 问题是当我第一次单击扩展时,它没有打开。第二次点击它就会打开。当用户单击扩展时,我需要立即打开扩展。我不知道该怎么做 这是我的密码: manifest.json { "content_scripts": [ { "matches": [ "http://*/*", "https://*/*"], "js": [ "js/dataupload.js", "js/sig
登录
页面和数据上传
页面。至于这个功能,一切正常
问题是当我第一次单击扩展时,它没有打开。第二次点击它就会打开。当用户单击扩展时,我需要立即打开扩展。我不知道该怎么做
这是我的密码:
manifest.json
{
"content_scripts": [
{
"matches": [ "http://*/*", "https://*/*"],
"js": [ "js/dataupload.js", "js/signin.js" ]
}
],
"name": "upload",
"version": "1.1",
"manifest_version": 2,
"description": "Quick access to upload data",
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'",
"permissions": [
"http://*/*",
"https://*/*",
"https://myapi.com/*",
"https://ajax.googleapis.com/*",
"management",
"tabs"
],
"icons": {
"128": "images/icon.png"
},
"background": {
"scripts": ["js/background.js"]
},
"browser_action": {
"default_title": "Upload APP",
"default_icon": "images/icon.png"
},
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}
background.js
chrome.browserAction.onClicked.addListener(function(tab) {
if (window.localStorage.getItem('user_api_key')) {
chrome.browserAction.setPopup({popup: "upload.html"});
}
else{
chrome.browserAction.setPopup({popup: "signin.html"});
}
});
代码按预期工作。第一次点击被
chrome.browserAction.onClicked捕获,它设置了下一次点击的内容
有一个直接的解决方案,就是chrome.browserAction.openPopup
函数,但是它还不稳定
因此,现在你必须重新组织逻辑,因为如果点击后没有立即弹出,你就无法打开弹出窗口。您应该将upload.html
设置为清单中的默认弹出窗口,然后在upload.html
中检查条件并根据需要重定向。请注意,localStorage
在后台和弹出窗口之间共享
因此,清单:
"browser_action": {
"default_title": "Upload APP",
"default_icon": "images/icon.png",
"default_popup": "upload.html"
},
upload.html
的代码:
if (!window.localStorage.getItem('user_api_key')) {
window.location = chrome.runtime.getURL("signin.html");
}
与我们共享一些代码,否则我们不能做太多…事实上,我有我的项目代码,我力写了任何代码打开扩展后立即用户点击。请告诉我我应该共享什么代码首先是你的清单,也许是你的小狗的html/脚本。如果您在后台脚本中使用chrome.browserAction
方法,您也应该共享其中的一个片段。换句话说:任何关于浏览器操作及其弹出窗口的信息。我已经更新了代码。让我知道这已经足够了,还是我还需要补充一些你说的没问题。但是通过在清单文件中设置默认的弹出窗口,即使在注销之后,upload.html也会显示出来。但是注销后应该显示signin.html。您是如何注销的?条件必须返回false;如果您不是简单地清除localStorage
keyHey-Xan,请调整它,您所说的非常好。我对你的答案做了一些修改。有了这个编辑,它工作得很好。谢谢Xan。我不喜欢你的编辑:它会导致更频繁的重定向,因为正常状态是登录的。但是你的回答我无法回答我的问题。所以我只是修改了你的代码并进行了测试。它对我来说很好,所以我编辑了它。