【问题标题】:onload in iframes not working, if iframe have non-html document in src (pdf or text)如果 iframe 在 src 中有非 html 文档(pdf 或文本),则 iframe 中的 onload 不起作用
【发布时间】:2017-03-25 01:35:56
【问题描述】:

我有带有 onload 处理程序的 iframe:

<iframe id="FrameForPrintVersion" src="" border="0" style="height:0; width:0; visibility:hidden;" onload = 'frameOnload()' >

如果我使用 html-pages 作为 iframe 的来源,它可以正常工作,但当我将 src 设置为任何 pdf 文档时就不行。 在这种情况下加载 PDF 文档时是否可以处理?

【问题讨论】:

    标签: javascript iframe onload


    【解决方案1】:

    根据 W3C,iframe 标签不支持任何事件属性。 虽然主流浏览器都支持但不能依赖。 如果您真的想要它,请尝试此解决方法。您可以尝试类似的方法。

    setTimeout(function(){
        if($('#FrameForPrintVersion').contents().find('*')!='undefined') {
            alert('your frame loaded');
        }
    },200)
    

    【讨论】:

    • @aiiak 这个答案应该被标记为正确答案!另外,我想您可以使用setInterval()clearInterval() 作为刷新连接速度慢或响应数据大的 iFrame 的替代方法。
    【解决方案2】:

    这是 IE 的问题。我正在使用以下作为解决方案。

    function dodisable() {
        var b1=document.getElementById('B1'); 
        b1.value='Please Wait....'; 
        b1.disabled=true;
        document.getElementById("browse").src = "hhhh.pdf"; /*LINK TO YOUR PDF*/
        setTimeout( URLoader_Timeout, 100);
    }
    
    function doenable() {
        var b1=document.getElementById('B1'); 
        b1.value='Submit'; 
        b1.disabled=false;
    }
    
    function URLoader_Timeout() { 
        if ( document.getElementById("browse").readyState == "complete")
            doenable();
        else
            setTimeout( URLoader_Timeout ,100);
    }
    

    HTML

    <input type="button" name="B1" id="B1" value="Go" onclick="dodisable();" />
    <iframe id="browse" onload="return  doenable();" style="width:100%;height:100%"></iframe>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 2012-04-21
      • 1970-01-01
      • 2012-11-19
      • 2011-09-28
      • 1970-01-01
      相关资源
      最近更新 更多