Tôi thực sự đã viết mã này.
Khi cố gắng thực hiện sao chép tên miền phụ/cổng chéo, khung nội tuyến cần phải có cùng giá trị document.domain
làm khung chính. Thật không may, trình duyệt lưu trữ tên miền VÀ cổng nội bộ cho giá trị document.domain
gốc. Nhưng getter và setter trong javascript không biết gì về cổng. Vì vậy, vấn đề là: nếu khung trên cùng document.domain
là ('example.com', 80)
và khung dưới cùng là ('comet.example.com', 80)
, làm thế nào để bạn có được khung dưới cùng là ('example.com', 80)
?
Bạn không thể, vì việc thay đổi phần tên máy chủ 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à đặt document.domain=document.domain
sẽ 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)
thành ('example.com', null)
và sau đó mọi thứ phù hợp với công việc liên lạc qua khung/cổng phụ/miền phụ.
Nguồn
2009-10-06 12:30:56
+1 cho câu đầu tiên :) –
Giải pháp này không may là không hiệu quả đối với tôi (xem http://stackoverflow.com/questions/7796767/is-it-possible-to-alter-one-frame-from-another- sử dụng-javascript để biết chi tiết). Việc thêm 'document.domain = document.domain' vào tất cả các khung không thay đổi hành vi của Chrome. Bất kỳ ý tưởng? –
Ngoài ra, tôi đã tìm ra rằng nếu tôi đặt độ trễ cho js của mình, ít nhất tôi cũng có được URL hợp lệ cho cả hai khung hình. Tuy nhiên, một khung không thể truy cập vào khung kia. –