2017-01-09 7 views
6

मैं iframe ऑब्जेक्ट और jQuery का उपयोग कर किसी विशेष तत्व (शायद इसके समान) तक पहुंचने का प्रयास कर रहा हूं लेकिन यह काम नहीं कर रहा है।आईफ्रेम ऑब्जेक्ट और jQuery का उपयोग करके मैं इस तत्व को क्यों नहीं चला सकता?

iframeWindow ऑब्जेक्ट शून्य नहीं है लेकिन अगला कथन काम नहीं कर रहा है। मैंने इस जवाब पर this की तरह कुछ देखा लेकिन यह काम नहीं करता है। क्या मुझसे कुछ गलत हो रही है?

RADIO.PHP

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script> 

     $(document).ready(function(){ 
      setTimeout(function(){ 
      var iframe= document.getElementById("iframe"); 
      var iframeWindow = iframe.contentWindow; 
      var text=iframeWindow.$("div:nth-child(3) .c2").html(); 
      console.log(text); 

      //DOESN'T PRINT "INNER MOST" 

     }, 1000); 

    }); 
    </script> 
</head> 
<body> 
    <div class="c1"> 
    <iframe id="iframe" src="api.php" height="200" width="300"> 
    </iframe> 
    </div> 
</body> 
</html> 

API.PHP

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<script type="text/javascript" src="jquery.js"></script> 
<body id="abody"> 
Hey 
    <div class="c1"></div> 
    <div class="c1"> 
     <p class="c2"></p> 
    </div> 
    <div class="c1"> 
     <p class="c2"> 
     INNER MOST 
     </p> 
    </div> 
</body> 
</html> 

संपादित करें:

यहाँ मेरी कोड है मैं वाक्य रचना गलतियों को सुधारा है।

+0

ध्यान दें कि आपका HTML अवैध है। आप एक-दूसरे के भीतर 'p' तत्व को घोंसला नहीं दे सकते हैं, इसलिए डीओएम संरचना आपके चयनकर्ता –

+0

से मेल नहीं खाती है, कृपया इसे संपादित करें – Shanky

+0

' iframeWindow! == inframeWindow' इसे भी जांचें। – Jai

उत्तर

2

आप find() और text() के साथ संयोजन में iframe.contentWindow.document बजाय iframe.contentWindow का उपयोग करना चाहिए और यह काम करना चाहिए। इस प्रयास करें:

$(document).ready(function() { 
    setTimeout(function() { 
    var iframe = document.getElementById("iframe"); 
    var iframeWindow = iframe.contentWindow.document; 
    var text = $(iframeWindow).find(".c1:nth-child(3) .c2").text(); 
    console.log(text); 

    //PRINTS "INNER MOST" 

    }, 1000); 

}); 

प्रति MDN प्रलेखन के रूप में कहते हैं:

contentWindow संपत्ति रिटर्न एक आइफ्रेम तत्व की विंडो वस्तु। आप इस विंडो ऑब्जेक्ट का उपयोग iframe के दस्तावेज़ और इसके आंतरिक DOM तक पहुंचने के लिए कर सकते हैं।यह विशेषता केवल पढ़ने के लिए है, लेकिन इसकी गुणों को वैश्विक विंडो ऑब्जेक्ट की तरह छेड़छाड़ की जा सकती है।

आपको iframe तत्वों के बारे में और अधिक पढ़ सकते हैं और वे here कैसे काम करते हैं।

0

inframeWindow की बजाय टाइपो जो मैं और अन्य सभी चूक गए, यह देखने के लिए कुछ स्पष्ट है जो iframeWindow होना चाहिए।

इसके बजाय jQuery चयनकर्ता के साथ प्रयास करें:

var text=$(iframeWindow).find("div:nth-child(3) .c2").html(); 

आप एक डोम ऑब्जेक्ट में एक jQuery विधि संलग्न कर रहे हैं। जो इस तरह से नहीं किया जा सकता है। एक jQuery विधि असाइन करने के लिए आपको इसे एक jQuery ऑब्जेक्ट बनाना होगा।

+1

इसके अलावा उसे 'iframeWindow'' iframeWindow' के साथ बदलना चाहिए। – Ionut

+0

क्षमा करें, लेकिन यह सिर्फ अपरिभाषित दिखाता है। मुझे '.text()' – Shanky

0

jQuery में चयनकर्ता के लिए एक दायरा निर्दिष्ट करने के लिए, jQuery चयनकर्ता को दूसरे तर्क के रूप में दायरा पास करें।

बदलें:

inframeWindow.$("div:nth-child(3) p .c2") 

$("div:nth-child(3) p .c2", inframeWindow) 

साथ (इसके अलावा, वहाँ डोम या jQuery वस्तुओं पर कोई $ सदस्य कार्य है।)

+2

का उपयोग करके टेक्स्ट नहीं मिल सकता है, इसके अलावा उसे 'iframeWindow'' iframeWindow' के साथ बदलना चाहिए। – Ionut

+0

क्षमा करें, लेकिन यह सिर्फ अपरिभाषित दिखाता है। मुझे '.text()' – Shanky

+0

@ रिचर्ड का उपयोग करके टेक्स्ट नहीं मिल रहा है क्या आपके पास इसके लिए कोई संदर्भ है? यह सिर्फ काम नहीं करेगा। –

0

इस तरह से आशा है कि यह मदद मिलेगी

प्रयास करें

अद्यतन उत्तर

var $iframe= $("#iframe"); 
var $iframeWindow = $iframe.contents(); 
var text=$iframeWindow.find("div").eq(2).find('p .c2').html(); 
console.log(text); 
+0

क्षमा करें, लेकिन यह केवल अपरिभाषित दिखाता है। मुझे '.text() 'का उपयोग करके टेक्स्ट नहीं मिल रहा है। – Shanky

+0

एक नज़र डालें मैंने अपना जवाब अपडेट किया है – Curiousdev

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

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