2010-01-28 24 views
10

मुझे वर्तमान वेबपृष्ठ को प्रिंट पूर्वावलोकन के लिए एक नई पॉपअप विंडो में कॉपी करने में सक्षम होना चाहिए। बच्चों के साथ पृष्ठ पर एक ग्रिड है, इसलिए यदि वे पंक्तियों में से एक को पंक्तियों को देखने के लिए पंक्तियों में से एक का विस्तार करते हैं, तो मुझे इसे नई विंडो में दिखाना होगा।एक नई विंडो में वर्तमान वेबपृष्ठ की प्रतिलिपि बनाएँ

क्या यह संभव है?

वर्तमान में पॉपअप विंडो एक ही पृष्ठ को खोलती है, लेकिन सभी पंक्तियों का विस्तार नहीं किया जाता है।

उत्तर

8

शायद यह चाल (आईई और फ़ायरफ़ॉक्स में, ओपेरा में नहीं है। वेबकिट के बारे में नहीं पता):

var yourDOCTYPE = "<!DOCTYPE html..."; // your doctype declaration 
var printPreview = window.open('about:blank', 'print_preview'); 
var printDocument = printPreview.document; 
printDocument.open(); 
printDocument.write(yourDOCTYPE+ 
      "<html>"+ 
       document.documentElement.innerHTML+ 
      "</html>"); 
printDocument.close(); 

(window.open() और document.open() के बीच अंतर नोट!)

हालांकि, अगर आप ईवेंट हैंडलर्स और इतने पर की तरह, सभी कस्टम डोम थिंगी खो देंगे। फिर भी, यह काम कर सकता है अगर आप सिर्फ अपने एचटीएमएल पेस्ट करना चाहते हैं।

+0

मैंने कोशिश की (jQuery के साथ) ... लेकिन चूंकि पंक्तियों का विस्तार करना असंकालिक रूप से किया जाता है, नया पृष्ठ HTML को नहीं उठा रहा है। – Martin

+1

मैंने एक JSFiddle बनाया है, जो कम से कम फ़ायरफ़ॉक्स में काम करता है: http://jsfiddle.net/boldewyn/bbPLp/ – Boldewyn

0

एक क्वेरी स्ट्रिंग प्रारूप (जैसे "ओपन = पंक्ति 1 + पंक्ति 5 + पंक्ति 10") में खुली/बंद पंक्तियों की स्थिति को एन्कोड करें और इस स्ट्रिंग को एक नई खुली विंडो (जैसे "host.com/blah" में यूआरएल में पास करें। एचटीएमएल? खुला = ROW1 + row5 + row10 ")। लक्ष्य पृष्ठ पर, ऑनलोड फ़ंक्शन में स्थान ऑब्जेक्ट की जांच करें और इन पंक्तियों को एक बार फिर से विस्तारित करें।

0

आप पॉप-अप विंडो तक पहुंचने और "hideRow (x)" जैसे कार्यों को कॉल करने के लिए जावास्क्रिप्ट का उपयोग भी कर सकते हैं। जब मैं घर लेता हूं तो मैं एक बेहतर उदाहरण जोड़ूंगा (

0

क्या आप बस अपनी पंक्तियों को प्रदर्शित करने/प्रदर्शित करने के साथ दिखा रहे हैं: कोई नहीं ;? आप पॉपअप पेज कैसे लोड कर रहे हैं? यदि आप पृष्ठ को फिर से लोड कर रहे हैं, तो आप लक्ष्य पृष्ठ पर डेटासेट पास करने के लिए AJAX का उपयोग कर सकते हैं।

प्रत्येक पंक्ति में एक अद्वितीय आईडी असाइन करें, और विस्तारित प्रत्येक पंक्ति के लिए, पंक्ति की आईडी को सरणी में जोड़ें। जब आपका प्रिंट पूर्वावलोकन फ़ंक्शन कहा जाता है तो AJAX के माध्यम से डेटा सदस्य के रूप में उस सरणी या ऑब्जेक्ट को पास करें, फिर पेज लोड होने के बाद अपने ऑनस असफल कॉलबैक फ़ंक्शन में लागू पंक्तियों का विस्तार करें।

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