Tôi biết đây là một thực hiện và sắp xếp ra thỏa thuận, nhưng đây là những gì tôi đang sử dụng để giải quyết các vấn đề trong ứng dụng của tôi.
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 kiểm tra xem liên kết có thuộc tính hay không. Nếu không, nó dừng liên kết từ kích hoạt, thiết lập nó để mở trong một cửa sổ mới sau đó nhấp chuột theo chương trình trên nó.
Bạn có thể đi một bước xa hơn và bỏ qua dừng của nhấp chuột ban đầu (và làm cho mã của bạn một toàn bộ rất nhiều nhỏ gọn hơn) bằng cách cố gắng này:
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
Nếu bạn đang sử dụng jQuery để tóm tắt đi thi thêm một thuộc tính qua trình duyệt, bạn nên sử dụng 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 tình huống sử dụng chính xác của bạn, nhưng đây là cách tôi trầy xước ngứa của riêng tôi.
Dưới đây là demo trong số đó đang hoạt động để bạn gây rối.
(Liên kết trong jsfiddle trở lại cuộc thảo luận này .. không cần một tab mới :))
Hm? 'target =" _ top "' không mở trong một cửa sổ mới - 'target =" _ blank "'. – Tomalak
Nếu liên kết đã mở trong cửa sổ mới (do mục tiêu = "_ trống") và trình xử lý nhấp chuột javascript đã cập nhật cơ sở dữ liệu của bạn, tại sao bạn cần phải mở cửa sổ mới bằng Javascript? –