2013-02-06 24 views
6

Tôi có một khung nội tuyến trong trang web của mình. Tôi sửa đổi thuộc tính src thông qua javascript như vậy:Sửa đổi iframe.src mà không cần nhập vào đối tượng lịch sử

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

Tuy nhiên, mỗi lần tôi làm điều này, nó được đăng nhập vào lịch sử của trình duyệt. Vì vậy, mỗi khi tôi nhấn lại trong cửa sổ trình duyệt, nội dung khung nội tuyến chuyển từ videoid3 sang videoid2 sang videoid1. Nếu tôi bấm lại, toàn bộ trang sẽ quay trở lại.

Tôi muốn sửa đổi iframe src bằng javascript KHÔNG đăng nhập một mục nhập vào lịch sử của trình duyệt. Vì vậy, nếu tôi nhấp vào nút quay lại trình duyệt, toàn bộ trang sẽ quay trở lại mà không cập nhật iframe.

tôi đã cố gắng làm điều gì đó như:

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

Mặc dù điều này làm cho trình duyệt trở lại nút hành xử theo cách tôi muốn, nó đã phá vỡ những điều nào đó trong đoạn video Vimeo. Vimeo YÊU CẦU bạn thay đổi url thông qua iframe.src thay vì contentWindow.location.replace().

Như vậy, làm cách nào để sửa đổi iframe.src KHÔNG đăng nhập vào lịch sử?

liên quan Đây thực sự là một trong những giải pháp tôi đang khám phá để giải quyết vấn đề chính, mà tôi được đăng ở đây History object back button with iframes

+0

Bản sao có thể có của http://stackoverflow.com/questions/821359/reload-an-iframe-without-adding-to-the-history Tôi nghĩ câu trả lời này sẽ giải quyết vấn đề của bạn http://stackoverflow.com/a/8681618/2009041 –

Trả lời

14

không thay đổi src, chỉ cần thay thế các iframe cũ bằng một cái mới ?

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

Không có trạng thái lịch sử. Chức năng tương tự. Mọi người đều thắng.

+0

nếu bạn muốn, bạn có thể đăng câu trả lời này cho câu hỏi khác của tôi mà tôi đã đề cập. Tôi sẽ chấp nhận nó. – John

Các vấn đề liên quan