how to restore overriden javascript print method -
मेरे पिछले साथी पुनर्लेखन विंडो। प्रिंट विधि:
फ़ंक्शन प्रिंट (डेटा) {var Window_print = window.open ('', 'मेरी div', 'height = 768, width = 1024'); Window_print.document.write ('& lt;; DOCTYPE html & gt; & lt; html & gt; & lt; प्रमुख & gt; & gt; शीर्षक & gt; Ð ?? ÐμÑ ?? Ð ° Ñ ?? Ñ ?? & lt; / शीर्षक & gt; & lt; / सिर & gt; & lt ; शरीर & gt; '+ डेटा +' & lt; / body & gt; & lt; / html & gt; '); window_print.print (); window_print.close (); } मेरा इरादा उस फ़ंक्शन के डिफ़ॉल्ट व्यवहार का उपयोग करना था: बस वर्तमान पेज प्रिंट करें, और मैंने कहा:
अगर (डेटा) {... ।} और {window.print ()}
और निश्चित रूप से मुझे त्रुटि मिली: "बहुत अधिक पुनरावर्ती: window.print ();"
मेरा प्रश्न है डिफ़ॉल्ट व्यवहार विंडो को कैसे प्रारंभ करें। प्रिंट ()?
संपादित करें : ठीक है , ऐसा प्रतीत होता है कि कुछ ब्राउज़रों में प्रिंट विंडो की अपनी संपत्ति है, और अन्य में नहीं है इसलिए, बस window.print का मान कैश करें: var printWindow = window.print; // अपने नए प्रिंट फ़ंक्शन को यहाँ परिभाषित करें var print = function (data) {...}; // फिर बाद में: printWindow.call (विंडो); एनबी: यदि आप वैश्विक क्षेत्र में यह सब कर रहे हैं, तो आपको फ़ंक्शन अभिव्यक्ति ( का उपयोग करके नया प्रिंट परिभाषित करना होगा) Var प्रिंट = ... ) के बजाय फ़ंक्शन declaration ( फ़ंक्शन प्रिंट (डेटा) {...} ) क्योंकि फ़ंक्शन declarations उनके दायरे के शीर्ष पर फहराया जाता है, और इसलिए इससे पहले कि आप इसे कैश करने का मौका मिले, तब से प्रिंट redefinition होगा। यदि आप इसे वैश्विक दायरे में नहीं कर रहे हैं, तो इससे कोई फर्क नहीं पड़ता क्योंकि नया प्रिंट यह window.print ओवरराइड नहीं होगा, इसके बावजूद कि यह कैसे परिभाषित है। < / P> मूल : प्रयास करें:
Object.getPrototypeOf (विंडो)। Print.all (विंडो); प्रिंट को विंडो की अपनी संपत्ति नहीं लगता है, जिसका अर्थ है कि नवनिर्धारित प्रिंट प्रोटोटाइप श्रृंखला से आगे कुछ छाया। आप Object.getPrototypeOf । का उपयोग करते हुए प्रोटोटाइप श्रृंखला को ऊपर ले जाकर इस परछाई बाईपास कर सकते हैं। आपको कॉल का उपयोग करने की भी आवश्यकता होगी ताकि प्रिंट विधि यह के लिए सही मान प्राप्त करती है।
Comments
Post a Comment