2010-02-05 31 views
16

Có cách nào trong javascript dừng một khung nội tuyến ở giữa tải trang không? Lý do tôi cần phải làm điều này là tôi có một nền tảng iframe streaming dữ liệu từ một máy chủ web (thông qua một cơ chế Comet phong cách) và tôi cần để có thể cắt đứt kết nối theo ý muốn.Dừng một khung nội tuyến tải một trang bằng cách sử dụng javascript

Mọi ý tưởng đều được chào đón.

+1

Không đủ tự tin để đặt câu trả lời, nhưng bạn không thể chỉ dẫn iframe đến một url khác? Một cái gì đó như 'document.getElementById (" myiframe "). Src =" http://www.example.com/not-long-polling.html ";' –

+1

Đó là ý tưởng đầu tiên của tôi (+1), nhưng tôi cần nội dung của khung được bảo tồn. – Konrad

Trả lời

26

Đối với FireFox/Safari/Chrome, bạn có thể sử dụng window.stop():

window.frames[0].stop() 

Đối với IE, bạn có thể làm điều tương tự với document.execCommand ('Stop'):

window.frames[0].document.execCommand('Stop') 

Đối với một giải pháp qua trình duyệt, bạn có thể sử dụng:

if (navigator.appName == 'Microsoft Internet Explorer') { 
    window.frames[0].document.execCommand('Stop'); 
} else { 
    window.frames[0].stop(); 
} 
+12

Có lẽ tốt hơn nên kiểm tra 'typeof (window.frames [0] .stop)' thay vì 'navigator.appName'. Phiên bản IE trong tương lai có thể hỗ trợ điều đó. – unclenorton

+0

@unclenorton tôi không thực sự có được những gì bạn đang cố gắng để nói. bạn có thể viết điều kiện? –

+6

@MorSela, tôi đang cố gắng nói rằng tốt hơn là nên kiểm tra tính năng thay vì cho trình duyệt. Điều kiện sẽ trông giống như '(typeof (window.frames [0] .stop === 'undefined')'. – unclenorton

13

toàn bộ mã nên được như thế này, (dòng unclenorton của đã mất tích một áo ngực cket)

if (typeof (window.frames[0].stop) === 'undefined'){ 
    //Internet Explorer code 
    setTimeout(function() {window.frames[0].document.execCommand('Stop');},1000); 
}else{ 
    //Other browsers 
    setTimeout(function() {window.frames[0].stop();},1000); 
} 
+1

Tại sao 'setTimeout' được sử dụng? – Nishi

1

Chỉ,

document.getElementById("myiframe").src = ''; 
0

không hỗ trợ trong IE

<script> 
function stopit() { 
window.stop(); 

}; 
</script> 


<a href="#" onclick="stopit()" class="Stop" title="Stop"></a> 
+0

Vui lòng xem câu trả lời được chấp nhận, tôi nghĩ nó khá giống với những gì bạn đã đăng – Marged

0

Rất dễ dàng:

1) Lấy iframe hoặc img bạn don' t muốn tải:

let myIframe = document.getElementById('my-iframe') 

2) Sau đó, bạn chỉ có thể thay thế thuộc tính src để about.blank:

myIframe.src = 'about:blank' 

Đó là tất cả.


Nếu bạn muốn tải các iframe hoặc hình ảnh tại một thời điểm trong tính năng khi một số sự kiện xảy ra sau đó chỉ cần lưu trữ các biến src trong dataset:

myIframe.dataset.srcBackup = myIframe.src 
// then replace by about blank 
myIframe.src = 'about:blank' 

Bây giờ bạn có thể sử dụng nó khi cần thiết một cách dễ dàng:

myIframe.src = myIframe.dataset.srcBackup 
Các vấn đề liên quan