Tôi thực sự đã viết mã này.
Khi cố gắng thực hiện tên miền phụ / cổng sao chổi chéo, iframe cần có cùng document.domain
giá trị với khung mẹ. Thật không may, trình duyệt lưu trữ tên miền VÀ cổng nội bộ cho document.domain
giá trị ban đầu . Nhưng getter và setter trong javascript không biết gì về cổng. Vì vậy, vấn đề là thế này: nếu khung trên document.domain
là ('example.com', 80)
, và khung chốt là ('comet.example.com', 80)
, làm thế nào để bạn có được khung phía dưới được ('example.com', 80)
không?
Bạn không thể, vì việc thay đổi phần tên máy chủ nhất thiết sẽ khiến cổng được đặt thành null
, vì vậy tốt nhất bạn có thể làm là ('example.com', null)
ở khung dưới cùng. Vì vậy, khung trên cùng cũng cần được đặt thành giá trị đó và cài đặt document.domain=document.domain
chỉ thực hiện điều đó. Nó thay đổi biểu diễn nội bộ trong trình duyệt từ ('example.com', 80)
đến ('example.com', null)
và sau đó mọi thứ khớp với nhau và giao tiếp khung chéo cổng / miền phụ hoạt động.