【问题标题】:var myvalue = window.opener.document.getElementById(“parentId1”) is not workingvar myvalue = window.opener.document.getElementById(“parentId1”) 不工作
【发布时间】:2014-01-16 09:29:24
【问题描述】:

我试图使用

从 child.jsp 获取值到 parent.jsp
var myvalue = window.opener.document.getElementById(“parentId1”) 

即使在控制台中没有发现错误,也没有在父页面中获取值。

子弹出窗口的 url 以 https://host.example.com:7001/..... 开头,而父页面 url 以 http://anotherhost:8080/webapp.. 开头不同。与子窗口和父页面通信是否有任何问题?在另一台服务器上?

如果是这样,我该如何解决这个问题?

【问题讨论】:

  • 我删除了javajsp 标签;这个问题与所使用的服务器端技术无关。
  • 这没有给你任何错误?! “parentId1” 将抛出 SyntaxError: Unexpected token ILLEGAL。您必须使用"' 来分隔字符串文字。
  • @Quentin 在哪里查找错误消息。
  • 在 JavaScript 控制台中。

标签: javascript html


【解决方案1】:

...在与另一个服务器上的子窗口和父页面通信时是否有任何问题?

是的,浏览器对Same Origin Policy 的实现可以防止这种情况发生。

如果你控制两个服务器,看看使用Cross Origin Resource Sharing

或者,如果您控制页面上的 JavaScript 代码而不是服务器(或者只是如果您更喜欢这种机制),您可以使用 postMessage 将消息从一个窗口发送到另一个窗口。您不能像在代码 sn-p 中那样直接访问其他窗口的元素,但两个页面可以合作将相关值从一个页面传递到另一个页面,甚至是跨域。更多关于postMessage: MDN | Spec

除非您可以使用 CORS 或 postMessage,否则我认为您无法在客户端执行此操作;你需要一个代理。

【讨论】:

  • 感谢您的回复。那么我该如何解决这个问题。任何建议。
  • @user3148715:我将 CORS 内容移到了答案中,并添加了关于 postMessage 的注释(昆汀在评论中提到的事情)。
猜你喜欢
  • 2013-08-23
  • 2011-09-03
  • 2011-08-05
  • 2021-06-14
  • 2012-03-04
  • 2013-04-21
  • 2021-07-24
  • 2017-10-03
  • 1970-01-01
相关资源
最近更新 更多