目前的解决方案, 因为我的技术也不够真的去看底层,所以说在我的研究上在工程里打了一个补丁。 经过多次测试发现,
document.querySelector('meta[name=viewport]').content = 'width=897,user-scalable=no,initial-scale=1, minimum-scale=1,maximum-scale=1,viewport-fit=cover'
width = 897的时候 是超过了 iponex max 设备的width 一个像素点 , 然后我就可以点击顶部弹出地址栏了。 这样就达到了我们的要求。 我们在地址栏出现的时候, 右侧会有一个小窗口提示用户可以滑动全屏,并且屏幕会整体下移,让顶部的按钮可以点击。 但是有一个缺陷是,在这个小窗口里, 可以左右滑动,甚至缩放, 很奇怪这个时候,我限制缩放的代码无效了。
另外这个bug只出现在iponex系列上面, x 和xr 和x mas 的 width 应该是不同的, 所以 897这个值应该也不同, 经过我无脑的测试, 896应该是 x max 的width, 因为 896就不可以点出地址栏, 滑动也无效, 897就可以点出来。
解决了这个坑, 不知道对大家有没有帮助, 反正我是无语了。 感觉别人都不会遇到这个bug,就我们遇到了。
解决方案的代码是,在原有的监听手机翻转的代码里, 加入我的 iponex 适配代码
function iponeXFit(){
if (isIphoneX) {
if(window.orientation == 90 || window.orientation == -90){
document.querySelector('meta[name=viewport]').content = 'width=897,user-scalable=no,initial-scale=1, minimum-scale=1,maximum-scale=1,viewport-fit=cover'
}
else if(window.orientation == 0 || window.orientation == 180){
document.querySelector('meta[name=viewport]').content = 'width=device-width,user-scalable=no,initial-scale=1, minimum-scale=1,maximum-scale=1,viewport-fit=cover'
}
else
{
document.querySelector('meta[name=viewport]').content = 'width=device-width,user-scalable=no,initial-scale=1, minimum-scale=1,maximum-scale=1,viewport-fit=cover'
}
console.log('我是iponex')
}
}