以下所有操作都会成功地将用户重定向到另一个页面(当然是使用 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/