如何写入不同域的本地存储。我的想法是,我需要我的Chrome扩展在本地存储中写入内容,并且当用户访问关联的网站时,站点站点可以读取本地存储的内容。我试图在用户的个人数据之间进行同步,而不必将其存储在服务器中。Chrome扩展程序 - 写入不同域的本地存储
5
A
回答
2
我认为唯一的解决方案是通过跨域限制的脚本注入。
var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
添加文件script.js
您的分机访问其他网站的本地存储,你必须在你的清单文件添加到script.js
“web_accessible_resources”。
请注意,在脚本完全加载后脚本会自动删除,因此请确保您要执行的代码包含在自执行功能中。
6
Content scripts直接访问页面的localStorage。
如果您想要存储特定域的值,只需打开一个窗口或框架,然后写入窗口/页面的本地存储。
选择您喜欢的选项来激活页面:
chrome.tabs.create
创建活动标签,也许在使用chrome.tabs.query
发现的非活动窗口。- 实验
offscreenTabs
API(实验,所以没有准备好在生产中使用)。看到我发布在SO上的一些examples。 - 创建一个IFrame并将其插入当前页面。
window.open
(不推荐...)
当你决定打开一个页面,挑选一个是重量轻。
/robots.txt
通常是一个不错的选择:它存在于大多数网站上,和它是一个纯文本文件。激活页面的内容脚本。您可以使用清单文件并使用messaging API,或将回调添加到以编程方式插入内容脚本(
chrome.tabs.executeScript
)的chrome.tabs.create
方法中。
下面是一个简单的例子。它需要tabs
API,因为我使用的是chrome.tabs.executeScript
。此外,您想访问的来源也应该添加到权限列表中。
chrome.tabs.create({
active: false,
url: 'http://stackoveflow.com/robots.txt'
}, function(tab) {
chrome.tabs.executeScript(tab.id, {
code: 'localStorage.setItem("key", "value");'
}, function() {
chrome.tabs.remove(tab.id);
});
});
相关问题
- 1. Chrome扩展程序和本地存储
- 2. Chrome扩展程序本地存储:Background.html无权访问本地存储?
- 3. Chrome扩展上的本地存储
- 4. 检索本地存储的JSON Chrome扩展程序
- 5. Chrome扩展替代本地存储?
- 6. Chrome扩展程序可以访问本地存储吗?
- 7. Chrome扩展程序数据库存储
- 8. 从Chrome扩展程序编程中的内容脚本访问本地存储
- 9. Google Chrome扩展程序save data localy
- 10. Chrome扩展程序:在内容脚本中多次访问本地存储
- 11. Chrome扩展本地存储不能正常工作
- 12. Chrome扩展程序 - 不保存数据
- 13. Chrome扩展程序商店
- 14. Chrome扩展程序
- 15. Chrome扩展程序
- 16. Chrome扩展程序将数据保存到本地文件
- 17. 跨域jQuery.Ajax请求 - Chrome扩展程序
- 18. Google Chrome扩展程序跨域XMLHttpRequest
- 19. 使用Chrome扩展时访问CSS中的本地存储?
- 20. 如何查看/检查Chrome扩展的本地存储?
- 21. Chrome扩展程序,内容脚本的程序化注入
- 22. 存储变量Chrome扩展(域1),但我需要它在远程域(域2)
- 23. Chrome浏览器扩展 - 本地存储无法正常工作
- 24. 在Chrome扩展中将文件存储到本地磁盘
- 25. Chrome扩展可以从本地存储中读取数据吗?
- 26. Chrome扩展请求本地存储配额超时错误
- 27. 如何从Chrome扩展本地存储获取数据?
- 28. 如何“隐藏”Chrome扩展本地存储
- 29. Chrome扩展:本地存储,如何导出
- 30. Chrome扩展程序+飞镖
当然,这看起来像一个可行的解决方案。虽然我现在的问题是我需要从背景页面做到这一点。创建一个完整的选项卡会向用户显示一些内容。屏幕外标签不会与背景页面一起工作。 Window.open()显然不是一个解决方案。然而,我会尝试使用iFrame,并让你知道它是如何发生的。 – budsiya 2013-03-08 19:32:25