我正在尝试以编程方式更改href链接(根据ajax异步操作的结果)并在新窗口中打开它(我不想使用window.open,因为它的行为就像弹出窗口一样在IE中被阻止。
以下代码仅在链接上第二次单击MANUALLY后才有效,如何在第一次点击时进行操作?
简化示例:
<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();
}
答案 0 :(得分:1)
我在这个jsFiddle中组织了你的代码:http://jsfiddle.net/mswieboda/Hhj4D/
JavaScript:
var $link = document.getElementById('link');
$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() {
$link.setAttribute("href", "http://google.com");
$link.click();
}
当我跑步时,这对我有用。将鼠标悬停在该链接上,您可以看到http://demo.com
,但点击它会转到http://google.com
。这是所需的功能吗?您可以随时使用updateLink函数(在AJAX调用之后)更改href
,同样,您也可以在该函数中设置_target
,这对我来说更有意义。