J'ai en fait écrit ce code.
Lorsque vous essayez de faire une comète inter-sous-domaine / port, l'iframe doit avoir la même document.domain
valeur que la trame parent. Malheureusement, le navigateur stocke le nom de domaine ET le port en interne pour la document.domain
valeur d' origine . Mais le getter et le setter en javascript ne savent rien du port. Le problème est donc le suivant: si le cadre supérieur document.domain
est ('example.com', 80)
, et le cadre inférieur ('comet.example.com', 80)
, comment obtenez-vous également le cadre inférieur ('example.com', 80)
?
Vous ne pouvez pas, car la modification de la partie du nom d'hôte entraînera nécessairement la définition du port null
, donc le mieux que vous puissiez faire est ('example.com', null)
dans le cadre inférieur. Ainsi, le cadre supérieur doit également être défini sur cette valeur, et le paramètre document.domain=document.domain
fait exactement cela. Il modifie la représentation interne dans le navigateur de ('example.com', 80)
à ('example.com', null)
, puis tout correspond et la communication de trame entre ports / sous-domaines fonctionne.