javascript - window.location 更改完成后有什么方法可以触发回调吗?

标签 javascript html google-chrome

以下所有操作都会成功地将用户重定向到另一个页面(当然是使用 their own caveats ):

  • window.location.replace(new_url),
  • window.location.assign(new_url),
  • window.location = new_url,

someone asking if you can get a callback for changing location 的典型响应当然不是,因为将用户快速转到新页面意味着您页面上的脚本不再处于事件状态。

这一切都很好,但如果您使用上述三种方法中的任何一种来下载文件,用户不仅停留在他们所在的同一页面上,而且还会有轻微的滞后(取决于网络速度)在更新 location 和文件实际开始下载之间。

在这种情况下(用户留在更新了 window.location 的页面上),是否有任何方法可以创建一个回调,例如,正在显示的加载图标重定向之前的行,直到文件实际开始下载?

最佳答案

您可以创建一个隐藏的 iFrame,指向可下载文件。用户不会注意到差异,同时您可以继续在主文档上运行脚本。

function downloadURL(url, callback){
   var hiddenIFrameID = 'hiddenDownloader' + count++;
   var iframe = document.createElement('iframe');
   iframe.id = hiddenIFrameID;
   iframe.style.display = 'none';
   document.body.appendChild(iframe);
   iframe.src = url;
   callback();
}
downloadURL("http:\\...", function() { alert('is downloading'); });

关于javascript - window.location 更改完成后有什么方法可以触发回调吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25514048/

相关文章:

javascript - 为什么用于 AES 加密的 Googles Javascript 代码在此代码中不起作用?

javascript - 通过原始 Javascript 获取 HTML 属性值

javascript - 在 Android Chrome 中运行 JavaScript 控制台(无需电脑)

html - 从输入中按 Tab 仅在 Chrome 中向上移动输入

javascript - 如何在拼接后为force.links()刷新eventFunction(d,index)中的 "index"?

JavaScript shell——有什么区别

javascript - 悬停和焦点上的 Twitter Bootstrap 工具提示

javascript - 使用Angular.js,网页不显示提交的数据

javascript - 在脚本切换菜单中添加 "if"条件 (jquery)

javascript - 当JS重定向到其他页面时,Chrome显示URL