JQuery के साथ एक iframe की सामग्री का उपयोग कैसे करें?


116

मैं jQuery के साथ एक iframe की सामग्री का उपयोग कैसे कर सकता हूं? मैंने ऐसा करने की कोशिश की, लेकिन यह काम नहीं करेगा:

iframe सामग्री: <div id="myContent"></div>

jQuery: $("#myiframe").find("#myContent")

मैं कैसे पहुंच सकता हूं myContent?


Jquery / javascript के समान : iframe की सामग्री तक पहुँच प्राप्त करना लेकिन स्वीकृत उत्तर वह नहीं है जिसकी मुझे तलाश थी।


मैंने अभी पाया कि फ़ायरफ़ॉक्स कंसोल में बिल्ट-इन $ वेरिएबल बिल्कुल एक पूर्ण jQuery की तरह नहीं दिखता है। (मुझे यह पता चलने के बाद पता चला कि मेरे पास jQuery चर भी नहीं है, तो मुझे लगा कि मैंने jQuery के स्रोत कोड को लोड नहीं किया है)।
eel ghEEz

जवाबों:


214

आपको contents()विधि का उपयोग करना होगा :

$("#myiframe").contents().find("#myContent")

स्रोत: http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-ququery/

एपीआई डॉक्टर: https://api.jquery.com/contents/


3
मुझे त्रुटि दें: त्रुटि: संपत्ति 'मालिकाना हक' तक पहुँचने से इनकार कर दिया
इमरान खान

26
ime: इसकी शायद आपको निम्न कारणों से त्रुटि दे रही है: 1) iframe एक ही डोमेन से संबंधित नहीं है। 2) आप इफराम लोड घटना से पहले इसे पढ़ने की कोशिश कर रहे हैं।
iMatoria

1
क्या यह सत्यापित करने का कोई तरीका है कि आइफ्रेम सामग्री एक ही डोमेन से है, इसे एक्सेस करने की कोशिश करने और त्रुटि प्राप्त करने से पहले?
कामाफेदर

2
स्रोत url टूट गया है।
karthzDIGI

1
@jperezmartin: आपको कुछ जावास्क्रिप्ट लाइब्रेरी का उपयोग करना होगा जो मुख्य पृष्ठ और iframe के बीच जानकारी स्थानांतरित करेगा। मूल रूप से इसके ब्राउज़र को क्रॉस ब्राउज़र कार्यक्षमता के कारण नकार दिया गया है। मुझे खेद है, मुझे ऐसी किसी भी लाइब्रेरी की जानकारी नहीं है क्योंकि मुझे इसकी कभी आवश्यकता नहीं थी।
iMatoria

21
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript">

$(function() {

    //here you have the control over the body of the iframe document
    var iBody = $("#iView").contents().find("body");

    //here you have the control over any element (#myContent)
    var myContent = iBody.find("#myContent");

});

</script>
</head>
<body>
  <iframe src="mifile.html" id="iView" style="width:200px;height:70px;border:dotted 1px red" frameborder="0"></iframe>
</body>
</html>

15

यदि iframe का स्रोत एक बाहरी डोमेन है, तो ब्राउज़र iframe सामग्री (समान उत्पत्ति नीति) को छिपा देगा। वर्कअराउंड फ़ाइल में बाहरी सामग्री को सहेज रहा है, उदाहरण के लिए (PHP में):

<?php
    $contents = file_get_contents($external_url);
    $res = file_put_contents($filename, $contents);
?>

फिर, नई फ़ाइल सामग्री (स्ट्रिंग) प्राप्त करें और इसे HTML में पार्स करें, उदाहरण के लिए (jquery में):

$.get(file_url, function(string){
    var html = $.parseHTML(string);
    var contents = $(html).contents();
},'html');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.