Relacionamento de domínio da página :
A página principal a.html pertence ao domínio A: www.taobao.com
A página iframed b.html pertence ao domínio B: www.alimama.com, assumindo o endereço: http://www.alimama.com/b.html
Efeito de realização :
A página a.html sob o nome de domínio A é incorporada à página b.html sob o nome de domínio B por meio de um iframe. Como a largura e a altura de b.html são imprevisíveis e podem mudar, o iframe em a.html precisa ser alterado. ser dimensionado de forma adaptativa.
Natureza do problema:
js tem um problema com o acesso a iframe entre domínios, porque para controlar a altura e a largura do iframe em a.html, você deve primeiro ler o tamanho de b.html que não pertence ao mesmo domínio. Por razões de segurança, o navegador torna o acesso entre domínios js limitado e a altura e largura de b.html não podem ser lidas.
Solução:
Apresentando as páginas proxy c.html e a.html pertencem ao mesmo domínio A. c.html é uma boa página proxy intermediária fornecida no domínio A. Suponha que o endereço de c.html seja: www.taobao.com/c.html , que é responsável por ler Obtenha os valores de largura e altura em location.hash e, em seguida, defina a largura e a altura do iframe em a.html no mesmo domínio que ele.
O código é o seguinte:
código a.html
Primeiro, b.html é introduzido por meio de iframe em a.html
<iframe id=”b_iframe” height=”0″ width=”0″ src=”http://www.alimama.com/b.html” frameborder=”no” border=”0px” marginwidth=”0″ marginheight =”0″ rolagem=”não” permitirtransparência=”sim” ></iframe>
código b.html
<script type="texto/javascript">
var b_width = Math.max(document.documentElement.clientWidth,document.body.clientWidth);
var b_height = Math.max(document.documentElement.clientHeight,document.body.clientHeight);
var c_iframe = document.getElementById("c_iframe");
c_iframe.src = c_iframe.src+”#”+b_width+”|”+b_height;
}
</script>
<!–js lê a largura e a altura de b.html e define a largura e a altura de leitura no hash do src da página proxy intermediária c.html no mesmo domínio que a.html–>
<iframe id=”c_iframe” height=”0″ width=”0″ src=”http://www.taobao.com/c.html” style=”display:none” </iframe>
código c.html
<script type="texto/javascript">
var b_iframe = parent.parent.document.getElementById("b_iframe");
var hash_url = janela.localização.hash;
var hash_width = hash_url.split("#")[1].split("|")[0]+"px";
var hash_height = hash_url.split(”#”)[1].split(”|”)[1]+”px”;
b_iframe.style.width = hash_width;
b_iframe.style.height = hash_height;
</script>
O iframe em a.html pode ser adaptado à largura e altura de b.html.
Outros problemas semelhantes de operação entre domínios js também podem ser resolvidos de acordo com esta ideia.
Texto original: http://ued.alimama.com/?p=197