2010-07-15 11 views
8

प्रिंट करते समय दो प्रिंट संवाद रोकें मेरी साइट में "इस पृष्ठ को प्रिंट करें" बटन है।सफारी: iframe

मैं एक छिपी हुई आईफ़्रेम में एक स्थिर प्रिंट टेम्पलेट HTML फ़ाइल लोड करता हूं, HTML का उपयोग करके उस पृष्ठ में HTML को कॉपी करता हूं, और iframe पृष्ठ से window.print() पर कॉल करता हूं। सब ठीक है, सफारी को छोड़कर, जो पैरेंट फ्रेम को प्रिंट करना चाहता है, इसलिए मुझे दो प्रिंट डायलॉग मिलते हैं।

मैंने iframe के भीतर से window.print को कॉल करने का प्रयास किया है, और इसे iframe (document.printFrame.window.print()) को लक्षित करने वाले माता-पिता से कॉल करने का प्रयास किया है, लेकिन मुझे दो संवाद मिलते हैं।

क्या कोई इस के आसपास एक रास्ता जानता है? मैं केवल आईफ्रेम प्रिंट करना चाहता हूं, माता-पिता नहीं।

उत्तर

1

मैं बग को पुन: पेश नहीं कर सकता; यह मेरे लिए ठीक काम करता है (यानी: मुझे केवल एक प्रिंट संवाद मिलता है), भले ही मैं इसे आईफ्रेम या पैरेंट फ्रेम से कॉल करता हूं। शायद आप window.print() को दो बार कहीं बुला रहे हैं?

मैं मैक ओएस एक्स पर सफारी 4.0.3 चला रहा हूँ 10.6

संपादित करें: यहाँ यह है: मैं बस सफारी पर इस परीक्षण किया 5.0/विंडोज 7 और यह: http://jsfiddle.net/Kq9dc/

संपादित करें 2 सही ढंग से काम कर रहा है। क्या आप वाकई अपने कोड में कुछ और नहीं हैं?

संपादित 3: बस WinXP पर सफारी के कई संस्करण पर इस परीक्षण किया:

Safari 3.0 (first beta): Not working (no print dialog) 
Safari 3.1 (first non-beta): Works fine 
Safari 4.0: Works fine 
Safari 5.0: Works fine 
+0

के नीचे एक खाली पृष्ठ देख सकते हैं यदि मैं इसे दो बार बुला रहा था, तो मैं अन्य ब्राउज़रों पर एक ही व्यवहार की अपेक्षा करता हूं। हमम ... –

+0

@Diodeus क्या आप मेरे [fiddle] (http://jsfiddle.net/Kq9dc/) के साथ 2 प्रिंट संवाद प्राप्त कर रहे हैं? – quantumSoup

+0

@Diodeus Ran अधिक परीक्षण, वे ठीक काम कर रहे हैं – quantumSoup

0

इस प्रयास करें। इस जगह पर रखकर कहा आइफ्रेम:

function printPage() { print(); } 
तो माता-पिता में

:

function printIframe(id) 
{ 
    var iframe = document.frames ? document.frames[id] : document.getElementById(id); 
    var ifWin = iframe.contentWindow || iframe; 
    iframe.focus(); 
    ifWin.printPage(); 
    return false; 
} 

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

  • नई विंडो में </script> विभाजित है, तो आप समय से पहले ही
  • उपयोग setTimeout() ऑनलोड के बाद निष्पादित करने के लिए (समाप्त नहीं है)

    var printwin = window.open("about:blank", "_new"); 
    printwin.document.open(); 
    printwin.document.write("HTML goes here..javascript which is going to print is in there too.."); 
    printwin.document.close(); 
    

    दो नाबालिग बातें समाप्त हो गया है , अन्यथा फ़ायरफ़ॉक्स उपयोगकर्ता प्रिंट संवाद