2013-01-24 11 views
5

बिना आईफ्रेम की सामग्री के साथ _top विंडो की सामग्री को बदलें, क्या उस दस्तावेज़ को लोड करने के लिए कोई नया जीईटी जारी किए बिना, ब्राउज़र विंडो (_top फ्रेम) की सामग्री को आईफ्रेम में लोड किए गए दस्तावेज़ के साथ प्रतिस्थापित करना संभव है?रीलोड पेज

कुछ इस तरह:

<html> 
<head> 
<script type="text/javascript" language="JavaScript"> 
$(document).ready(function() { 
    $("#link").click(function() { 
    // should present in the browser window the content of the iframe WITHOUT reload 
    // even preserve javascript/head code 
    $(document).html($("#frameDestination").html()); 
    }); 
}); 
</script> 
</head> 
<body> 
<a id="link" href="#">full window</a> 
<iframe id="frameDestination" src="http://www.some-random-site.com" width="900px" height="500px"></iframe> 
</body> 
</html> 
+0

मुझे यह सुनिश्चित करने दें कि हम सही ढंग से समस्या को समझते हैं: आपके पास एक एंकर टैग और एक आईफ्रेम वाला एक पृष्ठ है। एंकर टैग पर क्लिक करने पर, आप चाहते हैं कि पूरा पृष्ठ iframe में था (कोई HTTP अनुरोध किए बिना)? – jbabey

+0

मैं किसी भी तरह से यह संभव नहीं सोच सकता। संपूर्ण ब्राउज़र विंडो को कवर करने के लिए आईफ्रेम को दोबारा स्थापित करना संभव हो सकता है, लेकिन यह अभी भी मूल पृष्ठ के भीतर घोंसला होगा। – Blazemonger

+0

@jbabey बिल्कुल! मैं अनुकरण करना चाहता हूं जैसे पृष्ठ को ब्राउजर के एड्रेस बार में यूआरएल में टाइप करके लोड किया गया है। मैं सर्वर पर एक नया राउंडट्रिप नहीं चाहता हूं जो एक ही HTML दस्तावेज़ के लिए पूछता है क्योंकि यह पहले से ही आईफ्रेम में लोड हो चुका है। –

उत्तर

1

उपयोग सामग्री() जब jQuery में एक iframe साथ काम करना।

$("#YourIframe").contents().find("html").html(); 

यह केवल अगर iframe माता पिता के रूप में एक ही डोमेन में है काम करने जा रहा है।

1

मैं क्रॉस डोमेन का परीक्षण नहीं किया है, लेकिन एक ही डोमेन पर मैं इस स्क्रिप्ट काम कर रहे हैं:

$(document).ready(function() { 
    $("#link").click(function() { 
    var iframeBody = document.getElementById("frameDestination").contentDocument, 
    head = iframeBody['head'].innerHTML, 
    body = iframeBody['body'].innerHTML; 
    $('body').html(body); 
    $('head').html(head); 
    }); 
}); 

नवीनतम Firefox में, मैं भी में एक स्क्रिप्ट टैग में एक चर सेट करने में सक्षम हूँ फ्रेम, और लिंक पर क्लिक करने के बाद _top में उस मान को देखें।

+0

धन्यवाद @ गितिनिजा! यह एक ही डोमेन के लिए एक आकर्षण की तरह काम करता है, लेकिन बस इसे एक अलग डोमेन के साथ परीक्षण किया और काम नहीं करता (एफएफ और क्रोम)। –

+0

मैंने पढ़ा है कि यदि iframe src जावास्क्रिप्ट द्वारा सेट किया गया है, तो क्रॉस डोमेन प्रतिबंध लागू नहीं होता है, लेकिन मैंने अभी तक परीक्षण नहीं किया है। क्या आप अपने बैठने में जावास्क्रिप्ट का उपयोग करके आईफ्रेम टैग को गतिशील रूप से उत्पन्न करने में सक्षम हैं? – Rustavore

+0

@Gitnija: इसके साथ काम नहीं करता है: 'var ifrm = document.createElement (" IFRAME "); ifrm.setAttribute ("src", "http://www.somesite.com"); ifrm.setAttribute ("id", "frameDestination"); ifrm.style.width = 1200+ "पीएक्स"; ifrm.style.height = 500+ "पीएक्स"; document.body.appendChild (ifrm); ' –

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