title: API 常见问题 header: develop nav: faq

sidebar: apifaq

Q:如何查询指定地点的经纬度?

A:当前我们提供方式可以查询到您指定地点的经纬度

Q: request 请求在 iOS 端会进入 fail 回调函数的原因有哪些?

A:请查看 url 中是否出现了中文,如需要使用中文字体,请对中文字符进行 encodeURIComponent

Q:小程序页面头部可否支持渐变色?

A:使用 navigationBarBackgroundColor 无法做到渐变色的效果,可以选择使用透明框,新增返回按钮,然后进行设置。或将navigationStyle 设置成 custom,在全屏页面中制作导航栏,自定义背景色。

在开发者工具中预览效果

代码示例

  1. <canvas canvas-id="myCanvas" class="myCanvas"/>
  2. </canvas>
  3. <view>内容</view>
  1. Page({
  2. onReady: function () {
  3. const canvasContext = this.createCanvasContext('myCanvas');
  4. const grd = canvasContext.createLinearGradient(0, 0, 200, 200);
  5. grd.addColorStop(0, 'blue');
  6. grd.addColorStop(1, 'red');
  7. canvasContext.setFillStyle(grd);
  8. canvasContext.fillRect(0, 0, 800, 100);
  9. canvasContext.draw();
  10. }
  11. });

Q:请问下有关闭小程序这样的 api 吗?

A: 暂时没有,可以通过组件进行关闭当前小程序的操作。

代码示例

  1. <button type="primary">
  2. <navigator target="miniProgram" open-type="exit">退出当前小程序</navigator>
  3. </button>

Q:tabBar 下按钮是否可以直接拨打电话?

A: 不可以。

Q:swan.request 成功后如何刷新页面?

A:当刷新页面指的是想更新部分模块的数据时,可以在接口请求成功后,使用 setData 将获取到的数据进行重置。

Q:如何在百度小程序里可以同时播放两个音频?

A:可以多次创建 createInnerAudioContext,然后使用 setInnerAudioOption,将设置 mixWithOther 为 true。 代码示例

在开发者工具中预览效果

  1. // 每个按钮只能点击一次,点击多次则会创建多个音频
  2. Page({
  3. onLoad() {
  4. },
  5. playOne() {
  6. const innerAudioContext = swan.createInnerAudioContext();
  7. innerAudioContext.src = 'https://vd3.bdstatic.com/mda-ic7mxzt5cvz6f4y5/mda-ic7mxzt5cvz6f4y5.mp3';
  8. innerAudioContext.autoplay = false;
  9. innerAudioContext.play();
  10. },
  11. playTwo() {
  12. const innerAudioContext = swan.createInnerAudioContext();
  13. innerAudioContext.src = 'https://vd3.bdstatic.com/mda-ic7mxzt5cvz6f4y5/mda-ic7mxzt5cvz6f4y5.mp3';
  14. innerAudioContext.autoplay = false;
  15. innerAudioContext.play();
  16. }
  17. });

Q:video自动播放的流量提醒出现策略是什么?

A:非 Wi-Fi 情况播放视频会出现流量弹窗,继续播放后,小程序生命周期里再次播放video,不会出现弹窗。如果杀进程,再次进入,会继续提醒弹窗,目前不支持开发者控制。

Q:video全屏后的手势引导出现策略是什么?

A:全屏手势引导点击一次后不在出现,目前也不支持开发者控制。

Q:web-view页面里如何使用拨打电话接口

A:请参考如下示例,示例中swan.js版本号仅为参考,请参考最新版本号进行开发。

代码示例

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>call phone</title>
  6. <script src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.6.js"></script>
  7. </head>
  8. <body>
  9. <button onclick="callMobile()">clickMe</button>
  10. </body>
  11. <script type="text/javascript">
  12. function callMobile() {
  13. swan.makePhoneCall({
  14. phoneNumber: '10086'
  15. });
  16. }
  17. </script>
  18. </html>

Q:我现在有个需求下载app的时候,同时写口令,也就是剪切板。打开app的时候,端上会读剪切板。请问小程序支持写口令吗?

A:不支持

Q:小程序组件提供的弹窗能插图片内容吗?

A:不支持,小程序API提供的弹窗暂时都不支持插入图片,可自行写弹层逻辑,注意,自己写的弹层底部的的蒙层是盖不住顶bar(标题栏)。

代码示例

自行写弹层逻辑可参考showModal中的代码示例三

Q:百度小程序支持导航吗?或是支持调起其它导航APP?

A:不支持导航,可以使用openLocation 打开宿主app内置的地图导航。

Q:百度小程序如何获取用户IP地址?

A:暂时不支持。

Q:dataset数据为空时,返回布尔值true?

A:已知情况,小程序底层框架是基础 san, san 里面有个为开发者提供便利性的处理:对没有 value 声明的 attr,默认为true

  1. <!-- child 组件中,data strong为true -->
  2. <child strong>text</child>

不过,这个处理并不区分空串声明和无value声明。因为:

  • 基本,组件的数据绑定都是表达式
  • 空串一般做为组件某数据项的默认值,通过initData达到。除非必须区分null、undefined和空串,否则基本不会这么用。 所以,如果非要传空串,可以采用如下方法:
    1. attr1="{{''}}"

Q:富文本框里的sidebar: apifaq - 图3 图片,如何使用 previewImage这个api?

A:使用方法如下:

  1. 如果整个页面都是rich-text,那么可以用一个web-view组件加载h5,在h5中自己实现一个类似rich-text组件的功能(把 js tree/ dom片段渲染成最终 html),预览图片可以用h5功能来做,或者百度的端能力 。
  2. 如果小程序页面中部分区域是rich-text,想要实现rich-text中预览图片不行,因为rich-text中会屏蔽所有的事件。

Q:如何判断浏览器类型动态加载 jssdk?

A:可以使用 下面 来判断

代码示例

  1. var uaStr = 'baiduboxapp'
  2. var userAgent = navigator.userAgent.toLowerCase();
  3. var str = userAgent.indexOf(uaStr)
  4. console.log(uaStr)
  5. alert(userAgent.substr(str,uaStr.length))
  6. alert(userAgent)

Q:百度小程序有直接把图片转为base64的吗?类似微信wx.getFileSystemManager().readFileSync(tempFilePaths[0], ‘base64’)

A:目前还没有支持转化的api,可以先让在后台生成base64后,传递到前端进行使用。

Q:我是在手机百度内打开的小程序,然后内嵌的H5页面 。怎么跳回原生的小程序页面呢

A:开发者您好,为您准备了webview的3个功能,方便您使用,请看代码:

代码示例

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>H5打电话/H5跳转小程序/H5向小程序通信</title>
  6. <script src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.11.js"></script>
  7. </head>
  8. <body>
  9. <button onclick="callMobile()">clickMe</button>
  10. <div onclick="toWebPage()">跳回小程序web页面</div>
  11. </body>
  12. <script type="text/javascript">
  13. // 打电话功能
  14. function callMobile() {
  15. swan.webView.getEnv(function(res){
  16. console.log(res);
  17. if(res.smartprogram){
  18. swan.makePhoneCall({
  19. phoneNumber: '10086'
  20. });
  21. }else {
  22. window.location.href = "tel:10086";
  23. }
  24. })
  25. }
  26. //跳回小程序页面
  27. function toWebPage() {
  28. swan.webView.navigateTo({url: '/index/web/web?a=1'});
  29. }
  30. // 通信(分享/后退/销毁场景下触发)
  31. swan.webView.postMessage({ data: {foo: 'bar'} })
  32. </script>
  33. </html>