想要在iframe无法加载或加载的情况下调用函数?

Kun*_*ist 9 html javascript iframe onload

iframe我的页面中有一个.如果iframe没有加载,想要它alert的消息" pdf not found ",如果iframe加载,它应该alert" pdf打开 ".

有谁知道如何实现这一目标?

Šim*_*das 10

因此,我们的想法是使用Ajax请求来"测试"URL.Ajax请求使您能够绑定"成功"和"错误"处理程序 - 与<iframe>仅提供"加载"处理程序的元素不同.

当然,Ajax请求受同源策略限制(除非Web服务器启用CORS),但您声明PDF在同一域中,因此不应存在任何问题.

另外,你说你使用Mootools库 - 我使用jQuery,所以我只能为你提供一个jQuery解决方案,但是因为我们用"成功"和"错误"处理程序做了一个简单的Ajax请求,你应该是能够轻松地基于我的jQuery解决方案重新创建Mootools解决方案.

所以,给定一个iframe和一个URL:

var iframe = $( '#iframe' )[0]; // reference to IFRAME element
var url = 'files/document1.pdf';
Run Code Online (Sandbox Code Playgroud)

Ajax请求:

$.get( url, function () {
    iframe.onload = function () { alert( 'PDF opened!' ); };
    iframe.src = url;
}).error( function () { alert( 'PDF not found' ); });
Run Code Online (Sandbox Code Playgroud)

成功演示: http ://jsfiddle.net/CZWdL/1/show/
错误演示: http ://jsfiddle.net/CZWdL/2/show/

因此,如果Ajax请求触发"错误"事件,我们只需立即警告"未找到"消息.但是,如果Ajax请求触发"成功"事件,我们为IFRAME元素分配一个"加载"处理程序(这个"加载"处理程序最终将警告"已加载"消息),并src手动将URL设置为其属性.