¿Cómo obtener la altura de la página llamada en un iframe HTML y usarla como altura de este iframe?
Usar JavaScript para controlar la altura de los elementos del iframe es la clave para la adaptabilidad de la altura del iframe. Al mismo tiempo, JavaScript controla los permisos bajo diferentes nombres de dominio, lo que resulta en dos situaciones: el mismo dominio y entre dominios.
Dado que el cliente js utiliza la política de seguridad del mismo origen del navegador, en situaciones entre dominios, si la página anidada desea obtener y modificar los atributos DOM de la página principal, tendrá permisos insuficientes. y se mostrará un error: Permiso denegado para acceder a la propiedad 'documento'. Esto se debe a que la política del mismo origen prohíbe que los scripts del cliente se vinculen con cualquier otro host o accedan a datos en cualquier otro host que no sea el host donde se carga el documento que contiene el script. Esto significa que el código JavaScript que accede a un servicio web normalmente sólo es útil si también reside en el mismo servidor que el propio servicio web.
Entonces, en una situación entre dominios, el problema que encontramos es: la ventana principal no puede obtener la altura de la página anidada y la página anidada no puede modificar la ventana principal a través de las propiedades js que residen en su servidor. del nodo Dom de la ventana. Entonces necesitamos un medio para obtener la altura de la página anidada y al mismo tiempo modificar la altura del nodo iframe en la interfaz principal.
Idea: la interfaz principal existente está en el dominio a, la página anidada B está en el dominio b y la página anidada B está anidada en una página intermedia A en el dominio a. Cuando el usuario abre el navegador para acceder a mail.html, se carga B, se activa el evento de carga de B para obtener su propia altura, luego B carga A y asigna el valor de altura como parámetro al objeto de ubicación de A. De esta forma, A puede obtener la altura de B a través de location.hash. (La ubicación es un objeto integrado en JavaScript que administra la barra de direcciones. Por ejemplo, ubicación.href administra la URL de la página. Usando ubicación.href = url, puede redirigir directamente la página a la URL. Y ubicación.hash se puede utilizar para obtener o establecer el valor de la etiqueta de la página.
Por ejemplo, /B.html" width="100" height="auto" scrolling="no" frameborder="0"gt;lt;/iframegt;
página anidada iframe: B.html< / p>
lt;iframe id="iframeA" nombre="iframeA" src="" ancho="0" altura="0" estilo="display: none;" gt;lt;/iframegt;?< / p>
lt;script type="text/javascript"gt;
función sethash(){
hashH = document.documentElement.scrollHeight //Obtener el suyo propio; height
urlC = "www.a.com/A.html"; //Establece el src de iframeA
document.getElementByIdx_x_x_x("iframeA").src=urlC "#" hashH ; //Pasar altura como parámetro
}
window.onload=sethash;
lt;/scriptgt;
Página intermedia: A.html
lt;scriptgt;
función pseth() {
var iObj = parent.parent.document.getElementByIdx_x_x_x('iframeB');/ /A está en el mismo dominio que main, por lo que puedes acceder al nodo
iObjH = parent.parent.frames["iframeB"].frames["iframeA"].location.hash //Access; su propio objeto de ubicación para obtener el valor hash
iObj.style.height = iObjH.split("#")[1] "px" //Operación dom
} p>
pseth ();
lt;/scriptgt;
No hace falta decir que en el caso del mismo dominio, obtenga directamente su propia altura en la página anidada B y operar su ventana principal El atributo dom de main es suficiente
.