阻止浏览器在iframe文档中加载自定义框架集

时间:2011-08-24 13:53:24

标签: javascript iframe

我一直在尝试与来自同一个域的两个 iframe 进行通信,这两个 iframe 是从另一个域加载到一个页面中的。

问题是浏览器会在iframe内容上创建自定义框架集。 我无法使用 parent.iframes [x] .name 从iframe中检索iframe名称,因为脚本将 frameset 作为父级。

以下是我的实际HTML代码 -

<html>
 <head>
 </head>
 <body>
  <p>iframe1</p>
  <script type="text/javascript">
  var frames = parent.frames;
  for(var i=0; i < frames.length; i++)
  {
    if(frames[i].name != "undefined")
      alert(frames[i].name);
  }
  </script>    
 </body>
</html>

以下是浏览器生成的内容 -

 <!--inside iframe-->
 <html>
  <head></head>
    <frameset border="0" rows="100%,*" cols="100%" frameborder="no">
       <!--actual document goes inside frame tag-->
      <frame name="TopFrame" scrolling="yes" noresize="" src="http://abnormalz.stuffshake.com/fframe.html">
     <frame name="BottomFrame" scrolling="no" noresize="">
     <noframes></noframes>
   </frameset>
</html>

这个问题有解决办法吗?

您可以在http://stuffshake.com/parent.html

查看测试

1 个答案:

答案 0 :(得分:1)

只需使用localStorage或sessionStorage即可。由于两个iframe都来自同一个域,因此它们共享相同的localStorage。如果修改了值,LocalStorage将发送事件。

自IE8起支持。