2015-10-03 11 views
6

मैंने एक एचटीएमएल कोड लिखा जो मेरी आईफ्रेम को दूसरी साइट के साथ शुरू करता है।वर्तमान iframe url का पता लगाने के लिए कैसे?

मेरे डोमेन उदाहरण के लिए है: वहाँ एक

<iframe src = "www.anotherdomain.com/pages/firstPage.html"/> 

मैं पूरा नया स्रोत यूआरएल पता लगाने के लिए चाहते हैं तो इस में

www.mydomain.com/Index.html

जब भी आइफ्रेम नया हो जाता है आईफ्रेम टेक्स्ट में प्रारंभिक पृष्ठ के भीतर अन्य पृष्ठों के लिंक शामिल हैं। क्या यह संभव है और इसे पूरा करने के लिए कानूनी है? धन्यवाद। किसी भी मदद की सराहना की है।

मुझे लगता है कि यह मूल मुद्दों को पार करने के लिए जाता है लेकिन क्या इसके लिए कोई काम है?

अद्यतन

मैं फ्रेम लोड घटना में से

document.getElementById("myIframeId").src 

जवाब पाने की कोशिश की। लेकिन यह उस स्रोत को दिखाता रहता है जिसके साथ इसे प्रारंभ किया गया है। यह अद्यतन स्रोत नहीं दिखा रहा है।

document.getElementById("myIframeId").contentWindow.location.href 

सुरक्षा त्रुटि देता है कि एक http फ्रेम iframe में https तक पहुंचने का प्रयास कर रहा है। प्रोटोकॉल बेमेल।

मैंने स्थानीयहोस्ट को SSL में बनाया और https का उपयोग किया लेकिन अनुरोध अवरुद्ध हो गया। मुझे नहीं पता क्यों।

उत्तर

1

मैं उन उत्तरों से सहमत नहीं हूं जो आपको सुझाव देते हैं कि आपको iframe के वर्तमान यूआरएल का पता लगाने के लिए "src" का उपयोग करना चाहिए। यह आपको वर्तमान यूआरएल नहीं देता है - लेकिन यूआरएल के साथ शुरू हुआ।

डोमेन निम्न कोड की विधि का उपयोग करने में एक ही मूल से हो गया है:

$(document).ready(function() { 
    $('#myframe').load(function() { 
    alert($(this).get(0).contentWindow.location.href); 
    }); 
}); 

डोमेन अलग मूल से हैं - लेकिन आप दोनों की पहुंच है (या दोनों तुम्हारा कर रहे हैं), तो आप window.postMessage फ़ंक्शन और contentWindow iFrame की संपत्ति का उपयोग कर सकते हैं ताकि माता-पिता के लिए डेटा को नया पृष्ठ लोड होने पर डेटा दिखाया जा सके।

यहाँ कि पर एक ट्यूटोरियल है: http://javascript.info/tutorial/cross-window-messaging-with-postmessage

और अगर iFrame में डोमेन पूरी तरह से विदेशी है, एक दृष्टिकोण मैं के बारे में सोच सकते हैं एक सर्वर साइड स्क्रिप्ट में है कि डोमेन लोड और यह इस डेटा प्रस्तुत करने के लिए प्राप्त करने के लिए है बदले गए लिंक के साथ। अब आप इस स्क्रिप्ट को iFrame के अंदर कॉल कर सकते हैं और contentWindow.location.href संपत्ति का उपयोग करते समय भी इसका उपयोग कर सकते हैं।

+0

हां आपने जिस समस्या का सामना कर रहा हूं उसकी ओर इशारा किया। क्या आप अद्यतन प्रश्न की जांच कर सकते हैं। धन्यवाद –

+0

मैंने आपके अपडेट में हाइलाइट किए गए मामलों के उत्तर पहले से ही दिए हैं –

0

नहीं, यह क्रॉस मूल त्रुटि फेंक नहीं देगा।

<iframe id="test" src="www.anotherdomain.com/pages/firstPage.html"></iframe> 

जावास्क्रिप्ट:

alert(document.getElementById('test').src); 

यह iframe की src मूल्य सूचित करेंगे।

इसके अलावा आप src ynamically सेट कर सकते हैं।

document.getElementById('test').src = "http://www.neuralnetworksolutions.com/resources.php"; 

आप से http://www.dyn-web.com/tutorials/iframes/

+0

अद्यतन प्रश्न की जांच करें। धन्यवाद –

2

जावास्क्रिप्ट आइफ्रेम के बारे में अधिक सीख सकते हैं आप अगर यह बदल गया है देखने के लिए एक अंतराल पर src संपत्ति देख सकते हैं। यहां एक फ़ंक्शन है जो आपके लिए ऐसा करेगा।

function watchIframeSRC(iframe, callback, interval) { 
    // check every 1 second by default 
    if (typeof interval === 'undefined') { 
     interval = 1000; 
    } 
    var src = iframe.src; 
    return setInterval(function() { 
     // invoke the callback if the src is different 
     if (iframe.src !== src) { 
      src = iframe.src; 
      callback(iframe); 
     } 
    }, interval); 
} 

var iframe = document.getElementById('test'); 

watchIframeSRC(iframe, function (iframe) { 
    console.log("iframe src:", iframe.src); 
}); 
+0

मुझे यह पसंद नहीं है। लेकिन हालांकि यह src विशेषता के साथ काम नहीं कर रहा है। अद्यतन प्रश्न की जांच करें। धन्यवाद –

+0

जो आप पूछ रहे हैं वह संभव नहीं है। और इसकी आवाज़ से, आप कुछ दुर्भावनापूर्ण करने का प्रयास कर रहे हैं। –

0

ठीक है। मैंने विभिन्न उत्तरों को जानने के लिए चारों ओर काम किया लेकिन मैं क्रॉस डोमेन AJAX अनुरोध करने के लिए YQL और jQuery की सहायता से ऐसा करने में सक्षम था। IFrame मुझे अपनी आंतरिक घटनाओं तक पहुंचने नहीं देगा। मैंने वाईक्यूएल के साथ दूसरे डोमेन से एचटीएमएल स्क्रैप किया और काम को काम करने के लिए मिला। मेरे आईफ्रेम को हटा दिया और स्क्रैप किए गए एचटीएमएल को एक div में रखा।

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