47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
/**
 | 
						|
 * @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
 | 
						|
try {
 | 
						|
  const TxvContext = requirePlugin('tencentvideo')
 | 
						|
 | 
						|
  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)
 | 
						|
  }
 | 
						|
} catch (e) {
 | 
						|
  console.error('使用txv-video扩展需注册腾讯视频插件')
 | 
						|
}
 | 
						|
 | 
						|
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()
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// #endif
 | 
						|
 | 
						|
module.exports = TxvVideo
 |