网页踩坑记录,为你解析常见问题
2023-11-07 13:26:08
Webview踩坑记录
Webview是一个将网页嵌入到移动应用中的组件,允许用户在应用中浏览网页。Webview的使用非常广泛,许多移动应用都会用到它,比如新闻应用、社交媒体应用、游戏应用等。
在Webview的开发过程中,我遇到了一些坑,现在分享给大家,希望能够帮助大家避免这些问题。
1. Webview在Safari 11中显示为未旋转
这个问题是在iOS 11中遇到的,在Safari 11中,Webview中的内容不会随着设备旋转而旋转。这是因为Safari 11对Webview的默认设置是fixed,这意味着Webview的内容不会随着设备旋转而旋转。
要解决这个问题,需要在Webview的父元素上设置flex:1,并在子元素上设置height:100%。这样,Webview的内容就会随着设备旋转而旋转。
2. 父元素flex:1,子元素设置height:100%无效
这个问题是在Android中遇到的,在Android中,如果Webview的父元素设置了flex:1,而子元素设置了height:100%,那么子元素的高度不会被拉伸。
要解决这个问题,需要在Webview的父元素上设置display:flex;flex-direction:column;,然后在子元素上再设置一遍flex:1。这样,子元素的高度就会被拉伸。
3. 需要在键盘收起的blur事件中,使用window.scrollTo(0, 0)来恢复页面滚动位置
这个问题是在iOS和Android中都会遇到的,当键盘弹出时,Webview的内容会被键盘遮挡,当键盘收起时,Webview的内容不会自动恢复到原来的位置。
要解决这个问题,需要在键盘收起的blur事件中,使用window.scrollTo(0, 0)来恢复页面滚动位置。这样,Webview的内容就会恢复到原来的位置。
4. Webview中无法使用JavaScript打开新窗口
这个问题是在iOS和Android中都会遇到的,在Webview中,如果使用JavaScript打开新窗口,那么新窗口不会被打开。
要解决这个问题,需要在Webview中设置allowFileAccessFromFilesAllowedForURLs和allowUniversalAccessFromFileURLs属性。这样,Webview就可以使用JavaScript打开新窗口了。
5. Webview中无法加载本地文件
这个问题是在iOS和Android中都会遇到的,在Webview中,如果尝试加载本地文件,那么文件不会被加载。
要解决这个问题,需要在Webview中设置allowFileAccessFromFileURLs属性。这样,Webview就可以加载本地文件了。