【问题标题】:Cross domain popup window with return value带返回值的跨域弹窗
【发布时间】:2009-09-18 19:54:17
【问题描述】:

这是设置:

我在两个不同的域上有两个网站:

  • www.website1.com
  • www.someotherwebsite.com

这就是我想做的:

  1. 当用户在www.website1.com 上并单击链接时,我希望弹出一个显示www.someotherwebsite.com 的窗口。

  2. 当用户单击弹出窗口中的按钮(显示 www.someotherwebsite.com)时,我希望该窗口关闭并返回一个值。

  3. 我希望将弹出窗口返回的值放在www.website1.com 上(放入 div、javascript 调用或可访问的地方,例如填写表单字段)。

我希望这是有道理的。我只需要使用没有外部库的 HTML 和 Javascript。它还必须适用于当前的主流浏览器(即不是 HTML5 的东西)。

提前感谢您的帮助。

【问题讨论】:

    标签: javascript html popup cross-domain


    【解决方案1】:

    好吧,如果您在弹出窗口中使用 iframe [在这个时代,我会避免弹出窗口像瘟疫一样,因为弹出窗口拦截器]

    使用 iframe,您可以制作 cross domain calls

    你为什么不开发一个从 A 到 B 的 web 服务并从 A 调用它?似乎比在浏览器中发现小裂缝来绕过安全性要干净得多。

    【讨论】:

    • +1 用于代理 Web 服务推荐。似乎很合适,除非 B 需要用户进行大量交互。
    • 谢谢!这为我指明了正确的方向。我最终做的是:1)网站 A 创建一个指向网站 B www.b.com/iframe 的 iframe 2)iFrame 中的网站 B 也会在网站 B www.b.com/control 上弹出一个窗口 3)控制做什么处理它想要的。当用户单击关闭按钮时,Javascript 用于将结果推回 www.b.com/iframe 页面 4) www.b.com/iframe 修改父页面的哈希以将结果传递回那里 5) 父页面页面对结果做了什么
    【解决方案2】:

    您可以将弹出窗口中的值从 www.someotherwebsite.com 发布回 www.website1.com 上的特殊页面。现在您回到了原始域,该页面获取 GET 值并将其写入一些 JavaScript。然后,JavaScript 使用 opener.document.getElementById 更新开启器窗口中某处的值,或者使用诸如 opener.document.doSomething(val); 之类的东西调用开启器中的函数;处理响应。

    它充满了潜在的错误(如果用户打开两个窗口副本怎么办?或关闭原始站点?)和潜在的安全漏洞,如果您尝试对不支持的窗口执行操作,浏览器往往会做出不良反应'不存在或不在不同的域中,但在已知的环境中它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2017-04-02
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 2014-10-07
      • 2011-01-22
      • 1970-01-01
      相关资源
      最近更新 更多