231 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
		
			
		
	
	
			231 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
|  | # 🔎 api
 | |||
|  | 组件的实例上挂载了一些实用的 *api* 方法可供调用   | |||
|  | 
 | |||
|  | ## 获取组件实例 :id=getCompent
 | |||
|  | - *uni-app*   | |||
|  |   ```vue | |||
|  |   <template> | |||
|  |     <view> | |||
|  |       <mp-html ref="article" /> | |||
|  |     </view> | |||
|  |   </template> | |||
|  |   <script> | |||
|  |     export default { | |||
|  |       onLoad () { | |||
|  |         var ctx = this.$refs.article | |||
|  |       } | |||
|  |     } | |||
|  |   </script> | |||
|  |   ``` | |||
|  | 
 | |||
|  | - 支付宝小程序   | |||
|  |   需开启 [component2](https://opendocs.alipay.com/mini/framework/component-ref) 模式 | |||
|  |   ```axml | |||
|  |   <mp-html ref="article"> | |||
|  |   ``` | |||
|  |   ```javascript | |||
|  |   Page({ | |||
|  |     article (ctx) { | |||
|  |       // 获得组件实例 | |||
|  |     }  | |||
|  |   }) | |||
|  |   ``` | |||
|  | 
 | |||
|  | - 其他小程序平台   | |||
|  |   ```wxml | |||
|  |   <mp-html id="article" /> | |||
|  |   ``` | |||
|  |   ```javascript | |||
|  |   Page({ | |||
|  |     onLoad () { | |||
|  |       // 微信、QQ、百度 | |||
|  |       var ctx = this.selectComponent('#article') | |||
|  |       // 头条 | |||
|  |       this.selectComponent('#article', ctx => { | |||
|  | 
 | |||
|  |       }) | |||
|  |     } | |||
|  |   }) | |||
|  |   ``` | |||
|  | 
 | |||
|  | ## in
 | |||
|  | 功能:将锚点跳转的范围限定在一个 *scroll-view*(需要开启纵向滚动)内   | |||
|  | 输入值:   | |||
|  | 
 | |||
|  | | 参数名 | 类型 | 必填 | 默认值 | 说明 | | |||
|  | |:---:|:---:|:---:|:---:|---| | |||
|  | | page | object | 是 | - | scroll-view 标签所在页面实例 | | |||
|  | | selector | string | 是 | - | scroll-view 标签 的选择器 | | |||
|  | | scrollTop | string | 是 | - | scroll-view 标签 scrollTop 属性绑定的变量名 | | |||
|  | 
 | |||
|  | 返回值:无   | |||
|  | 示例:   | |||
|  | ```wxml | |||
|  | <scroll-view id="scroll" style="height:300px" scroll-top="{{top}}" scroll-y scroll-with-animation> | |||
|  |   <mp-html id="article" content="{{html}}" /> | |||
|  | </scroll-view> | |||
|  | ``` | |||
|  | ```javascript | |||
|  | Page({ | |||
|  |   onLoad () { | |||
|  |     // ctx 为组件实例 | |||
|  |     ctx.in(this, '#scroll', 'top') | |||
|  |   } | |||
|  | }) | |||
|  | ``` | |||
|  | 
 | |||
|  | !> 在 *scroll-view* 中使用时需要注意如果使用了视频,需要保证该平台的 *video* 标签支持同层渲染   | |||
|  | 
 | |||
|  | ## navigateTo
 | |||
|  | 功能:锚点跳转   | |||
|  | 前提是 [use-anchor](basic/prop#use-anchor) 属性的值为 *true*   | |||
|  | 必须在 [load](basic/event#load) 事件触发后使用,建议在 [ready](basic/event#ready) 事件触发后使用以保证跳转位置准确   | |||
|  |    | |||
|  | 输入值:   | |||
|  | 
 | |||
|  | | 参数名 | 类型 | 必填 | 默认值 | 说明 | | |||
|  | |:---:|:---:|:---:|:---:|---| | |||
|  | | id | string | 否 | - | 要跳转的锚点 id,为空则跳转到开头 | | |||
|  | | offset | number | 否 | 0 | 跳转位置的偏移量 | | |||
|  | 
 | |||
|  | 返回值:**Promise**   | |||
|  | 
 | |||
|  | 该方法中传入的 *offset* 优先级高于 [use-anchor](basic/prop#use-anchor) 属性   | |||
|  | 
 | |||
|  | 示例:   | |||
|  | ```javascript | |||
|  | Page({ | |||
|  |   ready () { | |||
|  |     // ctx 为组件实例 | |||
|  |     ctx.navigateTo('anchor').then(() => { | |||
|  |       console.log('跳转成功') | |||
|  |     }).catch(err => { | |||
|  |       console.log('跳转失败:', err) | |||
|  |     }) | |||
|  |   } | |||
|  | }) | |||
|  | ``` | |||
|  | 
 | |||
|  | ## getText
 | |||
|  | 功能:获取文本内容   | |||
|  | 必须在 [load](basic/event#load) 事件触发后使用   | |||
|  | 输入值:无   | |||
|  | 返回值:**String** | |||
|  | 
 | |||
|  | ## getRect
 | |||
|  | 功能:获取富文本内容的位置和大小   | |||
|  | 如果开启了 [lazy-load](basic/prop#lazy-load),[ready](basic/event#ready) 事件返回的不是最终大小,可通过此方法获得实时的大小和位置信息   | |||
|  | 输入值:无   | |||
|  | 返回值:**Promise**   | |||
|  | 示例:   | |||
|  | ```javascript | |||
|  | Page({ | |||
|  |   getRect () { | |||
|  |     // ctx 为组件实例 | |||
|  |     ctx.getRect().then(rect => { | |||
|  |       console.log(rect) // boundingClientRect 信息 | |||
|  |     }).catch(err => { | |||
|  |       console.log('获取失败', err) | |||
|  |     }) | |||
|  |   } | |||
|  | }) | |||
|  | ``` | |||
|  | 
 | |||
|  | !> 该方法有小概率可能获取失败,需要做好错误处理   | |||
|  | 
 | |||
|  | ## setContent
 | |||
|  | 功能:设置富文本内容   | |||
|  | 此方法的功能与 [content](basic/prop#content) 属性基本一致,但此方法的设置不需要经过视图层且可以从尾部追加   | |||
|  | 输入值:   | |||
|  | 
 | |||
|  | | 参数名 | 类型 | 必填 | 默认值 | 说明 | | |||
|  | |:---:|:---:|:---:|:---:|---| | |||
|  | | content | string | 是 | - | 要渲染的 html 字符串 | | |||
|  | | append | boolean | 否 | false | 是否从尾部追加 |  | |||
|  | 
 | |||
|  | 返回值:无   | |||
|  | 
 | |||
|  | !> 调用此方法会触发 [load](basic/event#load) 和 [ready](basic/event#ready) 事件,请勿在事件处理函数中调用,否则可能陷入死循环   | |||
|  | 
 | |||
|  | ## imgList
 | |||
|  | 功能:获取所有图片的数组   | |||
|  | 该数组用于图片预览,对其进行修改可以在自动预览时生效(如修改为高清图链接或转存 *base64*)   | |||
|  | 
 | |||
|  | !> 这是一个属性,不是一个函数   | |||
|  | 请不要增删此数组(可以修改),否则在自动预览时可能出现问题     | |||
|  | 
 | |||
|  | ```javascript | |||
|  | Page({ | |||
|  |   load () { | |||
|  |     // ctx 为组件实例 | |||
|  |     var cover = ctx.imgList[0] // 首张图可以作为转发封面图 | |||
|  |     ctx.imgList.forEach((src, i, array) => { | |||
|  |       console.log(src) | |||
|  | 
 | |||
|  |       // 替换为高清图链接 | |||
|  |       array[i] = src.replace('thumb', '') | |||
|  | 
 | |||
|  |       // 转存 base64 便于预览 | |||
|  |       var fs = wx.getFileSystemManager && wx.getFileSystemManager() | |||
|  |       var info = src.match(/data:image\/(\S+?);(\S+?),(.+)/) | |||
|  |       if (!info) return | |||
|  |       var filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.${info[1]}` | |||
|  |       fs && fs.writeFile({ | |||
|  |         filePath, | |||
|  |         data: info[3], | |||
|  |         encoding: info[2], | |||
|  |         success: () => array[i] = filePath | |||
|  |       }) | |||
|  |     }) | |||
|  |   } | |||
|  | }) | |||
|  | ``` | |||
|  | 
 | |||
|  | ## pauseMedia
 | |||
|  | ?> [2.2.2](changelog/changelog#v222) 版本起支持   | |||
|  | 
 | |||
|  | 功能:暂停正在播放的视频或音频   | |||
|  | 
 | |||
|  | ?> 和 [play](basic/event#play) 事件配合可以实现与页面中其他音视频进行互斥播放   | |||
|  | 
 | |||
|  | 输入值:无   | |||
|  | 返回值:无   | |||
|  | 示例:   | |||
|  | ```javascript | |||
|  | Page({ | |||
|  |   onHide () { | |||
|  |     // ctx 为组件实例 | |||
|  |     ctx.pauseMedia() // 页面跳转或隐藏时暂停播放 | |||
|  |   } | |||
|  | }) | |||
|  | ``` | |||
|  | 
 | |||
|  | ## setPlaybackRate
 | |||
|  | ?> [2.4.0](changelog/changelog#v240) 版本起支持   | |||
|  | 
 | |||
|  | 功能:设置音视频的播放速率 | |||
|  | 
 | |||
|  | 输入值:   | |||
|  | 
 | |||
|  | | 参数名 | 类型 | 必填 | 默认值 | 说明 | | |||
|  | |:---:|:---:|:---:|:---:|---| | |||
|  | | rate | number | 是 | - | 播放速率,一般支持 0.5~2.0 | | |||
|  | 
 | |||
|  | 返回值:无   | |||
|  | 示例:   | |||
|  | ```javascript | |||
|  | Page({ | |||
|  |   // 点击设置速率按钮 | |||
|  |   setPlaybackRate () { | |||
|  |     wx.showActionSheet({ | |||
|  |       itemList: ['0.5', '1.0', '1.25', '1.5', '2.0'], | |||
|  |       success: res => { | |||
|  |         const rate = [0.5, 1.0, 1.25, 1.5, 2.0][res.tapIndex] | |||
|  |         // ctx 为组件实例 | |||
|  |         ctx.setPlaybackRate(rate) | |||
|  |       } | |||
|  |     }) | |||
|  |   } | |||
|  | }) | |||
|  | ``` |