Właściwie napisałem ten kod.
Podczas próby wykonania komety cross-subdomain / port, iframe musi mieć taką samą document.domainwartość jak ramka nadrzędna. Niestety, przeglądarka przechowuje wewnętrznie nazwę domeny ORAZ port dla oryginalnej document.domainwartości. Ale getter i setter w javascript nie wiedzą nic o porcie. A więc problem jest taki: jeśli górna rama document.domainjest ('example.com', 80), a dolna - to ('comet.example.com', 80)jak sprawić, by dolna rama była ('example.com', 80)również?
Nie możesz, ponieważ zmiana części nazwy hosta koniecznie spowoduje ustawienie portu null, więc najlepsze, co możesz zrobić, jest ('example.com', null)w dolnej ramce. Zatem górna rama również musi być ustawiona na tę wartość, a ustawienie document.domain=document.domainto właśnie robi. Zmienia wewnętrzną reprezentację w przeglądarce z ('example.com', 80)na, ('example.com', null)a następnie wszystko się zgadza i działa komunikacja między portami / subdomenami.