2014-09-16 12 views
5

के साथ जावास्क्रिप्ट फ्रेम नेविगेशन मेरे पास एक साधारण वेब पेज है जहां 1 फ्रेम एक पीडीएफ प्रदर्शित करता है और दूसरा मेनू बार।यानी 11 में पीडीएफ

<iframe src="bar.html" name="menu" ></iframe> 
<iframe src="doc.pdf" name="itempane" ></iframe> 

मैं माता-पिता के लिए मेनू पट्टी से नेविगेट कर सकते हैं और वापस क्रम में पीडीएफ वाले फ़्रेम के लिए नीचे यह

var pWindow = window.parent; 
pWindow['itempane'].print(); 

IE11 में भी ऐसा ही करने का प्रयास कर मुद्रित करने के लिए क्रोम का उपयोग करते हुए एक अमान्य देता है कॉलिंग ऑब्जेक्ट त्रुटि।

आप http://www.abhrdev.co.uk/main.html

मैं गलत क्या कर रहा हूँ पर यह देख सकते/आईई अलग तरह से क्या कर रहा है?

चीयर्स

अपडेट किया गया .....

मुझे लगता है कि मैं साबित कर दिया है कि यह एक जावास्क्रिप्ट कोडिंग समस्या नहीं है लेकिन पीडीएफ IE में निपटने से संबंधित। निम्नलिखित पृष्ठ

<a href="javascript:printFromMain('pdfpane');">Print PDF</a><br/> 
<a href="javascript:printFromMain('htmlpane');">Print HTML</a> 
<iframe src="bar_1.html" name="menu" ></iframe> 
<iframe src="doc.pdf" name="pdfpane" ></iframe> 
<iframe src="doc.html" name="htmlpane" ></iframe> 

और इस समारोह

function printFromMain(paneName) { 
var pWindow = window[paneName]; 
pWindow.focus(); 
pWindow.print(); 
} 

html पृष्ठ काम करता है की छपाई नहीं लेकिन पीडीएफ pWindow.focus() के साथ देता है अमान्य कॉलिंग वस्तु - कि ऐसा क्यों हुआ में किसी भी अंतर्दृष्टि महान रूप से प्राप्त

+0

अपने नमूना लिंक पर मामूली नोट ... मुझे नहीं लगता कि यह मूल कारण है लेकिन आपके पृष्ठ में ' 'टैग गुम है। – scunliffe

+0

@mplungjan कॉल आईफ्रेम से आ रहा है, इसलिए इसे माता-पिता की आवश्यकता है। – epascarello

+0

दोनों धन्यवाद, बॉडी टैग जोड़ा गया और डॉक्टरेट इसे साफ करने के लिए बदल गया। विंडो ["itempane"]।प्रिंट(); देता है अपरिभाषित या शून्य संदर्भ – BillB

उत्तर

0

फ्रेम सूची प्राप्त करने के लिए वास्तव में window.frames का उपयोग करके इसे फ्रेम नाम से संदर्भित करने का प्रयास करें।

var pWindow = window.parent; //reference the parent from the iframe 
var ifr = pWindow.frames.itempane; //get the pdf frame from the frame list 
ifr.focus(); 
ifr.print(); 
+0

की संपत्ति 'प्रिंट' प्राप्त करने में असमर्थ धन्यवाद मैंने कोशिश की है यह समान त्रुटियों को देता है – BillB

0

इस

<iframe src="bar.html" name="menu" ></iframe> 
<iframe src="doc.pdf" ID="itempane" ></iframe> 


var otherPane = parent.document.getElementById("itempane"); 
otherPane.focus(); // OR 
otherPane.print(); // OR 

var doc = otherPane.contentWindow || otherPane.contentDocument; 
doc.focus(); 
doc.print(); 
+1

धन्यवाद मैंने इन सभी की कोशिश की, उन्होंने समान त्रुटियां दीं – BillB

+0

मैं आज 11 पर कोशिश करूंगा – mplungjan

1

कई बातें की कोशिश कर के बाद, मैं अंत में यह जाना IE11 में काम करने का प्रयास करें:

1) आइफ्रेम

2) रन के बजाय एक वस्तु टैग का उपयोग फोकस()/प्रिंट() सीधे तत्व

3) एक टाइमआउट के बाद दौड़ें, सुनिश्चित करें कि प्रत्येक आईएनजी लोड हो गया है। यह करने के लिए (कुछ घटना श्रोता का उपयोग कर की तरह) एक बेहतर तरीका हो सकता है, के रूप में समय समाप्ति समय काफी लंबी होने के लिए यह ठीक से (एक id से संबद्ध) काम करने के लिए

setTimeout(function() { 
    var contentThingy = document.getElementById('itempane'); 
    contentThingy.focus(); 
    contentThingy.print(); 
}, 4000); 

वस्तु iframe के बजाय जरूरत:

<object id="itempane" ... ></object> 

नोट: क्रोम में काम नहीं करता है। अन्य उत्तरों में अन्य भिन्नताओं में से एक (यानी ContentWindow का उपयोग कर) हो सकता है।

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