Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Chrome扩展(域1)中存储变量,但在远程域(域2)中需要它_Javascript_Jquery_Google Chrome Extension - Fatal编程技术网

Javascript 在Chrome扩展(域1)中存储变量,但在远程域(域2)中需要它

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已被弃用。您必须将数据保存到将获取数据的域中的本地存储。

我正在尝试开发一个Chrome扩展。 在框扩展中,我允许用户存储变量(如URL)。 然后,在脚本处于活动状态的页面中,我必须检索该值

范例

Chrome扩展:

localStorage.setItem(“url”,$(“#url”).val()

Domain.net(如facebook.com)

var my_url=localStorage.getItem(“url”)


但是本地存储不允许跨域。不要回复我说使用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脚本的外部网站。你决定在哪个服务器上加载你的东西。有什么解决办法吗?:)