我正在尝试创建一个动态超链接,用于下载从服务器检索到的图像。
我使用的代码:
HTML:
<a class="btn" id="controlDownloadJPEG" download>Save & Download</a>
JS:
this.downloadJPEGClickHandler = function() {
CollageCore.downloadJPEG(function(data){
$("#controlDownloadJPEG").attr("href", "../file/fileStore.action?fileName=/" + data[0].AttachmentUrl);
});;
return true;
};
点击时 href 会发生变化,但链接本身会链接到我的 JavaScript 执行之前设置的 href。第一次点击没有任何作用,因为没有默认的 href,第二次点击将下载第一次点击应该下载的内容。
我看到了使用 JavaScript window.href 而不是依赖 html 标签本身的建议。我需要使用 html 标签的原因是它的下载功能。
最佳答案
您将异步调用视为同步调用。这就像订购外卖比萨饼并期望它在您下订单后立即出现。这不会发生,除非你站在餐厅里并且它已经做好了。
您需要取消点击并在调用返回时手动触发页面更改。所以您想使用 window.location.href = "new path";
而不是设置 href。
this.downloadJPEGClickHandler = function() {
CollageCore.downloadJPEG(function(data){
window.location.href = "../file/fileStore.action?fileName=/" + data[0].AttachmentUrl;
});
return false; //or preventDefault if you pass in event object
};
关于javascript - 如何在 onclick 事件期间更改 href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28991127/