在写代码的时候想做一个button关闭弹出层的功能,结果发现在button调用子页面的javascript:close();,再到子页面调用父页面的
function close(){
parent.layer.close(parent.index);
}
方法出现死循环,在通过多次的调整后发现问题还是出现在对layerUi 中的弹出层部分。
layer.close(index)
为了达到父页面打开包含有子页面的弹出层,子页面中的button能关闭子页面所在弹出层,这个功能,放弃使用parent方法来取值和方法。
直接采用Hui中父页面的layer_show()与子页面中layer_close()即可达到要求,从底层来看,也是从已封装好的js方法中调用parent来完成父子页面间的交互。
过程中一个有意思的情况是,老代码中有写了layer_show() js方法,然而在Hui中有个同名的方法,在js中想调用到自己写的layer_show()方法,不论是通过直接的layer_show()还是通过this.layer_show(),所调用的方法实现均是通过Hui框架中的方法。
自己所做出的一个猜想大概是所调用的方法按照js中的加载顺序来调用。
而在parent.layer.close()那部分中,大概是已经忽视了layer部分,因此才会调用到子页面本身的close()方法,造成内存溢出。慎用吧,以后还是尽量用已经封装好的框架还是比较安全一些。