ฉันเขียนโค้ดนี้จริงๆ
เมื่อพยายามทำ 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)
และจากนั้นทุกอย่างตรงกันและการสื่อสารข้ามพอร์ต / โดเมนย่อยทำงานได้