- sidebar: apifaq
- Q:如何查询指定地点的经纬度?
- Q: request 请求在 iOS 端会进入 fail 回调函数的原因有哪些?
- Q:小程序页面头部可否支持渐变色?
- Q:请问下有关闭小程序这样的 api 吗?
- Q:tabBar 下按钮是否可以直接拨打电话?
- Q:swan.request 成功后如何刷新页面?
- Q:如何在百度小程序里可以同时播放两个音频?
- Q:video自动播放的流量提醒出现策略是什么?
- Q:video全屏后的手势引导出现策略是什么?
- Q:web-view页面里如何使用拨打电话接口
- Q:我现在有个需求下载app的时候,同时写口令,也就是剪切板。打开app的时候,端上会读剪切板。请问小程序支持写口令吗?
- Q:小程序组件提供的弹窗能插图片内容吗?
- Q:百度小程序支持导航吗?或是支持调起其它导航APP?
- Q:百度小程序如何获取用户IP地址?
- Q:dataset数据为空时,返回布尔值true?
- Q:富文本框里的
图片,如何使用 previewImage这个api?
- Q:如何判断浏览器类型动态加载 jssdk?
- Q:百度小程序有直接把图片转为base64的吗?类似微信wx.getFileSystemManager().readFileSync(tempFilePaths[0], ‘base64’)
- Q:我是在手机百度内打开的小程序,然后内嵌的H5页面 。怎么跳回原生的小程序页面呢
title: API 常见问题 header: develop nav: faq
sidebar: apifaq
Q:如何查询指定地点的经纬度?
A:当前我们提供方式可以查询到您指定地点的经纬度
推荐使用swan.chooseLocation可获取到选择当前位置的经纬度。
在开发者工具中调用 swan.chooseLocation 用日志输出看到经纬度(坐标系GCJ02,可以直接用于小程序),具体方法可参考官方示例在开发者工具中预览效果。
使用地图拾取器
Q: request 请求在 iOS 端会进入 fail 回调函数的原因有哪些?
A:请查看 url 中是否出现了中文,如需要使用中文字体,请对中文字符进行 encodeURIComponent。
Q:小程序页面头部可否支持渐变色?
A:使用 navigationBarBackgroundColor 无法做到渐变色的效果,可以选择使用透明框,新增返回按钮,然后进行设置。或将navigationStyle 设置成 custom,在全屏页面中制作导航栏,自定义背景色。
代码示例
<canvas canvas-id="myCanvas" class="myCanvas"/>
</canvas>
<view>内容</view>
Page({
onReady: function () {
const canvasContext = this.createCanvasContext('myCanvas');
const grd = canvasContext.createLinearGradient(0, 0, 200, 200);
grd.addColorStop(0, 'blue');
grd.addColorStop(1, 'red');
canvasContext.setFillStyle(grd);
canvasContext.fillRect(0, 0, 800, 100);
canvasContext.draw();
}
});
Q:请问下有关闭小程序这样的 api 吗?
A: 暂时没有,可以通过组件进行关闭当前小程序的操作。
代码示例
<button type="primary">
<navigator target="miniProgram" open-type="exit">退出当前小程序</navigator>
</button>
Q:tabBar 下按钮是否可以直接拨打电话?
A: 不可以。
Q:swan.request 成功后如何刷新页面?
A:当刷新页面指的是想更新部分模块的数据时,可以在接口请求成功后,使用 setData 将获取到的数据进行重置。
Q:如何在百度小程序里可以同时播放两个音频?
A:可以多次创建 createInnerAudioContext,然后使用 setInnerAudioOption,将设置 mixWithOther 为 true。 代码示例
// 每个按钮只能点击一次,点击多次则会创建多个音频
Page({
onLoad() {
},
playOne() {
const innerAudioContext = swan.createInnerAudioContext();
innerAudioContext.src = 'https://vd3.bdstatic.com/mda-ic7mxzt5cvz6f4y5/mda-ic7mxzt5cvz6f4y5.mp3';
innerAudioContext.autoplay = false;
innerAudioContext.play();
},
playTwo() {
const innerAudioContext = swan.createInnerAudioContext();
innerAudioContext.src = 'https://vd3.bdstatic.com/mda-ic7mxzt5cvz6f4y5/mda-ic7mxzt5cvz6f4y5.mp3';
innerAudioContext.autoplay = false;
innerAudioContext.play();
}
});
Q:video自动播放的流量提醒出现策略是什么?
A:非 Wi-Fi 情况播放视频会出现流量弹窗,继续播放后,小程序生命周期里再次播放video,不会出现弹窗。如果杀进程,再次进入,会继续提醒弹窗,目前不支持开发者控制。
Q:video全屏后的手势引导出现策略是什么?
A:全屏手势引导点击一次后不在出现,目前也不支持开发者控制。
Q:web-view页面里如何使用拨打电话接口
A:请参考如下示例,示例中swan.js版本号仅为参考,请参考最新版本号进行开发。
代码示例
<!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:我现在有个需求下载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
。
<!-- child 组件中,data strong为true -->
<child strong>text</child>
不过,这个处理并不区分空串声明和无value声明。因为:
- 基本,组件的数据绑定都是表达式
- 空串一般做为组件某数据项的默认值,通过initData达到。除非必须区分null、undefined和空串,否则基本不会这么用。
所以,如果非要传空串,可以采用如下方法:
attr1="{{''}}"
Q:富文本框里的
图片,如何使用 previewImage这个api?
A:使用方法如下:
- 如果整个页面都是rich-text,那么可以用一个web-view组件加载h5,在h5中自己实现一个类似rich-text组件的功能(把 js tree/ dom片段渲染成最终 html),预览图片可以用h5功能来做,或者百度的端能力 。
- 如果小程序页面中部分区域是rich-text,想要实现rich-text中预览图片不行,因为rich-text中会屏蔽所有的事件。
Q:如何判断浏览器类型动态加载 jssdk?
A:可以使用 下面 来判断
代码示例
var uaStr = 'baiduboxapp'
var userAgent = navigator.userAgent.toLowerCase();
var str = userAgent.indexOf(uaStr)
console.log(uaStr)
alert(userAgent.substr(str,uaStr.length))
alert(userAgent)
Q:百度小程序有直接把图片转为base64的吗?类似微信wx.getFileSystemManager().readFileSync(tempFilePaths[0], ‘base64’)
A:目前还没有支持转化的api,可以先让在后台生成base64后,传递到前端进行使用。
Q:我是在手机百度内打开的小程序,然后内嵌的H5页面 。怎么跳回原生的小程序页面呢
A:开发者您好,为您准备了webview的3个功能,方便您使用,请看代码:
代码示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>H5打电话/H5跳转小程序/H5向小程序通信</title>
<script src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.11.js"></script>
</head>
<body>
<button onclick="callMobile()">clickMe</button>
<div onclick="toWebPage()">跳回小程序web页面</div>
</body>
<script type="text/javascript">
// 打电话功能
function callMobile() {
swan.webView.getEnv(function(res){
console.log(res);
if(res.smartprogram){
swan.makePhoneCall({
phoneNumber: '10086'
});
}else {
window.location.href = "tel:10086";
}
})
}
//跳回小程序页面
function toWebPage() {
swan.webView.navigateTo({url: '/index/web/web?a=1'});
}
// 通信(分享/后退/销毁场景下触发)
swan.webView.postMessage({ data: {foo: 'bar'} })
</script>
</html>