2013-02-06 59 views
6

मेरे पास मेरे वेब पेज में एक आईफ्रेम है। मैं बहुत तरह जावास्क्रिप्ट के माध्यम से src संपत्ति को संशोधित:इतिहास ऑब्जेक्ट में प्रवेश किए बिना iframe.src संशोधित करें

document.getElementById('myiframe').src = 'http://vimeo.com/videoid1'; 
document.getElementById('myiframe').src = 'http://vimeo.com/videoid2'; 
document.getElementById('myiframe').src = 'http://vimeo.com/videoid3'; 

हालांकि, हर मैं यह कर, यह ब्राउज़र का इतिहास में लॉग इन किया है। इसलिए जब भी मैं ब्राउज़र विंडो में वापस दबाता हूं, तो आईफ़्रेम सामग्री वीडियो आईडी 3 से videoid2 से videoid1 तक जाती है। अगर मैं दोबारा दबाता हूं, तो पूरा पृष्ठ वापस चला जाता है।

मैं ब्राउज़र के इतिहास में प्रवेश लॉग इन किए बिना जावास्क्रिप्ट के साथ iframe src को संशोधित करना चाहता हूं। इसलिए यदि मैं ब्राउज़र बैक बटन पर क्लिक करता हूं, तो पूरा पृष्ठ आईफ्रेम अपडेट किए बिना वापस चला जाता है।

मैं की तरह कुछ कर रही करने की कोशिश की:

document.getElementById('myiframe').contentWindow.location.replace('http://vimeo.com/videoid1'); 
document.getElementById('myiframe').contentWindow.location.replace('http://vimeo.com/videoid2'); 
document.getElementById('myiframe').contentWindow.location.replace('http://vimeo.com/videoid3'); 

हालांकि इस ब्राउज़र वापस बटन तरह से मैं करना चाहता था व्यवहार करते हैं बनाया है, यह Vimeo वीडियो में कुछ खास बातें तोड़ दिया। Vimeo आपको contentWindow.location.replace() की बजाय iframe.src के माध्यम से urls को बदलने की आवश्यकता है।

इस प्रकार, मैं इतिहास में लॉग इन किए बिना iframe.src को कैसे संशोधित करूं?

संबंधित यह वास्तव में समाधान मैं मुख्य समस्या को हल करने की खोज कर रहा हूँ में से एक है, जो मैं यहाँ History object back button with iframes तैनात

+0

http://stackoverflow.com/questions/821359/reload-an-iframe-without-adding-to-the- इतिहास का संभावित डुप्लिकेट मुझे लगता है कि यह उत्तर आपकी समस्या का समाधान करेगा http://stackoverflow.com/a/8681618/2009041 –

उत्तर

14

src परिवर्तन नहीं करते, बस पुराने आइफ्रेम एक नया एक के साथ बदलें है ?

<!doctype html> 

<style> 
iframe { 
    width: 300px; 
    height:300px; 
} 
</style> 

<script> 
var urls = ["http://bing.com", "http://google.com", "http://duckduckgo.com"]; 

function next() { 
    if(urls.length==0) return; 
    var original = document.getElementsByTagName("iframe")[0]; 
    var newFrame = document.createElement("iframe"); 
    newFrame.src = urls.pop(); 
    var parent = original.parentNode; 
    parent.replaceChild(newFrame, original); 
} 
</script> 

<p>let's test some iframes</p> 
<button onclick="next()">next</button> 
<iframe /> 

कोई इतिहास नहीं बताता है। वही कार्यक्षमता हर कोई जीतता है।

+0

यदि आप चाहते हैं, तो आप इस उत्तर को मेरे अन्य प्रश्न पर पोस्ट कर सकते हैं जिसका मैंने उल्लेख किया था। तब मैं इसे स्वीकार करूंगा। – John