萨吕。 我用Firefox证明了IE。
如果从按钮调用paginaH1.html(函数openSon)(window.opener不起作用)。
如果你从输入类型=按钮工作调用。
如果单击按钮不起作用(a0-ObjectWindow,a1-Undefined)。
如果单击input type ='button'work(a0-ObjectWindow,a1-ObjectHTMLElement)。
这是页面开启者:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>prueba-Father</title>
<script type="text/javascript">
function openSon() {
window.datoPField = document.frmName.campoPadre;
alert(window.datoPField+' ahora abro hijo');
a=window.open('paginaH1.html');
}
</script>
</head>
<body>
<form name="frmName">
<h1 id="text">Comunicacion entre dos paginas con Javascript.</h1>
<input type="text" name="campoPadre" id="campoPadre" value="delPadre" >
<input type="button" onClick="openSon()" value="input-button">
<button onClick="openSon()">button</button>
<button onClick="window.datoPField = document.getElementById('campoPadre'); a=window.open('paginaH1.html');">bt+getElement</button>
</form>
</body>
</html>
现在pagninaH1.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Son page</title>
<script type="text/javascript">
function iniciar() {
alert(0);
alert("a0-"+window.opener);
alert("a1-"+window.opener.datoPField);
alert("b0-"+window.opener.frmName.campoPadre);
alert("c0-"+window.opener.datoPField.value);
this.datoField = opener.datoPField;
alert("d0-"+this.datoField);
}
</script>
</head>
<body ONLOAD="iniciar()">
<h1 id="text">esta es la pagina hijo </h1>
<button onclick="this.window.close();">Cerrar</button>
</body>
</html>
感谢。
答案 0 :(得分:1)
button
元素default type
为submit
。也就是说,<button>x</button>
与<button type="submit">x</button>
完全相同。如果button
中有form
(您执行此操作),则单击该表单后会运行其单击处理程序。没有form
的{{1}}元素默认提交到页面的URL,这会破坏当前页面并用新副本替换它(很容易错过)。
因此,当您单击action
时,它会运行其单击处理程序,启动打开弹出窗口的过程,并且不执行任何其他操作。原始窗口,文档和开启者页面的元素仍然存在。子窗口可以访问这些元素。
但是当您单击input
时,它会运行其单击处理程序,启动打开弹出窗口的过程,然后提交表单,销毁窗口,文档和元素。子窗口无法访问元素,它们不再存在。 (相反, new 元素存在,但孩子无法访问它们。)
如果您希望button
的行为与button
的行为相同,请为其添加input
。 (是的,说type="button"
确实看起来很荒谬。:-))