You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mejs对象存在players属性但显示为空、长度为0问题求助

根因说明

该现象由浏览器控制台的惰性求值特性导致:

  • 代码执行console.log(mejs.players)时仅输出对象引用,此时mejs.players尚未完成初始化,本身为空对象,因此Object.keys计算得到的长度为0。
  • 在控制台点击展开对象时,浏览器才会动态读取该对象当前的最新属性,此时MediaElement.js已经完成播放器实例注入,因此可以看到内部存在对应值。

可通过console.log(JSON.stringify(mejs.players))验证代码执行时刻的真实值,输出结果一定是空对象{}。

修复方案

不要直接在DOM ready回调中读取mejs.players:DOM ready仅保证页面DOM节点加载完成,不代表MediaElement.js的播放器实例已初始化完成,推荐两种实现方式:

  • 方案1:在播放器初始化的success回调中读取,为最稳妥的方案
$('video').mediaelementplayer({
  success: function() {
    console.log(mejs.players);
    console.log("Length : " + Object.keys(mejs.players).length);
  }
});
  • 方案2:如果无法直接修改播放器初始化逻辑,可短时间延迟后再读取
jQuery('document').ready( function($) {
  // 延迟时长可根据实际场景调整
  setTimeout(() => {
    console.log(mejs.players);
    console.log("Length : " + Object.keys(mejs.players).length);
  }, 200);
});

内容的提问来源于stack exchange,提问作者Rupak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 22:15:03