2009-08-11 9 views
16

मैं निम्नलिखित कोड का उपयोग कर एक नई विंडो खोलने:मैं बाल खिड़की के डोम पेड़ तक कैसे पहुंच सकता हूं?

purchaseWin = window.open("Purchase.aspx","purchaseWin2", "location=0,status=0,scrollbars=0,width=700,height=400"); 

मैं purchaseWin, उदा के डोम पेड़ उपयोग करना चाहते

purchaseWin.document.getElementById("tdProduct").innerHTML = "2"; 

यह काम नहीं करता है। मैं केवल यह कर सकते हैं:

purchaseWin.document.write("abc"); 

मैं भी इस कोशिश करते हैं और यह भी काम नहीं करता:

$(purchaseWin.document).ready(function(){ 

    purchaseWin.$("#tdProduct").html("2"); 

    }); 

मुझे क्या करना चाहिए?

उत्तर

14
jQuery के साथ

, आप अपने बच्चे को खिड़की के दस्तावेज़ के contents का उपयोग करना: सादा जावास्क्रिप्ट के साथ,

$(purchaseWin.document).ready(function() { 
    $(purchaseWin.document).contents().find('#tdProduct').html('2'); 
}); 

पुस्तकालयों के बिना, आप इसे इस तरह कर सकते हैं:

purchaseWin.onload = function() { 
    purchaseWin.document.getElementById('tdProduct').innerHTML = '2'; 
}; 

मैं लगता है कि समस्या यह थी कि आप वास्तव में लोड की गई विंडो विंडो से पहले डीओएम तत्व को पुनः प्राप्त करने का प्रयास कर रहे थे।

+1

सादा जावास्क्रिप्ट संस्करण काम करता है। लेकिन jQuery संस्करण विफल रहता है। मुझे काम करने के लिए मूल विंडो में मैन्युअल रूप से jQuery कोड चलाने की आवश्यकता है। – Billy

+3

आईई में काम करता है (फ़ायरफ़ॉक्स नहीं): $ (purchaseWin.document) .ready (function() {$ (purchaseWin.document) .contents()। ('# TdProduct') ढूंढें। Html ('2');}); एफएफ (आईई नहीं) में काम करता है: buyWin.onload = function() {$ (purchaseWin.document) .contents()। ('# TdProduct')। Html ('2');}; – Billy

+1

jQuery विकल्प के लिए $ (buyWin) लोड का उपयोग करके गुनी की प्रतिक्रिया देखें, जबकि दस्तावेज़ तैयार ईवेंट नहीं था। – Luke

9

हो सकता है कि jQuery के लोड घटना के रूप में यह एक ऐसी ही समस्या में मेरे लिए काम किया आप के लिए काम करता है, जबकि तैयार घटना काम नहीं किया:

$(purchaseWin).load(function(){ 
    purchaseWin.$("#tdProduct").html("2"); 
}); 
+0

मुझे नहीं पता कि स्वीकृत उत्तर का नया सम्मान क्या है? –

+0

नया यह है कि मैं .load ईवेंट का उपयोग करता हूं जबकि स्वीकृत उत्तर .ready ईवेंट का उपयोग करता है। मेरे लिए एक फर्क पड़ता है। – Gunni

+1

यह एकमात्र उत्तर है जिसने मुझे बच्चे के गुंबद तक पहुंच प्रदान की। – thatmiddleway

7

यदि आप लोड एक बच्चे विंडो के दस्तावेज़ का उपयोग नहीं कर सकते हैं एक पृष्ठ जो मूल विंडो के डोमेन से संबंधित नहीं है। यह जावास्क्रिप्ट में निर्मित क्रॉस-डोमेन सुरक्षा के कारण है।

0
(function() { 

    document.getElementById("theButton").onclick = function() { 

    var novoForm = window.open("http://jsbin.com/ugucot/1", "wFormx", "width=800,height=600,location=no,menubar=no,status=no,titilebar=no,resizable=no,"); 
    novoForm.onload = function() { 
     var w = novoForm.innerWidth; 
     var h = novoForm.innerHeight; 
     novoForm.document.getElementById("monitor").innerHTML = 'Janela: '+w+' x '+h; 
    }; 
    }; 
})(); 
संबंधित मुद्दे