Tôi biết đây là một thỏa thuận được thực hiện và sắp xếp, nhưng đây là những gì tôi đang sử dụng để giải quyết vấn đề trong ứng dụng của mình.
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
Về cơ bản những gì đang diễn ra ở đây là tôi chạy kiểm tra xem liên kết có target=_blankthuộc tính không. Nếu không, nó sẽ ngăn liên kết kích hoạt, thiết lập nó để mở trong một cửa sổ mới sau đó lập trình nhấp vào nó.
Bạn có thể tiến thêm một bước và bỏ qua việc dừng nhấp chuột ban đầu (và làm cho mã của bạn gọn hơn rất nhiều) bằng cách thử điều này:
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
Nếu bạn đang sử dụng jQuery để trừu tượng hóa việc triển khai thêm một trình duyệt chéo thuộc tính, bạn nên sử dụng cái này thay vì e.target.setAttribute("target", "_blank"):
jQuery(event.target).attr("target", "_blank")
Bạn có thể cần phải làm lại nó để phù hợp với trường hợp sử dụng chính xác của bạn, nhưng đây là cách tôi gãi ngứa.
Đây là bản demo của nó trong hành động để bạn gây rối.
(Liên kết trong jsfiddle quay lại cuộc thảo luận này .. không cần tab mới :))
target="_top"không mở trong một cửa sổ mới -target="_blank"không.