Я действительно написал этот код.
При попытке выполнить комету между субдоменами и портами, iframe должен иметь то же document.domainзначение, что и родительский фрейм. К сожалению, браузер сохраняет внутреннее имя домена и порт для исходного document.domainзначения. Но геттер и сеттер в 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)а затем все совпадает, и кросс-портовая / субдоменная связь работает.