2008-10-04 11 views
11

मैंने window.open() के साथ एक नई विंडो खोली है और मैं window.open() कॉल से संदर्भ का उपयोग करना चाहता हूं ताकि फिर नई विंडो में सामग्री लिख सकूं। मैंने mywindow.document.body.innerHTML = oldWindowDiv.innerHTML का उपयोग करके पुरानी विंडो से HTML को नई विंडो में कॉपी करने का प्रयास किया है; लेकिन यह काम नहीं करता है। कोई विचार?जावास्क्रिप्ट का उपयोग करके मैं एक और ब्राउज़र विंडो में सामग्री कैसे लिखूं?

उत्तर

10

संदर्भ window.open() द्वारा लौटाए गए चाइल्ड विंडो के window वस्तु है। मन में

var myWindow = window.open('...') 
myWindow.document.getElementById('foo').style.backgroundColor = 'red' 

भालू है कि यह केवल यदि माता-पिता और बच्चे खिड़कियों एक ही डोमेन है काम करेंगे: तो आप कुछ भी आप आमतौर पर करते हैं कर सकते हैं, यहाँ एक उदाहरण है। अन्यथा क्रॉस-साइट स्क्रिप्टिंग सुरक्षा प्रतिबंध आपको रोक देंगे।

+0

यह वास्तव में एक ही मूल नीति (http://www.w3.org/html/wg/html5/#same-origin) मूल रूप से जिसका मतलब है कि आप एक तक पहुँचने किया जाना चाहिए है उसी डोमेन पर, उसी पोर्ट पर, और उसी प्रोटोकॉल के साथ पृष्ठ (उदाहरण के लिए। https://example.com http://example.com, https://example.com:8080, आदि पर नहीं लिख सकता) – olliej

+0

अच्छा, यह जानना अच्छा है। –

5

मुझे लगता है कि यह चाल करेगा।

function popUp(){ 

    var newWindow = window.open("","Test","width=300,height=300,scrollbars=1,resizable=1") 

    //read text from textbox placed in parent window 
    var text = document.form.input.value 

    var html = "<html><head></head><body>Hello, <b>"+ text +"</b>." 
    html += "How are you today?</body></html>" 


    newWindow .document.open() 
    newWindow .document.write(html) 
    newWindow .document.close() 

    } 
0

विजेश का उल्लेख है कि खिड़कियों के बीच डेटा संचार करने के पीछे मूलभूत विचार है। यदि आप कुछ लाइब्रेरी कोड की तलाश में हैं, तो बिल्कुल इस के लिए एक महान jQuery प्लगइन है: WindowMsg (अजीब स्टैक ओवरफ़्लो ऑटो-लिंकिंग बग के कारण नीचे लिंक देखें)।

जैसा कि मैंने यहां अपने उत्तर में वर्णित किया है: How can I implement the pop out functionality of chat windows in GMail? विंडोएमएसएस प्रत्येक विंडो में एक फॉर्म का उपयोग करता है और फिर window.document.form ['foo'] हैश संचार के लिए। जैसे दान ऊपर उल्लेख करता है, यह केवल तभी काम करता है जब खिड़की का एक डोमेन साझा हो।

जैसा कि अन्य धागे में उल्लिखित है, आप JSON.org से JSON 2 lib का उपयोग जावास्क्रिप्ट ऑब्जेक्ट्स को क्रमबद्ध करने के लिए पूरी तरह से तारों का उपयोग करने के बजाय विंडोज़ के बीच भेजने के लिए कर सकते हैं।

WindowMsg:

http://www.sfpeter.com/2008/03/13/communication-between-browser-windows-with-jquery-my-new-plugin/

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

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