父窗体 test5.html <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>操作窗体</title></head><script>var subwin=window.open("face.html","face","top=100,left=100,width=400,height=400");alert(subwin.document)function show(obj){ subwin.document.title="wwww" subwin.document.bgColor=obj.value; } function subw(){ if(!subwin.closed){ subwin.close(); } }</script><body onUnload="subw()"><input type="button" onclick="show(this)" value="red" ><br/><input type="button" onclick="show(this)" value="blue" ><br/><input type="button" onclick="show(this)" value="black" ><br/><input type="button"onclick="show(this)" value="yellow" ><br/></body></html>子窗体 face.html <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>face</title></head><body><script>function show(p){ opener.document.bgColor=p.value; }</script><input type="button" onclick="show(this)" value="red" ><br/><input type="button" onclick="show(this)" value="blue" ><br/><input type="button" onclick="show(this)" value="black" ><br/><input type="button"onclick="show(this)" value="yellow" ><br/></body></html>
恩,lz,我特意运行了你的代码。这是因为Chrome为了安全起见对window.open打开页面的脚本访问做了安全限制,如果window.open打开的子页面与它的父页面(即打开它的那个页面)不在同一个域,则子页面不能访问它的父页面的元素以及脚本,这就是所谓的同源策略了。由于lz你是直接打开文件访问页面而不是输入网址访问页面,所以Chrome把它们当做不同域的两个页面了,所以子页面window.opener.document值为undefined,lz可以在Chrome浏览器中alert一下看看是否如此。建议楼主将这两个页面部署到你的本地服务器上,比如本地的tomcat服务器上,通过网址范围,而不是直接打开,就可以成功了。我是在你的代码基础上做了一些修改,仅供参考,楼主的代码是没有太大问题。父页面:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>操作窗体</title><script> var subwin = window.open("face.html","face","top=100,left=100,width=400,height=400"); function show(obj){ subwin.document.title = "wwww"; subwin.document.body.style.backgroundColor = obj.value; } function subw(){ if(!subwin.closed){subwin.close();} }</script></head><body onUnload="subw()"> <input type="button" onclick="show(this)" value="red" ><br/> <input type="button" onclick="show(this)" value="blue" ><br/> <input type="button" onclick="show(this)" value="black" ><br/> <input type="button"onclick="show(this)" value="yellow" ><br/></body></html>子页面:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>face</title> <script> function show(p){ console.log(window.opener); window.opener.document.body.style.backgroundColor = p.value; } </script></head><body><input type="button" onclick="show(this)" value="red" ><br/><input type="button" onclick="show(this)" value="blue" ><br/><input type="button" onclick="show(this)" value="black" ><br/><input type="button" onclick="show(this)" value="yellow" ><br/></body></html>