Javascript 在Chrome扩展(域1)中存储变量,但在远程域(域2)中需要它
我正在尝试开发一个Chrome扩展。 在框扩展中,我允许用户存储变量(如URL)。 然后,在脚本处于活动状态的页面中,我必须检索该值 范例 Chrome扩展: localStorage.setItem(“url”,$(“#url”).val() Domain.net(如facebook.com) var my_url=localStorage.getItem(“url”)Javascript 在Chrome扩展(域1)中存储变量,但在远程域(域2)中需要它,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在尝试开发一个Chrome扩展。 在框扩展中,我允许用户存储变量(如URL)。 然后,在脚本处于活动状态的页面中,我必须检索该值 范例 Chrome扩展: localStorage.setItem(“url”,$(“#url”).val() Domain.net(如facebook.com) var my_url=localStorage.getItem(“url”) 但是本地存储不允许跨域。不要回复我说使用GlobalStorage已被弃用。您必须将数据保存到将获取数据的域中的本地存储。
但是本地存储不允许跨域。不要回复我说使用GlobalStorage已被弃用。您必须将数据保存到将获取数据的域中的本地存储。 听起来像是您控制了该域,因此您可以在该域上使用简单的HTML文件创建代理,称之为saver.HTML:
<html><script>
localStrorage.url=decodeURIComponent(location.hash.slice(1));
</script></html>
以这种方式,数据被传递到正确的域并保存到localStorage
如果需要,您可以在代理html页面中使用top.sendMessage()向应用程序发出信号,表明数据已写入远程本地存储 您只需使用并将其与组合即可。你没有提到它在哪里,你正在保存值,所以我假设它在弹出窗口或类似的东西中。例如:
Popup.js
//Let's define urlData to be the url you obtained from the user
chrome.storage.local.set({'urlData':urlData});
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){
if(message.method == "getUrl"){
chrome.storage.local.get('urlData',function(items){
sendResponse(items.urlData);
});
}
});
然后您说您需要在页面中使用它,因此如果您将内容脚本注入该页面,您可以获得如下值:
内容脚本
chrome.runtime.sendMessage({method:'getUrl'},function(urlData){
//do whatever you want with the urlData in here. I will just log it
console.log(urlData);
});
Background.js
//Let's define urlData to be the url you obtained from the user
chrome.storage.local.set({'urlData':urlData});
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){
if(message.method == "getUrl"){
chrome.storage.local.get('urlData',function(items){
sendResponse(items.urlData);
});
}
});
嗯,这个网站是facebook.com,你认为这个域名是我的吗?如果你不能在这个网站上托管html文件,你就根本做不到,但是为什么需要在一个你无法控制的网站上设置这个值,即使它被保存了,你也无法读取这个值呢?我正在做一个扩展,允许你将Facebook上的图像和文本导出到安装了php脚本的外部网站。你决定在哪个服务器上加载你的东西。有什么解决办法吗?:)