2012-12-16 69 views
0

我用下面的元頭,以下載當一個頁面被打開的文件:的Javascript鉤子=「刷新」

<meta http-equiv="refresh" content="3;URL=SomeFileName" /> 

有沒有一種方法,使一些JavaScript代碼運行當3秒通過,即在瀏覽器開始下載SomeFileName之前?

+0

如何做js的重定向,並刪除這個醜陋的標題? – zerkms

+0

@zerkms爲什麼「好」而不是「反而」? –

+0

我的意思是「讓一些JavaScript代碼」以及在一個地方重定向 - 在JS(同意,這太隱式) – zerkms

回答

1

您可以使用setTimeout()來計時,但正如評論中所述,在這種情況下,使用JavaScript重定向要好得多。例如:

setTimeout(function(){ 
    /* 
    * code here will be executed before the download 
    */ 
    document.location = "downloadurl"; 
}, 3000); // 3000ms = 3s 
+0

請注意,一些用戶代理將不會執行JS。根據需求,可能需要保持元刷新標題並在頁面加載時立即使用JS(如果瀏覽器能夠這樣做)將其移除。 – skalee

+0

沒有什麼能阻止你從meta刷新作爲回退:) –

1

儘管純JavaScript重定向功能在大多數情況下都是更好的解決方案,但可能有些時候您需要它。

看看這些:
http://www.w3schools.com/jsref/event_onunload.asp
Alerts when navigating away from a web page
http://msdn.microsoft.com/en-us/library/ie/ms536907(v=vs.85).aspx
https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload

基本上,一個事件,當用戶試圖關閉或導航離開該頁面被解僱。您可以連接到該事件進行自定義。

window.onbeforeunload = function() { 
    var who = ["lover", "friend"][(Math.floor(Math.random()*2)+1)]; 
    return "Goodbye my " + who; 
}; 

此函數應該返回一個字符串或沒有。如果它是一個字符串,則會出現一個對話框以確認導航離開;如果它什麼也不是,即未定義,則不發生攔截。

也可爲N OTE是:

自2011年5月25日,即調用window.showModalDialog(),window.alert(),window.confirm()和window.prompt HTML5規範狀態()在這個事件中方法可能會被忽略。