您好我需要在Chrome扩展程序中显示弹出窗口。我已将我的网站设置为chrome扩展程序。 以下是用例:
local storage
中。 localstorage
如果没有,那么它应该再次显示弹出,否则它应该导航到我的网站。现在我的问题是
请帮帮我。 这是我的background.js
chrome.browserAction.onClicked.addListener(function(tab) {
if(!localStorage.username){
chrome.browserAction.setPopup({
popup: "userinfo.html"
}); }
else{
//navigate to website
});
这是我的userinfo.html
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="test.js">
</script>
</head>
<body>
<font face="sans-serif"><b>Enter your Email ID</b></font><br><br>
<form id="userinfo">
<table><tr><td>
<font face="sans-serif"><label for="user">Email</label></font></td><td>: </td>
<td><input type="text" id="user" /></td><span id="semail"></span>
</table><br><br>
<font face="sans-serif"><input type="submit" id="login" value="Log In"/></font>
</form>
</body>
</html>
这是我的test.js
window.addEventListener('DOMContentLoaded', function() {
var user = document.querySelector('input#user');
var form = document.querySelector('form#userinfo');
form.addEventListener('submit', function(evt) {
evt.preventDefault();
var userStr = user.value;
chrome.runtime.getBackgroundPage(function(bgPage) {
bgPage.login(userStr/*,pwdStr*/); });
window.close();
});
});
任何人请帮助我
答案 0 :(得分:1)
让我们一个接一个地解决你的问题。
1.当我仅在图标上单击两次时,才会弹出。
当您单击扩展图标时,您的browserAction.onClicked
处理程序将被执行,它只会设置弹出窗口。它没有打开它。您必须再次单击扩展图标以打开弹出窗口。这就是你必须点击两次的原因。
2.输入名称后点击登录弹出即可关闭,这很好。
这是因为您正在重定向到关闭扩展程序弹出窗口的新页面。
3.当我再次点击图标时,实际上它应该导航到网站,但在我的代码中它再次显示弹出。
由于您有用于扩展程序点击的设置弹出窗口,因此它已经覆盖了chrome.browserAction.onClick
处理程序,这就是您无法导航到您的网站的原因。
4.当我重新加载扩展程序时,它可以正常工作。
这是因为重新加载后,您的chrome.browserAction.onClick
不会被弹出窗口覆盖,并且由于localstorage
中存在登录凭据,因此您的代码不会覆盖它。
background script
中,检查凭据是否存储在localstorage
中,然后不设置弹出窗口,否则设置弹出窗口。chrome.browserAction.onClick
以始终导航到您的网站。您知道如果弹出窗口打开,那么您的处理程序将不会被执行。chrome.browserAction.setPopup({popup: ""});
<强> onClicked 强> 单击浏览器操作图标时触发。如果浏览器操作有弹出窗口,则不会触发此事件。
chrome.browserAction.onClicked
事件,只需在弹出脚本中编写代码。window.close()