iframe 内容加载后触发 js 函数

Posted

技术标签:

【中文标题】iframe 内容加载后触发 js 函数【英文标题】:Triggerring js function after iframe content loads 【发布时间】:2015-04-06 08:39:22 【问题描述】:

我正在从外部站点(Twitter 提要)加载 iframe,并希望使用 JS 更改 css 样式。

JS代码为:

$(".twitter-timeline").contents().find(".p-name").css("font-size","16px");
);

问题是我似乎无法在 iframe 的内容加载后执行此操作。我尝试使用以下方法打开该功能:

$('iframe.twitter-timeline').load(function()

$('#twitter-widget-0').load(function()

但它们似乎在 iframe 完成加载之前触发。当我刷新页面时,样式会按预期应用。但是,如果我清除缓存并再次重新测试,除非我刷新,否则它将无法工作。

如果我使用

window.setTimeout(function()

给它 3 秒左右,它有时会起作用,这取决于互联网速度,所以我不想使用它。

【问题讨论】:

【参考方案1】:
<iframe id='myframe' src='http://url/doit.php' onload="onLoadHandler();"></iframe>

<script type="text/javascript">
function onLoadHandler() 
    $(".twitter-timeline").contents().find(".p-name").css("font-size","16px");

</script>

为 iframe 设置 onload 处理程序,然后在函数内运行您的代码。

【讨论】:

谢谢,我应该提到 twitter 的做法是他们从 js 代码中写入 iframe 代码,所以据我所知,我无法添加任何内容。 在您设置加载功能时,iframe 是否可能不存在?您可以尝试将其注销console.log($('iframe.twitter-timeline').length &gt; 0); 如果它不存在,则可能您的负载处理程序未设置。你可能需要在 Twitter 代码运行后运行它。【参考方案2】:

抱歉,在另一个线程中找到了答案,效果很好: Styling the new twitter widget (embedded timeline)

我使用 jquery.waituntilexists.js https://gist.github.com/buu700/4200601

【讨论】:

以上是关于iframe 内容加载后触发 js 函数的主要内容,如果未能解决你的问题,请参考以下文章

页面调用iframe,网站配置到服务器上之后,iframe部分的内容无法加载

当浏览器请求部分内容范围请求时,如何检测何时在 iframe 中加载 pdf?

创建新的 iframe 并同步加载内容

确定 IFrame 已加载后何时呈现 iFrame 内容

检测动态加载的 iframe

iframe如何使用javascript替换内容?