บทความนี้อธิบายวิธีที่ JS เปิดหน้าต่างใหม่เพื่อป้องกันไม่ให้มันถูกบล็อกโดยเบราว์เซอร์ แบ่งปันสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
การเปิดหน้าต่างใหม่โดยใช้วิธีการแบบดั้งเดิม OPEN () จะถูกบล็อกโดยเบราว์เซอร์ ดังนั้นเราจะทำให้ JS เปิดหน้าต่างใหม่โดยไม่ถูกบล็อกโดยเบราว์เซอร์ได้อย่างไร ที่จริงแล้วยังมีวิธีแก้ปัญหาอยู่ที่นี่เราจะวิเคราะห์วิธีการแก้ปัญหานี้
ฉันได้พบปัญหาดังกล่าวเมื่อเร็ว ๆ นี้ดังนั้นฉันจะแบ่งปันวิธีการโผล่หน้าต่างใหม่กับคุณ ทุกคนยินดีที่จะเพิ่ม ...
อย่างแรกคือการใช้วิธี JavaScript Window.Open () (ในกรณีส่วนใหญ่มันจะถูกบล็อกโดยการเรียกดู)
ประเภทที่สองคือการจำลองการส่งแบบฟอร์ม หลักการคือการระบุว่าการกระทำของแบบฟอร์มคือที่อยู่ URL ที่คุณต้องการเปิดและเป้าหมายถูกตั้งค่าเป็น "_blank"
การคัดลอกรหัสมีดังนี้: document.getElementById ("msgtxt"). innerhtml = "<ฟอร์ม id = 'hiddideLink' action = '"+shref+"' target = '_ blank'> <อินพุตประเภท = 'hidden' name = 'object' value = '"
var s = document.getElementById ("hiddenlink");
S.Submit ();
อย่างไรก็ตามวิธีการส่งแบบฟอร์มจำลองอาจถูกบล็อก ...
มีการคลิกประเภทที่สามแบบจำลองการเชื่อมโยงหลายมิติ (<a>)
เมื่อกดปุ่มหากคุณต้องการเปิดแท็บใหม่คุณสามารถจำลองลิงค์ที่ถูกกดแล้วเปิดลิงค์
อย่างไรก็ตามใน jQuery โดยใช้ a.click (), a.trigger ('คลิก') และอื่น ๆ จะไม่ทำให้เกิดเหตุการณ์เริ่มต้นของลิงก์ที่จะดำเนินการ
รหัสต่อไปนี้จะจำลองเหตุการณ์การคลิกลิงก์จากนั้นเรียกใช้งานเหตุการณ์ที่ลิงค์ถูกเปิดโดยค่าเริ่มต้น
อย่างไรก็ตามเป็นที่น่าสังเกตว่า: สำหรับ IE เบราว์เซอร์ฟังก์ชั่น CreateTeeVent ได้รับการสนับสนุนเฉพาะที่ IE9 หรือสูงกว่าดังนั้นรหัสต่อไปนี้จะต้องดำเนินการใน IE9 หรือสูงกว่า
การคัดลอกรหัสมีดังนี้: var a = $ ("<a href = 'http: //www.test.com' target = '_ blank'> ทดสอบ </a>") .get (0);
var e = document.createeeVent ('MouseEvents');
E.InitEvent ('คลิก', จริง, จริง);
A.Dispatchevent (e);
ประเภทที่สี่: เหตุการณ์เดือดโดยใช้เบราว์เซอร์ (พิมพ์ซ้ำ)
การคัดลอกรหัสมีดังนี้: clickopenwin: function (f) {
var datakey = "clickopenwin.datakey"
var me = $ (นี่);
var a = me.data (datakey);
var returndata = null;
ถ้า (! a) {
a = $ ("");
me.data (Datakey, a);
A.Click (ฟังก์ชั่น (e) {
if (returndata) {
a.attr ("href", returndata);
}อื่น {
A. ก่อน (ฉัน);
E. Stop ();
-
-
-
me.mouseover (function () {$ (นี่). ก่อน (a) .appendto (a);});
me.mouseout (function () {a.before ($ (this));});
me.click (function () {
a.attr ("href", "#|");
returnData = F.Apply (สิ่งนี้, อาร์กิวเมนต์);
-
-
1). ก่อนอื่นมาพูดคุยเกี่ยวกับเอฟเฟกต์สุดท้ายซึ่งก็คือการใช้“ A” เพื่อมีองค์ประกอบที่คุณต้องการทริกเกอร์หน้าต่างป๊อปอัพ เหตุการณ์การคลิกดั้งเดิมจะกลับไปที่ URL ป๊อปอัพ สอดคล้องกับประโยคนี้: คัดลอกรหัสดังต่อไปนี้: returnData = F.Apply (สิ่งนี้, อาร์กิวเมนต์);
2). จากนั้นเราจะพูดคุยเกี่ยวกับกลยุทธ์การบล็อกป๊อปอัพ ฉันจะไม่พูดถึงเรื่องเฉพาะ อย่างไรก็ตามกลยุทธ์จะไม่สกัดกั้น "A" เอง
3). ในที่สุดมันก็ถูกสังเคราะห์ หลังจากใช้ A เพื่อรวมไว้เนื่องจากเหตุการณ์จะเกิดฟองให้ใช้การคลิกปกติเพื่อสร้างที่อยู่ลิงก์แบบไดนามิกไปยัง A ทำให้เกิดเหตุการณ์การคลิกดั้งเดิมของ A และจากนั้นจะเสร็จสมบูรณ์
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม JavaScript ของทุกคน