我使用Knockout.js绑定iframe src标签(这将是相对于用户可配置的)。
现在,如果用户配置http://www.google.com(我知道它不会加载在iframe,这就是为什么我使用它为-ve场景),并且必须显示在IFrame。
但它抛出错误: –
Refused to display ‘07001’ in a frame because it
set ‘X-Frame-Options’ to ‘SAMEORIGIN’.
我有Iframe的以下代码: –
<iframe class="iframe" id="iframe" data-bind="attr: {src: externalAppUrl,height: iframeheight}"> <p>Hi,This website does not supports IFrame</p> </iframe>
现在,如果我使用onload和onerror为: –
<iframe id="browse" style="width:100%;height:100%" onload="alert('Done')" onerror="alert('Failed')"></iframe>
它工作正常加载w3schools.com,但不是与google.com。
其次: – 如果我把它作为一个功能,尝试像我在我的小提琴做的,它不工作。
<iframe id="browse" style="width:100%;height:100%" onload="load" onerror="error"></iframe>
我不知道如何应该让它运行和捕获的错误。
编辑: – 我已经看到Want to call a function if iframe doesn’t load or load’s问题在stackoverflow,但它显示错误的网站可以加载在iframe。
另外,我看了Stackoverflow iframe on load event
谢谢!!
解决方法
我认为你可以绑定iframe的
load
事件,当iframe内容被完全加载时事件触发。
同时你可以启动一个setTimeout,如果iFrame被加载清除超时,或者让超时消失。
码:
var iframeError; function change() { var url = $("#addr").val(); $("#browse").attr("src",url); iframeError = setTimeout(error,5000); } function load(e) { alert(e); } function error() { alert('error'); } $(document).ready(function () { $('#browse').on('load',(function () { load('ok'); clearTimeout(iframeError); })); });
演示:http://jsfiddle.net/IrvinDominin/QXc6P/
第二个问题
<iframe id="browse" style="width:100%;height:100%" onload="load" onerror="error"></iframe>
进入:
<iframe id="browse" style="width:100%;height:100%" onload="load('Done func');" onerror="error('Failed function');"></iframe>