ฉันเขียนโค้ดนี้จริงๆ
เมื่อพยายามทำ cross-subdomain / port comet iframe จะต้องมีdocument.domainค่าเดียวกับเฟรมหลัก น่าเสียดายที่เบราว์เซอร์เก็บชื่อโดเมนและพอร์ตไว้ภายในสำหรับdocument.domainค่าดั้งเดิม แต่ getter และ setter ใน javascript ไม่รู้อะไรเกี่ยวกับพอร์ต ปัญหาก็คือถ้ากรอบด้านบนdocument.domainเป็น('example.com', 80)และกรอบล่างเป็น('comet.example.com', 80)อย่างไรคุณจะทำให้กรอบด้านล่าง('example.com', 80)เป็นอย่างไร?
คุณไม่สามารถทำได้เนื่องจากการเปลี่ยนส่วนชื่อโฮสต์จำเป็นต้องทำให้พอร์ตถูกตั้งค่าเป็นnullดังนั้นสิ่งที่ดีที่สุดที่คุณสามารถทำได้คือ('example.com', null)ในกรอบด้านล่าง ดังนั้นกรอบด้านบนจึงต้องตั้งค่าเป็นค่านั้นด้วยและการตั้งค่าdocument.domain=document.domainก็ทำได้เช่นนั้น มันเปลี่ยนการแสดงภายในเบราว์เซอร์จาก('example.com', 80)เป็น('example.com', null)และจากนั้นทุกอย่างตรงกันและการสื่อสารข้ามพอร์ต / โดเมนย่อยทำงานได้