jquery如何在每次iframe更改状态时收集iframe的内容

jquery how do i collect the content of an iframe each time the iframe changes state?

本文关键字:iframe 状态 jquery      更新时间:2023-09-26

我正在做一个项目,我想收集一个隐藏iframe的内容,并在加载时每次iframe更改状态时将其作为div的html,这样页面就会像重定向并下载其内容一样,但页面的标题和底部也不会刷新。

一个很好的例子是facebook如何在重定向时保持他们的航向和立足点不变。

我已经使用onload实现了将iframe内容收集到div,但问题是,在收集之前,内容不会完全从iframe下载,即图像、.css文件和.js文件。

这是我尝试过的一个代码:

加载时用于收集内容的脚本

<script type="text/javascript">
function frame_loaded(){
         var content=$('#iframe_id').contents().find('#body');
         $('#my_div').html(content);
}
</script>

和框架

<iframe id="iframe_id" src="some_url.php" style="display: hidden;" onload="frame_loaded()"></iframe>

和DIV

因此,我使用setTimeout()来减慢1秒的时间,以便帧在收集内容之前加载内容并完全执行其脚本

这是代码:

setTimeout(function(){
 $('#my_div').html(content);
},1000);

有时内容仍然无法完成从iframe下载之前收集的内容。

我不知道如何在iframe完全加载或处于就绪状态时收听它。

如果有人能告诉我最好的方法,我会非常感激,因为我对此很陌生。

我建议使用portholejs,它将帮助您与iframe(域xyz.com)交互,并且您可以在iframe和包含它的页面(域abc.com)之间传递消息。例如,在您的情况下,当iframe加载时,您可以将布尔值(来自xyx.com)传递到包含iframe的页面(abc.com它舷窗如何在这里工作的工作示例。希望能有所帮助。

有点"愚蠢",但试试这个(我没有你的代码,所以对我来说有点"困难"

$(document).on('load','#iframe_id',function(){
    var content = $(this).content().find('#body');
    $('my_div').html(content);
})