0

我正在使用以下元标头来在打开页面时下载文件:

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

有没有办法让一些 javascript 代码在 3 秒过后运行,即在浏览器开始下载 SomeFileName 之前?

4

2 回答 2

1

您可以使用setTimeout()它来计时,但如评论中所述,在这种情况下使用 JavaScript 重定向会更好。例子:

setTimeout(function(){
    /*
     * code here will be executed before the download
     */
    document.location = "downloadurl";
}, 3000); // 3000ms = 3s
于 2012-12-16T15:13:56.950 回答
1

虽然大多数时候纯 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() 方法的调用。

于 2012-12-16T15:27:31.107 回答