a.html
<nombre del formulario="formulario1" método="publicación" acción="">
<a href="javascript:void(null)" class="add" onClick="open('b.html','','resizable=1,scrollbars=1,status=no,toolbar=no,menu= no,ancho=500,alto=400,izquierda=150,top=50')">Aumentar</a>
<tipo de entrada="texto" nombre="texto1">
</formulario>
b.html
<script idioma="Javascript" tipo="texto/javascript">
función valorretorno()
{
window.opener.document.all.text1.value=document.getElementById("returnText").value;
ventana.cerrar();
}
</script>
<tipo de entrada="botón" nombre="Enviar" valor="Enviar" onclick="returnValue();">
<nombre de entrada="texto de retorno" tipo="texto" id="texto de retorno">
</p>
Suplemento: uso de window.opener
En el uso general, window.opener solo se usa para resolver el problema de no abrir una ventana emergente al cerrar la ventana, y generalmente hay menos comprensión de su comprensión más profunda. De hecho, window.opener se refiere a la ventana que llama al método window.open.
Se utiliza principalmente para resolver envíos parciales en el trabajo. Este tipo de operación entre páginas es muy útil para el trabajo.
Si abre una página en la ventana principal y desea que la ventana principal se actualice, use esto. El window.opener que abre la página es equivalente a la ventana de la ventana principal.
Para actualizar la ventana principal puedes usar
ventana.opener.ubicación.reload();
Si usa un directorio virtual: como struts *.do le pedirá que vuelva a intentarlo, puede cambiarlo a window.opener.yourformname.submit()
Eso estará bien
2〉
Hay una situación en la aplicación,
Abra la ventana B en la ventana A, cierre la ventana B después de completar las operaciones en la ventana B y actualice automáticamente la ventana A al mismo tiempo
función cerrarWin(){
haCerrado = verdadero;
window.opener.location="javascript:reloadPage();";
ventana.cerrar();
}
ventana de función.onbeforeunload(){
si(!haCerrado){
window.opener.location="javascript:reloadPage();";
}
}
</script>
El código anterior generará un error al cerrar la ventana B, diciendo que falta el objeto. El código correcto es el siguiente:
función cerrarWin(){
haCerrado = verdadero;
window.opener.location="javascript:reloadPage();";
ventana.opener=null;
ventana.cerrar();
}
ventana de función.onbeforeunload(){
if(!hasClosed){//Si se ha ejecutado el método closeWin, este método no se ejecutará.
window.opener.location="javascript:reloadPage();";
}
}
</script>
El método reloadPage es el siguiente:
función recargarPágina() {
historia.go(0);
documento.execCommand("actualizar")
documento.ubicación = documento.ubicación;
documento.ubicación.recargar();
}
PD: Dado que necesitamos admitir el cierre normal y el cierre forzado de ventanas para capturar eventos, utilizamos la variable global hasClosed.
=================================================
Además, cuando la ventana principal es un marco, pueden ocurrir problemas al actualizar la ventana principal:
La página no se puede actualizar sin reenviar la información.
Posteriormente modificado de la siguiente manera:
window.opener.parent.document.frames.item('mainFrame').ubicación.href = window.opener.ubicación.href;
No es necesario ejecutar el método reload() incorporado. Tenga cuidado de no agregar esta oración de manera superflua:
window.opener.parent.document.frames.item('mainFrame').ubicación.reload();
==================================================== ========================================
Finalmente, para permitir la actualización de la ventana principal normal y la ventana principal del marco al mismo tiempo, el código es el siguiente:
función cerrarWin() {
haCerrado = verdadero;
<%si(nulo!= marco){%>
window.opener.parent.document.frames.item('mainFrame').ubicación.href = window.opener.ubicación.href;
<%}otro{%>
window.opener.location = "javascript:reloadPage();";
<%}%>
//window.opener.top.mainFrame.location="javascript:reloadPage();";
//self.opener.frames.mainFrame.location.reload(true);
ventana.opener = nulo;
ventana.cerrar();
}
ventana de función.onbeforeunload(){
si (!haCerrado) {
<%si(nulo!= marco){%>
window.opener.parent.document.frames.item('mainFrame').ubicación.href = window.opener.ubicación.href;
<%}otro{%>
window.opener.location = "javascript:reloadPage();";
<%}%>
ventana.opener = nulo;
}
}
Uso de window.opener
window.opener devuelve una referencia a la ventana que creó la ventana actual. Por ejemplo, si hace clic en un enlace en a.htm para abrir b.htm, entonces planeamos ingresar un valor en b.htm y asignarlo a a. htm. En un cuadro de texto con una identificación de "nombre", se puede escribir como:
window.opener.document.getElementById("nombre").value = "Datos de entrada";
No tengo un buen conocimiento de window.opener en javascript.
¿Por qué no se puede usar en un marco? ¿Por qué la ventana principal de una ventana emergente no puede estar en una página dentro del marco? Entonces, ¿cómo operar la ventana principal en el marco a través de una ventana emergente?
opener.parent.frames['frameName'].document.all.input1.value prueba esto :)
Si desea cambiar la página en el marco a otras páginas en el mismo marco o la página en el marco principal, use parent.
window.opener se refiere a la página principal de la página abierta por window.open.
El objeto window.frames puede hacer referencia a páginas en un iframe o a una página en un conjunto de marcos.
Esto se puede hacer
ventana.frames[0].document.getElementById('xx');
Esto se puede hacer
ventana.frames[0].document.body.innerHTML;
frm = ventana.parent.window.frames['uploadFrame'];
frmDocumento = frm.documento;
frm.sb(3); //sb es una función en la página uploadFrame
Para Firefox
Si encuentra un error: parent.document.frames no tiene propiedades
Simplemente reemplácelo con el siguiente código. Este código es compatible con IE y ff.
Tenga en cuenta que existen restricciones para modificar la página en el marco de esta manera, es decir, debe estar bajo el mismo dominio; de lo contrario, no se puede acceder a ella. Si está bajo el mismo dominio, pero los nombres de los subdominios son diferentes, agregue. una oración a los archivos js y html involucrados.
documento.dominio = xxx.com [escriba su nombre de dominio aquí]
document.getElementById('iframeid').contentWindow.document.getElementById('someelementid');
preguntar:
En la ventana principal window.open() una ventana secundaria. y definir una variable i.
Ingrese un valor j en la subventana y luego window.opener.i=j;
Esto se puede transmitir. Pero agregué window.close(); al final de la subventana y no se puede pasar el valor.
Por favor dígame si hay alguna manera de resolver este problema. Déjame pasar el valor antes de cerrar la ventana secundaria.
El código es el siguiente:
Ventana principal: parent.jsp
<guión>
var i;
window.open('<%=contextPath%>/usermanage/newscontrol/cd.jsp);
</script>
<tipo de entrada="botón" onclick="alerta(i)">
Subventana:cd.jsp
<guión>
función subm(){
ventana.opener.i=5;
ventana.cerrar();
}
</script>
<tipo de entrada="botón" onclick="subm()">
La mejor respuesta, puedes poner una en la ventana principal.
<entrada id="fromChild" tipo="oculto" />
<tipo de entrada="botón"
onclick="alert(document.getElementById('fromChild').value)">
En la subventana:
función subm(){
window.opener.document.getElementById('fromChild').value=5;
ventana.cerrar();
}
Esto se puede hacer
<cabeza>
<lenguaje de escritura=javascript>
función cerrar ventana()
{ ventana.opener=null;
ventana.cerrar();
}
</script>
</cabeza>
<cuerpo>
<input id="Botón1" tipo="botón" valor="botón" onclick="ventanacerrar()" />
</cuerpo>
-