我正在使用以下元标头来在打开页面时下载文件:
<meta http-equiv="refresh" content="3;URL=SomeFileName" />
有没有办法让一些 javascript 代码在 3 秒过后运行,即在浏览器开始下载 SomeFileName 之前?
我正在使用以下元标头来在打开页面时下载文件:
<meta http-equiv="refresh" content="3;URL=SomeFileName" />
有没有办法让一些 javascript 代码在 3 秒过后运行,即在浏览器开始下载 SomeFileName 之前?
您可以使用setTimeout()
它来计时,但如评论中所述,在这种情况下使用 JavaScript 重定向会更好。例子:
setTimeout(function(){
/*
* code here will be executed before the download
*/
document.location = "downloadurl";
}, 3000); // 3000ms = 3s
虽然大多数时候纯 javascript 重定向函数会是更好的解决方案,但有时您可能需要它。
看看这些:
http://www.w3schools.com/jsref/event_onunload.asp
离开网页时的警报
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;
};
这个函数应该返回一个字符串或什么都不返回。如果是字符串,则会出现一个对话框,确认导航离开;如果它什么都不是,即 undefined,则不会发生拦截。
另请注意:
自 2011 年 5 月 25 日起,HTML5 规范规定在此事件期间可能会忽略对 window.showModalDialog()、window.alert()、window.confirm() 和 window.prompt() 方法的调用。