href リンクをプログラムで (ajax 非同期操作の結果に従って) 変更し、新しいウィンドウで開こうとしています (ポップアップのように動作し、IE でブロックされているため、window.open を使用したくありません)。 )。
次のコードは、リンクを手動で 2 回クリックした後にのみ機能します。最初のクリックで機能させるにはどうすればよいですか?
簡単な例:
<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();
}