2012-06-07 11 views
5

[इस सवाल का सरलीकृत संस्करण:]मुसीबत मुद्रण iFrames

क्यों iFrames कभी कभी मुद्रित करने के लिए मना कर दिया हो? उदाहरण के लिए, इन दो पृष्ठों पर print preview मारा:

  1. http://fiddle.jshell.net/gJDv4/1/show/
  2. http://fiddle.jshell.net/gJDv4/2/show/

प्रिंट पूर्वावलोकन पर, iFrames पहला उदाहरण में दिखाई दे रहा है, लेकिन दूसरी में छिपा हुआ है। केवलfirst और second के बीच कोड अंतर iFrames एक सीएसएस संपत्ति (margin: 20px;) दूसरे उदाहरण में iFrames में जोड़ा गया है।


[लांग (मूल) संस्करण:]

मैं एक पूर्वावलोकन/प्रिंट पेज कि अपनी शैली-शीट और जावास्क्रिप्ट फ़ाइलों को संदर्भित स्वतंत्र HTML फ़ाइलों का एक समूह असेंबल निर्माण कर रहा हूँ।

विचार है कि सभी फाइलों पूर्वावलोकन के लिए iFrames में प्रदर्शित किए जाते हैं, और फिर जब मुद्रित है, प्रत्येक iFrame (जो की संभावना एकाधिक पृष्ठों अवधि जाएगा) बाहर प्रिंट के रूप में अगर यह अपने आप दस्तावेज़ थे ।

हालांकि, जब मैं प्रिंट करता हूं (या प्रिंट-पूर्वावलोकन) iFrames या तो कोई सामग्री नहीं दिखाता है, या वे केवल प्रथम पृष्ठ मुद्रित करते हैं, iFrame के शेष पृष्ठों को छोटा कर देते हैं।

iFrames मुद्रित (और प्रिंट पूर्वावलोकन) ठीक (प्रिंट-पूर्वावलोकन करने के लिए, ऊपर एक नहीं इस लिंक का उपयोग) इससे पहले कि मैं उन्हें एक से अधिक पृष्ठों बनाया:

इस व्यवहार का कारण क्या है?

+0

हेहे, मुझे संदेह है कि एक समाधान है लेकिन मैं जो भी इसे ठीक से काम करने के लिए प्रबंधित करता हूं उसे +1 कर दूंगा: पी और +1 उस छोटे से होने के दौरान जवाब पाने के लिए उस पर प्रतिनिधि खर्च करने के लिए +1। :) – sg3s

+0

यदि कोई वास्तविक उत्तर नहीं है तो आप निश्चित रूप से तुरंत पहचानने के लिए बक्षीस के लायक हैं। ;) – brentonstrine

उत्तर

3

आप उनकी खिड़कियों पर print() कार्यप्रणाली को कॉल करके अलग-अलग iframes में दस्तावेज़ों को मुद्रित कर सकते हैं ....

तो कुछ इस तरह फ़ाइल 2 मुद्रित करने के लिए:

$('#iframeTwo')[0].contentWindow.print() 

और यहाँ एक jsfiddle जहां मैं बटन जो अलग-अलग प्रिंट गति प्रदान ...

http://jsfiddle.net/sg3s/GJKkm/17/

क्यों ब्राउज़र कर के रूप में जोड़ा अपने मूल दस्तावेज़ को मुद्रित करते समय iframes के अंदर सामग्री मुद्रित नहीं करें। शायद इस तथ्य के साथ कुछ करना है कि वे दस्तावेज़ वास्तव में उस दस्तावेज़ का हिस्सा नहीं हैं जो उन्हें दिखाया गया है ...इसके बारे में सोचें कि एक अलग खिड़की (जिसे आप window.open() जेएस में जेनरेट कर सकते हैं) लेकिन उसके बाद मुख्य दस्तावेज़ में कुशलता से हैक किया गया है जो कि कुछ जादू के साथ आईफ्रेम पर निर्दिष्ट जो भी सीमित है।

+0

अलग-अलग आईफ्रेम प्रिंट करने में समस्या यह है कि यह मुद्रित होने वाली दो HTML फ़ाइलों के बीच किसी भी एल्स प्रिंट प्रिंट की संभावना को खोलता है, क्योंकि (मुझे लगता है) वे अलग प्रिंट नौकरियों के रूप में प्रिंट कतार में जाएंगे । सामग्री क्यों दिखाई नहीं दे रही है, इस बारे में स्पष्टीकरण यह है कि मैं अनुमान लगा रहा था, लेकिन अभी भी यह मुद्दा है कि iFrames एक अलग पृष्ठ पर बहने पर दिखाई नहीं दे रहा है! – brentonstrine

+0

यदि आप अपनी प्रिंट नौकरियों को एकसाथ रखना चाहते हैं तो आप संभवतः दो दस्तावेज़ों को एक साथ रखने से बेहतर हैं, कक्षाओं का उपयोग करके शैलियों को अलग करने के लिए कुछ अतिरिक्त देखभाल करना ... और हाँ यह व्यवहार अजीब है, लेकिन यदि आप इसके बारे में सोचते हैं तो यह आश्चर्यजनक है वे बिल्कुल दिखाते हैं ... यह शायद इसे सामान्य एचटीएमएल के रूप में प्रस्तुत करने का प्रयास करता है लेकिन चूंकि सामग्री बग को फ्रेम करने की सीमाएं हैं। मैं इसे क्रोम में पुन: पेश नहीं कर सकता, इसलिए यदि आप इसे क्रॉस ब्राउज़र पर काम करने की कोशिश कर रहे हैं तो आप अब भी रोक सकते हैं: पी – sg3s

+0

दो स्टाइलशीट्स के साथ दो दस्तावेज़ों को एक साथ लाने के लिए। यह थोड़ा काम गहन हो सकता है लेकिन शायद काम करेगा; दो दस्तावेज लें, एचटीएमएल को अलग 'रूट' नोड्स में रखें जो विभिन्न दस्तावेजों की पहचान करते हैं। दस्तावेजों के लिए स्टाइलशीट प्राप्त करें, और उन्हें एक नेस्टेड संरचना के भीतर एक सीएसएस प्री-कंपाइलर में इकट्ठा करें (जैसे [कम] (http://lesscss.org/#-nested-rules)) प्री-कंपाइलर स्टाइलशीट बनाने दें, एक नेस्टेड सेट के अंदर नोड्स के साथ जो उस स्टाइलशीट में शैलियों को केवल प्रासंगिक दस्तावेज़ पर लागू करता है। जेनरेट स्टाइलशीट शामिल करें। जीत। – sg3s

संबंधित मुद्दे