JavaScript:从弹出窗口获取值(外部网站)

我正在使用此代码从弹出窗口中的字段中获取值。

http://myotherwebsitename.com/parent.html

   document.getElementById('show').addEventListener('click', function(){ window['output'] = document.getElementById('output'); window.open('http://mywebsite.com/map.html') });  

http://mywebsite.com/map.html

    document.getElementById('send').addEventListener('click', function(){ window.opener['output'].value = document.getElementById('user_text').value; })  

如果它们都托管在同一个网站上,它可以很好地工作,但是如果我将其中一个放在其他网站上则不起作用。

我怎样才能让它适用于不同的网站?

谢谢!

由于相同的原始政策,您无法从其他网站获取信息。 这里有一个更好的定义为什么……

在计算中,同源策略是许多浏览器端编程语言(如JavaScript)的重要安全概念。 该策略允许在源自同一站点的页面上运行的脚本 – 方案,主机名和端口号[1]的组合 – 在没有特定限制的情况下访问彼此的DOM,但阻止访问不同站点上的DOM。[1] 同源策略也适用于XMLHttpRequest和robots.txt。

http://en.wikipedia.org/wiki/Same-origin_policy

希望这可以帮助。 我会看看我是否可以找到解决方法并让你知道。

是的,相同的原产地政策……

如果您有权访问外部站点,则可以通过在请求OPTIONS上设置Access-Control-Allow-Origin标头来授予对第一个域的访问权限 。 这里PHP示例:

  if (isset($_SERVER['HTTP_ORIGIN']) && in_array($_SERVER['HTTP_ORIGIN'], $allowedList)) { header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']); header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Max-Age: 1000'); header('Access-Control-Allow-Headers: X-Requested-With, Content-Type'); exit; } 

但是你应该知道,HTTP_ORIGIN包含模式,你应该在$ allowedList中指定http和https域。