【发布时间】:2013-10-01 16:28:09
【问题描述】:
我正在尝试以编程方式更改 href 链接(根据 ajax 异步操作的结果)并在新窗口中打开它(我不想使用 window.open,因为它的行为类似于弹出窗口并且正在在 IE 中被阻止)。
以下代码只有在第二次手动点击链接后才能工作,我怎样才能让它在第一次点击时工作?
简化示例:
<a href="http://demo.com" id="link">trying to change href link dynamically</a>
<script type="text/javascript">
document.getElementById('link').addEventListener("click", function (e) {
if (!e.target.hasAttribute("target")) //only preventDefault for the first time..
{
e.target.setAttribute("target", "_blank");
e.preventDefault();
updateLink();
}
});
function updateLink() {
// --HERE I PERFORM AN AJAX CALL WHICH TAKES A WHILE AND BY ITS RESULT I DECIDE WHICH URL TO USE - BUT HERE I JUST USE IT HARDCODED--
document.getElementById('link').setAttribute("href", "http://google.com");
document.getElementById('link').click();
}
【问题讨论】:
-
长的代码块应该被jsfiddled
-
可能有点傻,但是你有没有试过简单调用
click()函数两次? -
你用的是哪个IE版本?
-
@Erik Christianson - 没有运气。贵宾犬 - 我使用 IE10。
-
你为什么不直接使用
window.location.href = "<chosen url>"?
标签: javascript event-handling click dom-events preventdefault