2016-10-11 106 views
1

Salut。 我已经证明与Firefox的IE浏览器。window.opener不同按钮和输入类型=按钮

如果从按钮调用paginaH1.html(功能openSon)(window.opener无法正常工作)。

如果你从input type = button调用工作。

如果单击按钮不起作用(A0-ObjectWindow,A1-未定义)。

如果单击输入类型= '按钮' 工作(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

default typebutton元件是submit。即,<button>x</button><button type="submit">x</button>完全相同。当你在form(你这样做)中有button时,点击它在运行它的点击处理程序后提交表单。 form没有action的元素默认提交到页面的URL,这会破坏当前页面并用新副本(很容易错过)替换它。

所以,当你点击input,它运行它的点击处理程序,开始打开弹出窗口的过程中,并没有做任何事情。原始窗口,文档和开启者页面的元素仍然存在。子窗口可以访问这些元素。

但是,当您单击button时,它将运行其单击处理程序,启动打开弹出窗口的过程,然后提交窗体,销毁窗口,文档和元素。子窗口不能访问元素,它们不再存在。 (相反,元素存在,但孩子并没有对它们的访问。)

如果你想button有同样的表现方式input确实,加type="button"它。 (是的,说<button type="button" ...>确实看起来很荒谬。:-))

+0

Thansk,非常感谢