这个javascript程序在ie里就可以改变颜色,但在谷歌浏览器就不行了,怎么解决啊?

父窗体 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>
最新回答
菇凉我万分华丽

2024-09-08 03:12:29

恩,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>
敲击岁月

2024-09-08 04:52:18

。。。多明显不行啊 就不是一个内核。去找个谷歌浏览器专用的吧