ฉันรู้ว่านี่เป็นข้อตกลงที่ทำเสร็จแล้ว แต่นี่คือสิ่งที่ฉันใช้เพื่อแก้ไขปัญหาในแอปของฉัน
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"ทำ