window.opener difrents按钮和输入类型=按钮

时间:2016-10-11 06:45:05

标签: javascript window.opener

萨吕。 我用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>

感谢。

1 个答案:

答案 0 :(得分:1)

button元素default typesubmit。也就是说,<button>x</button><button type="submit">x</button>完全相同。如果button中有form(您执行此操作),则单击该表单后会运行其单击处理程序。没有form的{​​{1}}元素默认提交到页面的URL,这会破坏当前页面并用新副本替换它(很容易错过)。

因此,当您单击action时,它会运行其单击处理程序,启动打开弹出窗口的过程,并且不执行任何其他操作。原始窗口,文档和开启者页面的元素仍然存在。子窗口可以访问这些元素。

但是当您单击input时,它会运行其单击处理程序,启动打开弹出窗口的过程,然后提交表单,销毁窗口,文档和元素。子窗口无法访问元素,它们不再存在。 (相反, new 元素存在,但孩子无法访问它们。)

如果您希望button的行为与button的行为相同,请为其添加input。 (是的,说type="button" 确实看起来很荒谬。:-))