1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /**
- * @fileoverview txv-video 插件
- * Include txv-video (https://github.com/tvfe/txv-miniprogram-plugin)
- */
- const TxvVideo = function (vm) {
- this.vm = vm
- }
- // #ifdef MP-WEIXIN || MP-QQ
- const TxvContext = requirePlugin('tencentvideo')
- TxvVideo.prototype.onUpdate = function (_, config) {
- config.trustTags['txv-video'] = true
- this.videos = []
- }
- TxvVideo.prototype.onParse = function (node, parser) {
- if (node.name === 'iframe' && (node.attrs.src || '').includes('vid')) {
- const vid = node.attrs.src.match(/vid=([^&\s]+)/)
- if (vid) {
- node.name = 'txv-video'
- node.attrs.vid = vid[1]
- this.videos.push(vid[1])
- node.attrs.src = undefined
- parser.expose()
- }
- }
- }
- TxvVideo.prototype.onLoad = function () {
- setTimeout(() => {
- for (let i = 0; i < this.videos.length; i++) {
- const ctx = TxvContext.getTxvContext(this.videos[i])
- ctx.id = this.videos[i]
- this.vm._videos.push(ctx)
- }
- }, 50)
- }
- // #endif
- module.exports = TxvVideo
|