javascript - js中close方法有疑问,已附上在线执行代码地址
PHP中文网
PHP中文网 2017-04-11 12:10:32
[JavaScript讨论组]

贴简化版代码,为什么我可以show()打开窗口,但close无法关闭窗口,close方法根本没执行
但是如果把:

关闭窗口
换成
关闭窗口
就又可以了,为什么

附上在线代码:http://codepen.io/karlw/pen/R...





    
    Document
    


        打开窗口
    

关闭窗口

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
天蓬老师

我试了一下,确实不能执行。但是我发现你把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`,所以问题就清楚了。


PHP中文网

你的#windows窗口呢!弹出来的标签呢!一般弹出来的属于未来元素,无法绑定到页面初始化到事件。你需要把关闭事件放在和弹出窗口同级内。你可以试试看

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号