- sidebar: confaq
- Q: 如何判断 H5 页面是否在小程序 web-view 打开?
- Q: 在webview 中使用了 cookie,导致存储信息与小程序不能共享的原因是什么?
- Q: webview 中参入含有中文使用三方自己的约定方式进行编码 iOS 打开后出现白屏的情况该如何处理?
- Q: 如何在web-view中使用拨打电话的功能?
- Q:cover-view可以使用border吗?
- Q:video的原生video控件enable-progress-gesture属性支持动态更新吗?
- Q: scroll-view 的scroll-top。设置是否是无效的?
- Q:使用两个text组件,组件之间有间隙,在不同手机端偶现,影响部分用户体验的问题该如何解决?
- Q:swiper 的面板指示点能自定义样式吗?
- Q:小程序使用 webview,分享出去的链接能直接是 webview 对应的 url 而不是小程序的 url 么?
title: 组件常见问题 header: develop nav: faq
sidebar: confaq
Q: 如何判断 H5 页面是否在小程序 web-view 打开?
A: H5 运行时,通过 window.navigator.userAgent 获取浏览器 userAgent。当 userAgent 字符串中包含小程序标识:‘swan/’时,则说明当前环境为小程序 web-view。
代码示例:
// 在 H5 文件中let UA = window.navigator.userAgent;var regex = /swan\//;console.log( regex.test(UA) );// 若为true,则是在小程序的web-view中打开
Q: 在webview 中使用了 cookie,导致存储信息与小程序不能共享的原因是什么?
A: web-view 网页与小程序之间不支持除 JSSDK 提供的接口之外的通信;
- 小程序中如需设置cookie 建议使用Storage; 参见详情 。
- 如需要共享小程序参数到 webview 页面中, 可在 webview的src中加上链接参数。
Q: webview 中参入含有中文使用三方自己的约定方式进行编码 iOS 打开后出现白屏的情况该如何处理?
A: 避免在链接中带有中文字符,在 iOS 中会有打开白屏的问题,如需要使用中文字体,请对中文字符进行 encodeURIComponent。
Q: 如何在web-view中使用拨打电话的功能?
A:如果想在 web-view 使用 JSSDK 提供的接口能力,需要引入 swanjs 包,如下示例:
图中 “2.0.6.js”版本为举例,开发时请参考swanjs文档中的最新版本好进行填写。
完整的H5示例:
生成的h5站点地址放入小程序web-view的src即可。
代码示例
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>call phone</title><script src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.6.js"></script></head><body><button onclick="callMobile()">clickMe</button></body><script type="text/javascript">function callMobile() {swan.makePhoneCall({phoneNumber: '10086'});}</script></html>
Q:cover-view可以使用border吗?
A: cover-view 为原生组件,原生组件为系统提供的控件不支持单边设置;对于 cover-view 只支持基本的定位、布局、文本样式。不支持设置单边的 border、background-image、shadow、overflow: visible 等。
Q:video的原生video控件enable-progress-gesture属性支持动态更新吗?
A:支持。
代码示例:
Q: scroll-view 的scroll-top。设置是否是无效的?
A:使用竖向滚动时,需要给 <scroll-view> 一个固定高度,通过 CSS 设置 height。
代码示例:
<view class="wrap"><view class="card-area"><view class="top-description">纵向滚动</view><scroll-viewscroll-ystyle="height: 1.66rem;"scroll-into-view="{= toView =}"scroll-top="{= scrollTop =}"><view id="one" class="color-a">A</view><view id="two" class="color-b">B</view><view id="three" class="color-c">C</view></scroll-view><view class="page-section-btns"><view class="scrollToTop" bindtap="scrollToTop">回顶部</view></view></view></view>
Page({data: {toView: 'three',scrollTop: 0,},scrollToTop(e) {console.log(e);this.setData({ scrollTop: 0 });}});
Q:使用两个text组件,组件之间有间隙,在不同手机端偶现,影响部分用户体验的问题该如何解决?
A:如果设置 inline-block 会出现间隙,建议父级元素使用font-size:0,然后子元素再设置 font-size,可以去除 inline-block 元素间间距。
代码示例:
<view class="wrap"><view class="card-area"><text class="content" selectable="true" space="ensp">你</text><text class="content" selectable="true" space="ensp">好</text></view></view>
.card-area {font-size: 0}.content {font-size: .16rem}
Q:swiper 的面板指示点能自定义样式吗?
A: 参见swiper参数,可以去 dot 显示之后,自己定义 dot 样式。
代码示例:
Q:小程序使用 webview,分享出去的链接能直接是 webview 对应的 url 而不是小程序的 url 么?
A:小程序页面在进行分享时,如果分享出去的是web view引入的H5 页面,只能是分享的小程序的页面路径,不能是原H5 的页面路径。
