Relation de domaine de page :
La page principale a.html appartient au domaine A : www.taobao.com
La page iframée b.html appartient au domaine B : www.alimama.com, en supposant l'adresse : http://www.alimama.com/b.html
Effet de réalisation :
La page a.html sous le nom de domaine A est intégrée dans la page b.html sous le nom de domaine B via une iframe. Puisque la largeur et la hauteur de b.html sont imprévisibles et peuvent changer, l'iframe dans a.html doit le faire. être dimensionné de manière adaptative.
Nature du problème :
js a un problème avec l'accès iframe inter-domaines, car pour contrôler la hauteur et la largeur de l'iframe dans a.html, vous devez d'abord lire la taille de b.html A et B n'appartiennent pas au même domaine. Pour des raisons de sécurité, le navigateur rend js L'accès inter-domaines est limité et la hauteur et la largeur de b.html ne peuvent pas être lues.
Solution:
Présentation des pages proxy c.html et a.html appartiennent au même domaine A. c.html est une bonne page proxy intermédiaire fournie sous le domaine A. Supposons que l'adresse de c.html soit : www.taobao.com/c.html , qui est responsable de la lecture Obtenez les valeurs de largeur et de hauteur dans location.hash, puis définissez la largeur et la hauteur de l'iframe dans a.html dans le même domaine que celui-ci.
Le code est le suivant :
un code .html
Tout d'abord, b.html est introduit via iframe dans 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″ scrolling=”non” allowtransparency=”oui” ></iframe>
code b.html
<script type="text/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; //http://www.taobao.com/c.html#width|height”
}
</script>
<!–js lit la largeur et la hauteur de b.html et définit la largeur et la hauteur de lecture dans le hachage du src de la page proxy intermédiaire c.html dans le même domaine que a.html–>
<iframe id=”c_iframe” height=”0″ width=”0″ src=”http://www.taobao.com/c.html” style=”display:none” ></iframe>
code c.html
<script type="text/javascript">
var b_iframe = parent.parent.document.getElementById("b_iframe");
var hash_url = window.location.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>
L'iframe dans a.html peut être adaptée à la largeur et à la hauteur de b.html.
D'autres problèmes de fonctionnement inter-domaines js similaires peuvent également être résolus selon cette idée.
Texte original : http://ued.alimama.com/?p=197