javascript - 如何在 Chrome 扩展中重新加载浏览器后保留变量的值

标签 javascript google-chrome google-chrome-extension

我正在编写我的第一个 chrome 扩展,而且我是这个领域的新手。

我的目标是将 url 和电子邮件发送到 PHP 服务器,但现在我将它们发送到控制台。

我的问题是将用户输入的最后一封电子邮件保存到我的分机中。 现在,当我关闭浏览器时,电子邮件的值将更改为未定义。

我放置了扩展程序的完整代码,但我认为问题一定出在 getemail 函数中。

背景.js

//variables defenitions:
var email;
var urll;
//functions:

function getemail(){
     email = window.prompt("Pleas  enter your Email address:");
     chrome.storage.sync.set({'email':email}, function() {
      alert('You entered \n[' + email + "]\n as Email address.\nThank you for registration." );
      });
        var id = chrome.contextMenus.create({"title": "Submit your url","onclick":consollog });
        var id = chrome.contextMenus.create({"title": email+"/Change" ,"onclick":getemail });
        chrome.contextMenus.remove("1", null);
        chrome.contextMenus.remove("2", null);
        var id = chrome.contextMenus.create({"id":"2","title": "SUPPORT","onclick":support});
     }


function create(){
        var id = chrome.contextMenus.create({"title": "Submit your url","onclick":consollog });
        var id = chrome.contextMenus.create({"title": email+"/Change" ,"onclick":getemail });
        chrome.contextMenus.remove("1", null);
        chrome.contextMenus.remove("2", null);
        var id = chrome.contextMenus.create({"id":"2","title": "SUPPORT","onclick":support});
     }
function support(){
    alert("Contact ways:\nPhone number:+989378114692\nEmail address:amukiarash@gmail.com");
  }

function consollog(info, tab) {
  chrome.tabs.query({
  'active':true,"currentWindow": true,
}, function(lTabs) {
    urll=lTabs[0].url;
  console.log(urll)
  console.log(email)
  alert('You sent "' + urll + '" to our server');
});
}
//menu items:
if(email==undefined){
   var id = chrome.contextMenus.create({"id":"1","title": "Register Email","onclick":getemail });
    } 
   else {create();}


var id = chrome.contextMenus.create({"id":"2","title": "SUPPORT","onclick":support});

manifest.json:

{
   "name": "Jenco",
   "description": "This extension helps you to send url",
   "version": "0.9",
   "browser_action":{
      "default_icon":"32.png",
      "default_popup":"mypopup.html"},
   "permissions": ["contextMenus","tabs","activeTab", "http://*/*", "https://*/*","storage"],
   "background": {
      "scripts": ["background.js"]
      },
   "manifest_version": 2,
   "icons": { "16": "16.png",
              "32": "32.png",
              "48": "48.png" },
   "commands": {
      "send-url": {
         "suggested_key": { "default": "Ctrl+Shift+Z" },
         "description": "Send an url"
                    }
                }
}

最佳答案

我保存变量和加载变量的代码:

// Saving
chrome.storage.sync.set({"variableName": value});
// Loading 1 thing
chrome.storage.sync.get("variableName", function(result){
    // Showing the requested variable value
    alert(result.variableName);
});
// Loading more things
chrome.storage.sync.get(["variableName", "variableNameTheSecond"], function(result){
    // Showing first the first one and then the second one
    alert(result.variablename);
    alert(result.variableNameTheSecond);
});

希望这对您有帮助,问候

埃贝

关于javascript - 如何在 Chrome 扩展中重新加载浏览器后保留变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574012/

相关文章:

javascript - 使用 Angular 时 HTML 表格中的行总和不正确

javascript - JsHint: "Expected an assignment or function call and instead saw an expression", Switch 语句

css - 边框不连续

javascript - 您可以将事件监听器定位到特定的 Chrome 警报吗?

google-chrome-extension - 将网站图标添加到 Chrome 扩展程序新标签页

javascript - 如何获取Google Tag Manager数据层的全部数据

html - Chrome 存储新密码但不将其链接到当前用户名 : how can I fix it?

javascript - 为什么在 Chrome 上忽略被拒绝的 promise 是错误的?

javascript - 在 chrome 扩展中使用 chromecast

javascript - 如何在 React Native 中构建带有计数器计时器的 OTP 组件,并使用功能组件重新发送 OTP 功能