Die Domain A.HTML gehört zur Hauptseite A: www.taobao.com
Die Domain B, zu der die iframed Seite b.html gehört: www.alimama.com, Annahme von Adresse: http://www.alimama.com/b.html
Den Effekt erkennen :Die Seite unter dem A -Domänennamen A.HTML ist in der Seite b.html unter dem B -Domain -Namen B durch einen Iframe eingebettet. Da die Breite und Höhe von B.html unvorhersehbar sind und sich ändern wird, ist die adaptive Größe des Iframe in A.HTML erforderlich.
Die Art des Problems:Das Problem des Cross-Domain-Iframe-Zugriffs von JS, da Sie die Höhe und Breite des Iframe in A.HTML steuern müssen, müssen Sie zunächst die Größe von B.html lesen. A und B gehören nicht zur gleichen Domäne. Aus Sicherheitsgründen schränkt der Browser den Cross-Domain-Zugang zu JS ein und kann die Höhe und Breite von B.html nicht lesen.
Lösung:Die Proxy -Proxy -Seite C.HTML gehört zur gleichen Domäne A und A.HTML. C.HTML ist eine mittlere Proxy -Seite, die unter der A -Domäne a bereitgestellt wird. Angenommen, die Adresse von C.HTML lautet: www.taobao.com/c.html, die für das Lesen der Breite und der Höhenwerte an Ort und Stelle verantwortlich ist und dann die Breite und Höhe des Iframe in a.html unter derselben Domäne wie sie festlegen.
Der Code ist wie folgt:A.html Code
Erstens wurde B.html durch Iframe in A.HTML eingeführt
<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 duldTranssparency = yo> </iframe>
B.html Code
<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 liest die Breite und Höhe von B.html und setzt die Breite und Höhe des Lesens auf die mittlere Proxy-Seite von C.HTML in derselben Domäne und setzt die Breite und Höhe des Lesevorgangs auf den Hash des SRC von C.HTML- >- >->
<iframe id = c_iframe height = 0 'width = 0' src = http: //www.taobao.com/c.html style = display: Keine> </iframe>
C.HTML -Code
<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>
Der Iframe in A.HTML kann sich an die Breite und Höhe von B.html anpassen.
Andere Cross-Domänen-Betriebsprobleme, die JS ähnlich sind, können nach dieser Idee ebenfalls gelöst werden