本文详解JavaScript中window.opener对象的作用,即子窗口如何引用并操作父窗口。通过具体代码示例展示如何获取父页面元素值,并分析调用前需进行null判断以避免报错。同时涵盖支付成功后关闭子窗口并刷新父页面的典型应用场景,确保跨窗口交互的稳定性。
window.opener的基本概念与空值检查
在JavaScript中,window.opener属性仅作为弹出窗口对其父窗口(即调用open方法的窗口)的引用。例如,当在a.html中通过按钮点击等方式使用window.open打开b.html时,b.html即可通过window.opener(可简写为opener)来访问a.html,包括其document等对象,从而操作a.html的内容。如果该引用失败,opener将返回null。因此,在调用opener相关对象前,必须判断其是否为null,否则可能引发“对象为空或不存在”的JavaScript错误。
示例代码:
<html>
<body>
<form name=form1>
<input type=text name=inpu >
<input type=button onclick="javascript:window.open('back2opener.html?toname=opener.form1.inpu');">
</form>
</body>
</html>back2opener.html
通过opener操作父页面元素的示例
示例代码:
<html>
<body>
<form name=form1>
<input type=text name=inpu >
<a class=under href=# onclick="{opener.document.form1.inpu.value+='孙超,';}">添加</a>
</form>
</body>
</html>JS代码:
支付成功后关闭子窗口并刷新父页面
window.open();
而在支付成功后,通常需要关闭支付平台的成功界面,并在客户端加载支付成功页面。对应的JavaScript代码如下:
window.opener.location.href=url;window.close();