我看到这个问题在这里被多次询问过。一些解决方案部分工作。这就是场景。我需要使用<embed>
加载一个包含pdf的iframe。有可能找不到PDF,我将在iFrame中显示错误页面。
加载iframe后,我会使用
查找<embed>
代码
$('#iframe').contents().find('embed')
我尝试使用$('#iframe').load()
。这适用于Firefox,Chrome但不适用于IE。
还尝试使用$('#iframe').ready()
。但这适用于IE,
$('#iframe').contents().find('embed')
不起作用。
有人可以帮忙吗?
编辑: IE版本:7或8.尊重相同的原始政策。
答案 0 :(得分:1)
您使用的是哪个版本的jquery和IE?我做了一个像下面的小测试设置,它工作得很好......
主要HTML
<html>
<head>
<title>TEST</title>
<script src="jquery-1.8.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$('iframe').ready(function(){
var tag = $('#iframe').contents().find('embed');
alert(tag.attr('src'));
});
</script>
</head>
<body>
<iframe id="iframe" src="pdf.html">
</body>
</html>
iframe HTML
<html>
<body>
<embed src="mypdf.pdf"/>
</body>
</html>
在Windows 7,IE9上测试。
答案 1 :(得分:0)
$('#iframe').load
或<iframe onload="">
不起作用。在IE浏览器中看起来无法访问PDF的iframe内容。因此,要跟踪iFrame加载,可以使用以下代码。
$(window).load(function() {
try {
var s = window.frames[ "iframeName" ].document.body.childNodes[0].innerHTML;
if(s.indexOf('My error message') > 0) {
alert('Error');
} else {
alert('PDF');
}
} catch (err) {
if($.trim(err.message) != 'Access is denied.') {
alert('PDF');
} else {
alert('Error');
}
}
});
因此,如果找到错误消息“我的错误消息”,那么它是具有消息的自定义设计错误页面,否则它是PDF。
以上解决方案适用于IE7&amp; IE8。对于其他浏览器,可以检查以下内容
$('#iframe').contents().find('embed').attr('src')
不是一个直接的解决方案。但对我有用。