2013-02-06 4 views
6

Ich habe einen iframe in meiner Webseite. Ich ändern via Javascript, um die src-Eigenschaft wie folgt:Ändern iframe.src ohne Eintrag zum History-Objekt

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

aber jedes Mal wenn ich dies tun, ist es in der History des Browsers angemeldet. Also, jedes Mal, wenn ich im Browserfenster zurück drücke, geht der Iframe-Inhalt von videoid3 zu videoid2 zu videoid1. Wenn ich erneut drücke, geht die gesamte Seite zurück.

Ich würde gerne die iframe src mit Javascript ändern, ohne einen Eintrag in den Browserverlauf zu protokollieren. Wenn ich also auf die Zurück-Schaltfläche des Browsers klicke, geht die gesamte Seite zurück, ohne den Iframe zu aktualisieren.

Ich habe versucht, so etwas wie tun:

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'); 

Obwohl dies der Browserrücktaste so verhalten, wie habe ich wollte, brach es bestimmte Dinge in der Vimeo-Video. Vimeo ERFORDERT, dass Sie URLs über die Datei iframe.src anstelle von contentWindow.location.replace() ändern.

Als solche, wie ändere ich die iframe.src ohne Protokollierung in den Verlauf?

Verwandte Dies ist eigentlich eine der Lösungen Ich erforsche das Hauptproblem zu lösen, die ich hier gepostet History object back button with iframes

+0

Mögliche Duplikat von http://StackOverflow.com/Questions/821359/Reload-an-Iframe-without-Adding-to-the-History Ich denke, diese Antwort wird Ihr Problem lösen http://StackOverflow.com/a/8681618/2009041 –

Antwort

14

nicht das src ändern, ersetzen Sie einfach den alten iframe mit einer neuen ?

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

Keine Geschichte Staaten. Gleiche Funktionalität. Jeder gewinnt.

+0

Wenn Sie möchten, können Sie diese Antwort auf meine andere Frage, die ich erwähnt habe, posten. Dann werde ich es akzeptieren. – John

Verwandte Themen