不久前有客户反馈说iframe嵌我们移动端的页面(这个页面做了一些额外的授权),点击输入框的时候页面总会刷新,查了好久都不知道为什么,网上也找不到资料,后面把focus的回调方法注释掉就可以了,猜测是输入框的定位导致的。因为在ios下,浏览器底部输入框有会被输入法挡住的问题,所以做了些定位处理。但是如果单纯的嵌我们的页面,就是不做授权处理, 又是没问题的,后面查了很久还是没找到问题所在,网上也查不到资料,所以就只能先对该客户做了特殊的处理。前几天又有个客户反馈了一样的问题,我转念一想,算了,反正这个定位处理也解决不了ios11下浏览器底部输入框被输入法挡住的问题(只能解决ios10,坑爹),大家迟早会都会升级到ios11,所以就干脆做了一个处理:只要是iframe嵌我们页面的,都不做这个定位处理。
有点遗憾没有找到问题所在,可能是授权的锅。但还是记录下吧。
附上判断页面是否被iframe嵌套的方法:
window.self !== window.top true为被嵌套
好像网上还有其他方法,就不一一列举了。