Я знаю, что сделка окончена, но вот что я использую для решения проблемы в моем приложении.
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")
Возможно, вам придется переработать его так, чтобы он соответствовал вашему конкретному варианту использования, но вот как я почесал свой собственный зуд.
Вот демонстрация этого в действии для вас возиться.
(Ссылка в jsfiddle возвращается к этому обсуждению .. новая вкладка не нужна :))
target="_top"не открывается в новом окне -target="_blank"делает.