扫码关注官方订阅号
贴简化版代码,为什么我可以show()打开窗口,但close无法关闭窗口,close方法根本没执行但是如果把:
关闭窗口 换成 关闭窗口 就又可以了,为什么
附上在线代码:http://codepen.io/karlw/pen/R...
Document 打开窗口 关闭窗口
关闭窗口
认证高级PHP讲师
我试了一下,确实不能执行。但是我发现你把close函数名称改变一下就可以正常执行了。
<a href="##" onclick="show()">打开窗口</a> <a href="##" onclick="doclose()">关闭窗口</a> var doclose = function(){ $('#windows').hide(); }; 原因猜测一下就知道了,肯定是`close`方法是已经存在的方法,并没有执行你重写的`close`方法。而`show`方法并不存在,所以调用了你的`show`方法。 首先我猜测是不是`window.close`是无法重写的,所以我查了一下: Object.getOwnPropertyDescriptor(window,'close') Object {writable: true, enumerable: true, configurable: true} 发现`window.close`的`writable`是`true`,可以复写。 后来我发现`document.close`方法也是存在的,我猜测可能是以`<a href="##" onclick="doclose()">关闭窗口</a>`形式绑定的事件,查找顺序是`document->window`,所以问题就清楚了。
你的#windows窗口呢!弹出来的标签呢!一般弹出来的属于未来元素,无法绑定到页面初始化到事件。你需要把关闭事件放在和弹出窗口同级内。你可以试试看
#windows
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我试了一下,确实不能执行。但是我发现你把close函数名称改变一下就可以正常执行了。
你的
#windows窗口呢!弹出来的标签呢!一般弹出来的属于未来元素,无法绑定到页面初始化到事件。你需要把关闭事件放在和弹出窗口同级内。你可以试试看