html इनकम एचटीएमएल एम्बेडेड पीडीएफ और अधिभार




इनकम टैक्स स्लैब 2018-19 (7)

मैं निम्नलिखित एचटीएमएल के साथ एक वेब पेज में एक पीडीएफ एम्बेड कर रहा हूँ: -

<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>

पीडीएफ लोड करने में थोड़ा धीमा हो सकता है, इसलिए मैं ऑब्जेक्ट को छिपाना चाहता हूं और लोडिंग संदेश / gif को तब तक प्रदर्शित करना चाहता हूं जब तक कि यह पूरी तरह से लोड नहीं हो जाता है, इसलिए उपयोगकर्ता रिक्त स्क्रीन नहीं देख रहा है।

ऑब्जेक्ट पूरी तरह से लोड होने पर मुझे वास्तव में यह बताने का एक तरीका है। मैंने 'ऑनलोड' घटना की कोशिश की है लेकिन इसे कभी नहीं निकाल दिया जाता है।

मुझे लगता है कि यह संभव नहीं हो सकता है, लेकिन यह पूछने के लिए कभी दर्द नहीं होता है ...


मुझे नहीं पता कि हर कोई इतना कठिन क्यों बनाता है।

<object data="yourfile.pdf" style="background: transparent url(AnimatedLoading.gif) no-repeat center;" type="application/pdf" />

$(document).ready(function() {
   });

document.readyState == interactive पर अधिकतर आग लगने के रूप में काम नहीं करेगा .readyState document.readyState == interactive document.readyState == complete document.readyState == interactive बजाय document.readyState == interactive

यदि आप इस चेक के साथ टाइमर डालते हैं ( document.readyState == "complete" ) यह निश्चित रूप से काम करेगा!


कोड के बाद काम करता है।

<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>

"किसी ऑब्जेक्ट को लोड होने पर टैग के भीतर सामग्री प्रदर्शित होती है, लेकिन अभी तक समाप्त नहीं हुई है।"

तो वहां अपने स्पिनर को वहां रखें और इसे आपके लिए अच्छी तरह से काम करना चाहिए। और आपको कोई जावास्क्रिप्ट लिखना नहीं होगा।

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


मैं ब्राउज़र कैश में jQuery AJAX के साथ पीडीएफ लोड कर रहा हूँ। फिर मैं पहले से ब्राउज़र कैश में डेटा के साथ एम्बेडेड तत्व बनाते हैं।


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";

आप jQuery की document.ready() फ़ंक्शन की तरह कुछ चाहते हैं। गैर-आईई ब्राउज़र के लिए, आप ईवेंट DOMContentLoaded लिए एक हैंडलर पंजीकृत कर सकते हैं, और सभी छवियों और ऑब्जेक्ट्स लोड होने के बाद आपके हैंडलर फ़ंक्शन को कॉल किया जाएगा। आईई के लिए, आपको लगातार document.readyState जांच करनी होगी। पहले से ही संपत्ति को सेट करें, और इसके लिए "complete" होने का इंतजार करें।

यदि आप 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();

कोई भी सिफारिश मान्य नहीं है, क्योंकि पीडीएफ सामग्री लोड होने से पहले डीओएम लोड हो जाता है। तो डीओएम ActiveX सामग्री को नियंत्रित नहीं कर सकता है





embed