Я насправді написав цей код.
При спробі зробити крос-субдомен / порт комети, 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)а потім все збігається, і взаємодія міжпортового / субдоменного кадру працює.