【发布时间】:2018-09-01 23:40:53
【问题描述】:
我想阻止链接的默认行为 (a) 然后做默认行为,比如说在新窗口中打开一个链接。
这是一些 HTML 代码:
<a href="somewhere" target="_blank" id="mylink">
还有JS代码:
document.getElementById('mylink').addEventListener('click', function (e) {
e.preventDefault();
axios.post('options', new FormData(document.querySelector('#myform')))
.then(function(){
// Here I want to do what the link should have done!
});
});
我知道我可以这样做:
window.open(e.target.href);
但这不是一个选项,因为浏览器认为这是一个弹出窗口。而且我不想在 JS 中重写一些东西,只是像往常一样考虑链接:这个链接必须执行其默认行为(这是被阻止的)。
有没有办法做到这一点?
【问题讨论】:
-
window.location = somewhere呢? -
您可以通过设置和检查标志来重新触发链接的点击事件。
-
@Doug:不,这不是 HTML 应该做的:HTML(如果没有阻止默认设置)应该在新窗口中打开链接
-
这似乎有点像 XY 问题?如果您不打算执行链接,除非 ajax 事件成功(数据可用),那么似乎链接可能不是触发请求开始的地方。您的 ajax 调用似乎没有使用链接中的任何内容,并且没有什么可以阻止在加载页面时进行 ajax 调用以启用或禁用链接开始。您似乎也在尝试解决用户偏好。正如你自己所说的
windows.open会起作用,但前提是它没有打开弹出窗口,..这是用户偏好。
标签: javascript html