2013-02-06 73 views
6

我在我的網頁中有一個iframe。我通過JavaScript修改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'; 

但是,每當我這樣做,它就會登錄到瀏覽器的歷史記錄中。因此,每當我在瀏覽器窗口中按回時,iframe內容都會從videoid3到videoid2到videoid1。如果我再次按下,整個頁面會返回。

我想用javascript修改iframe src,但沒有記錄進入瀏覽器的歷史記錄。因此,如果我點擊瀏覽器後退按鈕,整個頁面會返回而不更新iframe。

我試圖做這樣的事情:

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需要您通過iframe.src而不是contentWindow.location.replace()來更改網址。

因此,如何修改iframe.src而不登錄歷史記錄?

相關 其實,這是我在探索解決的主要問題的解決方案之一,我在這裏張貼History object back button with iframes

+0

可能的重複http://stackoverflow.com/questions/821359/reload-an-iframe-without-adding-to-the-history我認爲這個答案將解決你的問題http://stackoverflow.com/a/8681618/2009041 –

回答

14

不改變SRC,只是用一個新的代替舊的iframe ?

<!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