使用Javascript或jQuery将元素写入子iframe

我有这样的事情:


<html>

  <body>

     <iframe id="someFrame"></iframe>

  </body>

</html>

而且我想使用jQuery编写元素,以使等效的HTML完全像这样:


<html>

  <body>

    <iframe id="someFrame">

      <!-- inside the iframe's content -->

      <!-- <html><body>  -->

      <div>A</div>

      <div>B</div>

      <div>C</div>

      <!-- </body></html> -->

    </iframe>

  </body>

</html>

另外,任何普通的Javascript也可以。


谢谢。


编辑:经过更多的研究,似乎我正在寻找iframe的contentDocument属性的IE等效。“ contentDocument”是FF支持的W3C标准,但IE不支持。(惊喜)


大话西游666
浏览 677回答 3
3回答

白猪掌柜的

经过一番研究,并得到了Mike的肯定回答,我发现这是一个解决方案:&nbsp; var d = $("#someFrame")[0].contentWindow.document; // contentWindow works in IE7 and FF&nbsp; d.open(); d.close(); // must open and close document object to start using it!&nbsp; // now start doing normal jQuery:&nbsp; $("body", d).append("<div>A</div><div>B</div><div>C</div>");

慕莱坞森

我在这里四处走动,建议到目前为止提出的答案是不可能的。如果此iframe实际上有一个src =“ somepage.html”(您应该已经指明,否则,使用iframe的意义是什么?),那么我认为Jquery不能在所有浏览器中直接跨框架操作html。 。根据我对这种事情的经验,包含页面无法直接从iframe页面调用函数或与iframe页面进行任何形式的Javascript联系。您的“ somepage.html”(在iframe中加载的页面)需要做两件事:将某种对象传递到可用作桥梁的包含页面具有根据需要设置HTML的功能因此,例如,somepage.html可能看起来像这样:<html><head><script src="jquery.js"></script><script language=JavaScript><!--//&nbsp; &nbsp; var bridge={&nbsp; &nbsp; &nbsp; &nbsp; setHtml:function(htm) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.body.innerHTML=htm;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; $(function() { parent.setBridge(bridge); });//--></script></head><body></body></html>并且包含页面可能如下所示:<html><head><script src="jquery.js"></script><script language=JavaScript><!--//var bridge;var setBridge=function(br) {&nbsp; &nbsp; bridge=br;&nbsp; &nbsp; bridge.setHtml("<div>A</div><div>B</div><div>C</div>");&nbsp; &nbsp; }//--></script></head><body><iframe src="somepage.html"></iframe></body></html>这可能看起来有些令人费解,但可以在多个方向进行调整,并且至少应在IE,FF,Chrome和Safari和Opera中起作用。
打开App,查看更多内容
随时随地看视频慕课网APP