คำถามติดแท็ก broadcast-channel

10
การสื่อสารระหว่างแท็บหรือหน้าต่าง
ฉันค้นหาวิธีการสื่อสารระหว่างหลายแท็บหรือหลายหน้าต่างในเบราว์เซอร์ (ในโดเมนเดียวกันไม่ใช่ CORS) โดยไม่ทิ้งร่องรอย มีวิธีแก้ปัญหาหลายประการ: ใช้วัตถุหน้าต่าง postMessage คุ้กกี้ localStorage ข้อแรกน่าจะเป็นทางออกที่แย่ที่สุด - คุณต้องเปิดหน้าต่างจากหน้าต่างปัจจุบันของคุณจากนั้นคุณสามารถสื่อสารได้ตราบใดที่คุณเปิดหน้าต่างค้างไว้ หากคุณโหลดหน้านี้ซ้ำในหน้าต่างใด ๆ คุณอาจสูญเสียการสื่อสารได้ วิธีที่สองโดยใช้ postMessage อาจเปิดใช้การสื่อสารข้ามจุดกำเนิด แต่เกิดปัญหาเช่นเดียวกับวิธีแรก คุณต้องบำรุงรักษาวัตถุหน้าต่าง วิธีที่สามใช้คุกกี้เก็บข้อมูลบางอย่างในเบราว์เซอร์ซึ่งดูเหมือนว่าสามารถส่งข้อความไปยัง windows ทั้งหมดในโดเมนเดียวกันได้อย่างมีประสิทธิภาพ แต่ปัญหาคือคุณไม่สามารถรู้ได้เลยว่าแท็บทั้งหมดอ่าน "ข้อความ" แล้วหรือไม่มาก่อน การทำความสะอาด. คุณต้องใช้การหมดเวลาบางประเภทเพื่ออ่านคุกกี้เป็นระยะ นอกจากนี้คุณถูก จำกัด ด้วยความยาวคุกกี้สูงสุดซึ่งก็คือ 4KB วิธีที่สี่โดยใช้ localStorage ดูเหมือนจะเอาชนะข้อ จำกัด ของคุกกี้และสามารถฟังได้โดยใช้เหตุการณ์ วิธีใช้มันถูกอธิบายไว้ในคำตอบที่ยอมรับแล้ว แก้ไข 2018: คำตอบที่ได้รับการยอมรับยังคงใช้ได้ แต่มีวิธีแก้ปัญหาที่ใหม่กว่าสำหรับเบราว์เซอร์สมัยใหม่เพื่อใช้ BroadcastChannel ดูคำตอบอื่น ๆ สำหรับตัวอย่างง่ายๆที่อธิบายวิธีการส่งข้อความระหว่างแท็บโดยง่ายโดยใช้ BroadcastChannel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.