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