2011-06-11 17 views
95

में कोई तत्व चुनना हमारे आवेदन में, हम एक वेब पेज का विश्लेषण करते हैं और इसे iFrame में किसी अन्य पृष्ठ में लोड करते हैं। उस लोड किए गए पृष्ठ के सभी तत्वों में उनके टोकनिड-एस हैं। मुझे उन टोकनिड-एस द्वारा तत्वों का चयन करने की आवश्यकता है। मतलब - मैं मुख्य पृष्ठ पर किसी तत्व पर क्लिक करता हूं और iFrame में पृष्ठ में संबंधित तत्व का चयन करता हूं। jQuery की मदद से मैं निम्नलिखित तरीके से यह कर रहा हूँ:iFrame jQuery

function selectElement(token) { 
    $('[tokenid=' + token + ']').addClass('border'); 
} 

हालांकि इस समारोह के साथ मैं केवल, iFrame में नहीं वर्तमान पृष्ठ में तत्वों का चयन कर सकते हैं। क्या कोई मुझे बता सकता है कि मैं लोड किए गए आईफ्रेम में तत्वों का चयन कैसे कर सकता हूं?

धन्यवाद।

उत्तर

116
var iframe = $('iframe'); // or some other selector to get the iframe 
$('[tokenid=' + token + ']', iframe.contents()).addClass('border'); 

भी ध्यान रखें कि अगर यह iframe की src सुरक्षा कारणों से, एक अलग डोमेन की ओर इशारा करते है, तो आप जावास्क्रिप्ट में इस iframe की सामग्री का उपयोग करने में सक्षम नहीं होगा।

+5

ध्यान रखें $ ('iframe') नहीं है सीधे आईफ्रेम वापस करें। आपको इसे सरणी से बाहर खींचने की जरूरत है। – Kayla

+0

मदद करने की इच्छा के लिए धन्यवाद। लेकिन यह काम नहीं लग रहा है। – cycero

+2

@cycero, यह काम करना चाहिए। क्या आप इस आईफ्रेम को गतिशील रूप से उत्पन्न कर रहे हैं? यह न भूलें कि सुरक्षा कारणों से आप किसी अन्य डोमेन पर इस आईफ्रेम के src element को इंगित करते हैं, तो आप इसकी सामग्री तक नहीं पहुंच सकते हैं। –

39

इस पोस्ट पर एक नज़र डालें: http://praveenbattula.blogspot.com/2009/09/access-iframe-content-using-jquery.html

$("#iframeID").contents().find("[tokenid=" + token + "]").html(); 

खोज विधि में रखें अपने चयनकर्ता।

यह संभव नहीं हो सकता है, हालांकि अगर आपके सर्वर से आईफ़्रेम नहीं आ रहा है। अनुमति के बारे में अन्य पदों में त्रुटियों से इंकार कर दिया गया है।

jQuery/JavaScript: accessing contents of an iframe

+0

यह तत्व के HTML प्राप्त करने के मामले में काम करता है, लेकिन मैं उस चयनित तत्व में सीएसएस क्लास कैसे जोड़ सकता हूं? $ ("# iframeDiv")। सामग्री()। ढूंढें ("[टोकनिड =" + टोकन + "]")। एडक्लास ("सीमा"); काम नहीं लग रहा है। – cycero

+1

क्या आपको कोई अनुमति अस्वीकार कर दी गई है? क्या आप मुझे आईफ्रेम का एचटीएमएल दे सकते हैं? –

+0

नहीं, कोई अनुमति मुद्दों से इनकार नहीं किया। – cycero

13

जब अपने दस्तावेज़ तैयार मतलब यह नहीं है कि है कि आपके आइफ्रेम भी तैयार
ताकि आप iframe लोड घटना को सुनने चाहिए तो अपने सामग्री का उपयोग है:

$(function() { 
    $("#my-iframe").bind("load",function(){ 
     $(this).contents().find("[tokenid=" + token + "]").html(); 
    }); 
}); 
-3
यहाँ

डीवी ड्रैगगेबल को केवल कंटेनर में बनाने के लिए ऐसा करने के लिए सरल है:

$("#containerdiv div").draggable({containment: "#containerdiv ", scroll: false});