28

次のhtmlを使用してWebページにPDFを埋め込んでいます:-

<object id="pdf" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="1024" height="600">
    <param name="SRC" value="/GetDoc.ashx?SOID=<%=Html.Encode(Model.OrderID)%>" />
    <embed src="/GetDoc.ashx?SOID=<%=Html.Encode(Model.OrderID)%>" width="1024" height="600">
        <noembed> Your browser does not support embedded PDF files. </noembed>                     
    </embed>
</object>

PDF の読み込みが少し遅くなる可能性があるため、ユーザーが空白の画面を見ないように、オブジェクトが完全に読み込まれるまで、オブジェクトを非表示にして読み込みメッセージ / gif を表示したいと考えています。

私が本当に必要としているのは、オブジェクトが完全にロードされたことを伝える方法だけです。の「onload」イベントを試しましたが、起動されないようです。

私はそれが不可能かもしれないと思い始めていますが、尋ねるのは決して悪いことではありません...

4

8 に答える 8

14

なんでみんなそんなに苦労するのかわからない。

<object data="yourfile.pdf" style="background: transparent url(AnimatedLoading.gif) no-repeat center;" type="application/pdf" />
于 2011-12-31T14:46:43.400 に答える
10

次のコードが機能します。

<div style="background: transparent url(loading.gif) no-repeat">
<object height="1250px" width="100%" type="application/pdf" data="aaa.pdf">
<param value="aaa.pdf" name="src"/>
<param value="transparent" name="wmode"/>
</object>
</div>
于 2010-01-22T23:46:09.930 に答える
7

jQuery ajaxを使用してPDFをブラウザキャッシュにロードしています。次に、ブラウザーのキャッシュに既にあるデータを使用して埋め込み要素を作成します。


var url = "http://example.com/my.pdf";
// show spinner
$.mobile.showPageLoadingMsg('b', note, false);
$.ajax({
    url: url,
    cache: true,
    mimeType: 'application/pdf',
    success: function () {
        // display cached data
        $(scroller).append('<embed type="application/pdf" src="' + url + '" />');
        // hide spinner
        $.mobile.hidePageLoadingMsg();
    }
});

http ヘッダーも正しく設定する必要があります。


HttpContext.Response.Expires = 1;
HttpContext.Response.Cache.SetNoServerCaching();
HttpContext.Response.Cache.SetAllowResponseInBrowserHistory(false);
HttpContext.Response.CacheControl = "Private";
于 2012-08-16T14:26:22.480 に答える
3

PDFコンテンツがロードされる前にDOMがロードされるため、推奨事項はいずれも有効ではありません。したがって、DOMはActiveXコンテンツを制御できません

于 2009-11-09T11:49:45.537 に答える
0

「タグ内のコンテンツは、オブジェクトの読み込み中に表示されますが、まだ終了していません。」

スピナーをそこに置くと、うまくいくはずです。また、JavaScriptを作成する必要はありません。

src: http: //en.wikibooks.org/wiki/XHTML/XHTML_Objects

于 2009-07-16T15:07:36.070 に答える
0
$(document).ready(function() {
   });

document.readyState == interactiveこれは主に onではなくon で起動するため、機能しませんdocument.readyState == complete

このチェック( )でタイマーを入れれば、document.readyState == "complete"間違いなく動作します!

于 2012-08-13T17:40:23.187 に答える
0
<embed onload='alert("I should be called")'></embed>
于 2015-10-28T04:56:33.660 に答える
0

jQuery のdocument.ready()関数のようなものが必要になるでしょう。IE 以外のブラウザーの場合、イベントのハンドラーを登録するDOMContentLoadedと、すべての画像とオブジェクトが読み込まれた後にハンドラー関数が呼び出されます。IE の場合、document.readyStateプロパティを継続的にチェックし、それが になるまで待つ必要があります"complete"

jQuery を使用している場合は、jQuery が面倒な作業を行ってくれるので、次の作業を行うだけです。

$(document).ready(function() {
    //take away the "loading" message here
});

jquery を使用したくない場合は、次のようにする必要があります。

addEventListener('DOMContentLoaded', function() { 
    //take away the "loading" message here
});

function waitForIE() {

    if (!document.all) return;

    if (document.readyState == "complete") {
        //take away the "loading" message here
    }
    else {
        setTimeout(waitForIE, 10);
    }
}

waitForIE();
于 2009-07-16T15:13:45.200 に答える