Я знаю, що це зроблена та розібрана угода, але ось що я використовую для вирішення проблеми у своєму додатку.
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"робить.