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

Javascript window.opener difrents按钮和输入类型=按钮,javascript,window.opener,Javascript,Window.opener,敬礼。 我已经用Firefox和IE证明了这一点 如果您从按钮(window.opener不工作)调用paginaH1.html(函数openSon) 如果您从输入类型调用=按钮工作 如果单击按钮不工作(a0 ObjectWindow,a1未定义) 如果单击输入类型='button'工作(a0 ObjectWindow,a1 ObjectHtmleElement) 这是翻页程序: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http

敬礼。 我已经用Firefox和IE证明了这一点

如果您从按钮(window.opener不工作)调用paginaH1.html(函数openSon)

如果您从输入类型调用=按钮工作

如果单击按钮不工作(a0 ObjectWindow,a1未定义)

如果单击输入类型='button'工作(a0 ObjectWindow,a1 ObjectHtmleElement)

这是翻页程序:

<!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>

普鲁巴父亲
函数openSon(){
window.datoPField=document.frmName.campadre;
警报(window.datoPField+‘ahora abro hijo’);
a=window.open('paginaH1.html');
}
通信中心的地址是Javascript。
按钮
bt+getElement
现在,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>

子页面
函数iniciar(){
警报(0);
警报(“a0-”+窗口开启器);
警报(“a1-”+窗口.开启器.数据字段);
警报(“b0-”+window.opener.frmName.campadre);
警报(“c0-”+window.opener.datoPField.value);
this.datoField=opener.datoField;
警报(“d0-”+此数据域);
}
帕吉纳之家酒店
塞拉
谢谢

元素的
按钮是
submit
。也就是说,
x
x
完全相同。如果在
表单中有
按钮
(您可以这样做),单击该按钮将在运行其单击处理程序后提交表单<代码>表单
没有
操作的元素
默认提交到页面的URL,该URL会破坏当前页面并替换为新的副本(很容易丢失)

因此,当您单击
输入时,它将运行其单击处理程序,开始打开弹出窗口的过程,而不执行任何其他操作。原始窗口、文档和开场白页面的元素仍然存在。子窗口可以访问这些元素

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

如果希望
按钮
的行为与
输入
相同,请向其添加
type=“button”
。(是的,说
似乎很可笑。:-)

坦斯克,谢谢。看起来确实很可笑,但它起作用了。他还询问了关于处理者的解释