3

この質問はここで何度も聞かれているようです。一部のソリューションは部分的に機能します。これがシナリオです。を使用してpdfを持つiframeをロードする必要があります<embed>。PDF が見つからない可能性があり、iFrame 内にエラー ページが表示されます。

<embed>iframe が読み込まれたら、次を使用してタグを探します

$('#iframe').contents().find('embed')

使ってみ$('#iframe').load()ました。これは Firefox、Chrome では機能しますが、IE では機能しません。

も使ってみ$('#iframe').ready()ました。これは IE でも機能しますが、

$('#iframe').contents().find('embed')動作しません。

誰か助けてくれませんか?

EDIT : IE バージョン : 7 または 8. 同じオリジン ポリシーが尊重されます。

4

2 に答える 2

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>

IframeHTML

<html>
    <body>
        <embed src="mypdf.pdf"/>
    </body>
</html>

Windows 7、IE9でテスト済み。

于 2012-10-05T07:59:42.393 に答える
0

$('#iframe').loadまたは<iframe onload="">動作しません。PDF の IE 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');
            }
        }
});

したがって、エラー メッセージ 'My error message' が見つかった場合、それはメッセージのあるカスタム デザインのエラー ページであり、そうでない場合は PDF です。

上記の解決策はIE7およびIE8用です。残りのブラウザについては、以下を確認できます $('#iframe').contents().find('embed').attr('src')

簡単な解決策ではありません。しかし、私にとってはうまくいきます。

于 2012-10-10T14:01:07.623 に答える