返回

微信小程序使用wxParse解析embed标签的障碍及解决方案**

前端

在微信小程序中,使用wxParse插件解析HTML内容时,开发者可能会遇到解析embed标签的问题。embed标签用于嵌入外部内容,如视频或音频,但wxParse插件默认不支持解析embed标签。这可能导致无法在小程序中正常展示HTML内容中的视频或音频元素。

问题检测:

要检测wxParse插件是否能解析embed标签,可以在html2json.js文件中检查video元素的数据形态。如果video元素的数据形态为以下形式:

{
  type: 'video',
  src: '',
  poster: '',
  width: '',
  height: '',
  autoplay: false,
  controls: false,
  loop: false,
  muted: false
}

则表示wxParse插件不能解析embed标签。

解决方法:

解决此问题的步骤如下:

  1. 修改html2json.js文件:

在html2json.js文件中找到处理video标签的代码段:

if (node.tagName === 'video') {
  var video = {
    type: 'video',
    src: node.attributes.src,
    poster: node.attributes.poster,
    width: node.attributes.width,
    height: node.attributes.height,
    autoplay: node.attributes.autoplay === 'true',
    controls: node.attributes.controls === 'true',
    loop: node.attributes.loop === 'true',
    muted: node.attributes.muted === 'true'
  };
  if (!video.src) {
    video.src = '';
  }
  if (!video.poster) {
    video.poster = '';
  }
  if (!video.width) {
    video.width = '100%';
  }
  if (!video.height) {
    video.height = '100%';
  }
  return video;
}
  1. 添加embed标签的处理逻辑:

在处理video标签的代码段后,添加如下代码段:

if (node.tagName === 'embed') {
  var embed = {
    type: 'embed',
    src: node.attributes.src,
    width: node.attributes.width,
    height: node.attributes.height
  };
  if (!embed.src) {
    embed.src = '';
  }
  if (!embed.width) {
    embed.width = '100%';
  }
  if (!embed.height) {
    embed.height = '100%';
  }
  return embed;
}
  1. 重新编译wxParse插件:

修改完html2json.js文件后,需要重新编译wxParse插件。使用命令:

npm run build

编译完成后,将编译后的文件替换原有的wxParse插件文件。

通过以上步骤,即可解决wxParse插件无法解析embed标签的问题,从而在微信小程序中正常展示HTML内容中的视频或音频元素。