Na verdade, escrevi este código.
Ao tentar fazer cross-subdomain / port cometa, o iframe precisa ter o mesmo document.domain
valor que o quadro pai. Infelizmente, o navegador armazena o nome de domínio E a porta internamente para o document.domain
valor original . Mas o getter e o setter em javascript não sabem nada sobre a porta. Portanto, o problema é este: se o quadro superior document.domain
é ('example.com', 80)
, e o quadro inferior é ('comet.example.com', 80)
, como você faz com que o quadro inferior ('example.com', 80)
também seja?
Você não pode, pois alterar a parte do nome do host necessariamente fará com que a porta seja configurada como null
, portanto, o melhor que você pode fazer é ('example.com', null)
no quadro inferior. Portanto, o quadro superior também precisa ser definido com esse valor, e a configuração document.domain=document.domain
faz exatamente isso. Ele muda a representação interna no navegador de ('example.com', 80)
para ('example.com', null)
e, em seguida, tudo coincide e a comunicação de quadro de porta cruzada / subdomínio funciona.