我知道这是一个做整理了交易,但这里是我用来解决我的应用程序的问题是什么。
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
基本上这里发生的是我运行检查,如果链接有target=_blank
属性。如果没有,它会阻止链接触发,将其设置为在新窗口中打开,然后以编程方式点击它。
你可以走一步,并跳过了原始点击的停止(和使你的代码一大堆更加紧凑)通过尝试这样的:
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
如果您正在使用jQuery的抽象掉的实施添加属性跨浏览器的,你应该使用这个的e.target.setAttribute("target", "_blank")
:
jQuery(event.target).attr("target", "_blank")
您可能需要返工,以满足您的实际使用情况,但在这里就是我划伤了我自己的痒。
这里有一个demo它在行动中让你陷入困境。
(中的jsfiddle链接回来这个讨论..不需要一个新的标签:))
嗯? 'target =“_ top”'不会在新窗口中打开 - 'target =“_ blank”'。 – Tomalak 2009-10-15 17:53:51
如果链接已经在新窗口中打开(由于target =“_ blank”),并且javascript click处理程序已在更新数据库,为什么需要使用Javascript打开新窗口? – 2009-10-15 21:05:04