Javascript Internet Explorer重新加载IFrame

Javascript Internet Explorer重新加载IFrame,javascript,iframe,internet-explorer-11,zk,Javascript,Iframe,Internet Explorer 11,Zk,我有一个web表单(使用ZK框架),比如在 此表单get包含在iframe中的我的主页(例如)中 奇怪的是: 在InternetExplorer9-11中,每当我取消聚焦一个字段时,IFrame就会完全重新加载(在那里会发生一些字段检查)。但这只发生在IE中,也只发生在IFrame中。如果我直接加载,它工作正常 另一个让整个事情变得奇怪的细节是:如果我在IE中额外打开一个选项卡并在那里加载,iframe突然也可以正常工作(在一次重新加载之后) 不幸的是,IE在重新加载iframe时没有显示任何错

我有一个web表单(使用ZK框架),比如在

此表单get包含在iframe中的我的主页(例如)中

奇怪的是:

在InternetExplorer9-11中,每当我取消聚焦一个字段时,IFrame就会完全重新加载(在那里会发生一些字段检查)。但这只发生在IE中,也只发生在IFrame中。如果我直接加载,它工作正常

另一个让整个事情变得奇怪的细节是:如果我在IE中额外打开一个选项卡并在那里加载,iframe突然也可以正常工作(在一次重新加载之后)

不幸的是,IE在重新加载iframe时没有显示任何错误,因此我不知道发生了什么以及为什么。其他浏览器(Firefox、Chrome)可以很好地使用IFrame


有什么线索可能是原因吗?

在本例中,原因是P3P,如下所述:

简而言之,Internet Explorer在iFrame等中拒绝来自第三方上下文(不同域)的Cookie。这当然会导致上述行为:

  • 发送到ZK后端的任何请求(包括在“焦点丢失”时触发的请求)都没有会话id(因为没有cookie),因此ZK将触发完全重新加载
  • 在另一个选项卡中打开ZK应用程序可以创建cookie,然后iframe中的ZK应用程序可以访问该cookie

解决方案是在ZK中发送正确的P3P头,这可以通过多种方式完成,例如通过、在servlet过滤器中或直接在web服务器上。完成此操作后,应用程序按照IE 9-11中的预期工作。

在这种情况下,原因是P3P,如下所述:

简而言之,Internet Explorer在iFrame等中拒绝来自第三方上下文(不同域)的Cookie。这当然会导致上述行为:

  • 发送到ZK后端的任何请求(包括在“焦点丢失”时触发的请求)都没有会话id(因为没有cookie),因此ZK将触发完全重新加载
  • 在另一个选项卡中打开ZK应用程序可以创建cookie,然后iframe中的ZK应用程序可以访问该cookie
解决方案是在ZK中发送正确的P3P头,这可以通过多种方式完成,例如通过、在servlet过滤器中或直接在web服务器上。完成这项工作后,该应用程序按照IE 9-11中的预期工作