In realtà ho scritto questo codice.
Quando si tenta di eseguire la cometa cross-sottodomain / port, l'iframe deve avere lo stesso document.domainvalore del frame principale. Sfortunatamente, il browser memorizza internamente il nome di dominio E la porta per il document.domainvalore originale . Ma il getter e il setter in javascript non sanno nulla della porta. Quindi il problema è questo: se lo document.domainè il frame superiore ('example.com', 80)e lo è il frame inferiore ('comet.example.com', 80), come si fa a fare in modo che sia anche il frame inferiore ('example.com', 80)?
Non è possibile, poiché la modifica della parte del nome host causerà necessariamente l'impostazione della porta null, quindi il meglio che puoi fare è ('example.com', null)nel frame inferiore. Quindi anche il frame superiore deve essere impostato su quel valore e l'impostazione document.domain=document.domainfa proprio questo. Cambia la rappresentazione interna nel browser da ('example.com', 80)a, ('example.com', null)quindi tutto corrisponde e la comunicazione del frame cross-port / sottodominio funziona.