【问题标题】:chrome.storage.local.set doesn't save data locally [duplicate]chrome.storage.local.set 不在本地保存数据[重复]
【发布时间】:2014-03-16 02:25:43
【问题描述】:

我正在尝试构建一个 chrome 扩展,我必须在其中本地存储一些数据。下面给出的代码是我的 popup.html,我不明白为什么它不在本地存储中设置值。我的 manifest.json 有“存储”和“标签”权限。

<script type="text/javascript">
function save() {
  var username = document.getElementById('username').value;
  var password = document.getElementById('password').value;
  chrome.storage.local.set({'username': username}, function(){});
  chrome.storage.local.set({'password': password}, function(){}); 
}
</script>
Roll Number
<input type="text" name="username" id="username"></input>
Password
<input type="password" name="password" id="password"></input>
<button onclick="save()" type="submit" name="submit">Save</button>

这是我的 manifest.json 文件。

{
  "manifest_version": 2,

  "name": "Autologin",
  "description": "Blah bhla.",
  "version": "1.0",
  "permissions": [
    "http://xxxxxxxxxxxxx/*",
    "storage"
  ],
  "content_scripts": [
    {
      "matches": ["http://xxxxxxxxxxxxx/*"],
      "js": ["autologin.js"]
    }
  ],
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "autologin.html"
  }
}

【问题讨论】:

  • 您需要发布清单。 Chrome 一般不喜欢运行 in-html javascript;你应该把它移到一个单独的文件中。
  • 已编辑。但是 in-html javascript 在 chrome 中运行。
  • 您应该编辑您的问题,而不仅仅是您的代码,因为正如发布的那样,此代码不起作用。正如 Teepeemm 所说,清单版本 2 自动将 CSP 设置为禁止内联 JavaScript:developer.chrome.com/extensions/contentSecurityPolicy.html。我们假设您已经阅读了控制台并处理了您看到的有关 CSP 的错误消息。控制台是否还有其他错误?
  • 不。控制台中没有错误。
  • 我认为您更有可能没有看到错误。对于您的内容脚本,将控制台的 page context 更改为您的扩展程序的 ID。对于您的浏览器操作,右键单击图标和Inspect Popup。他们仍然没有显示错误吗?

标签: javascript google-chrome google-chrome-extension local-storage


【解决方案1】:

试试这个,它对我有用

var dataObj = {}; dataObj[username] = username; dataObj[password] = password; chrome.storage.local.set(dataObj, function() {});

【讨论】:

    【解决方案2】:

    您需要通过创建 popup.js 将脚本部分移出 html 并将其包含在您的 html 中。

    popup.js

    function save() {
      var username = document.getElementById('username').value;
      var password = document.getElementById('password').value;
      chrome.storage.local.set({
       'username': username ,
       'password': password
      }, function(){});
    
    }
    
    document.getElementByName("submit").onclick=save;
    

    popup.html

    将那一堆&lt;script&gt;...&lt;/script&gt; 替换为&lt;script src=popup.js&gt;&lt;/script&gt;

    ma​​nifest.json

    "default_popup": "popup.html" //the name of your popup html file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多