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

Dailymotion播放器监听PLAYER_START事件调用mute()报错排查

问题解决:Uncaught (in promise) TypeError: player.mute is not a function

错误原因

你在回调里通过dailymotion.getPlayer(state.id)获取的对象并非有效的Dailymotion播放器实例,或者该实例不包含mute方法;更关键的是,绑定事件时你已经拿到了播放器实例,完全不需要重新调用getPlayer获取,这反而引入了额外的异步操作风险。

修复后的代码

// 直接接收播放器实例作为参数
const callback = (player) => {
    // 调用静音方法
    player.mute();
};

// 获取页面所有嵌入的播放器实例
Promise.all(dailymotion.getAllPlayers()).then((players) => {
    // 给每个播放器绑定PLAYER_START事件,将当前播放器实例传入回调
    players.forEach((player) => {
        player.on(dailymotion.events.PLAYER_START, () => callback(player));
    });
});

备选方案(若mute()方法适配问题)

如果上述代码仍报错,可能是当前Dailymotion API已将mute()替换为setMuted方法,可改用:

const callback = (player) => {
    player.setMuted(true);
};

补充说明

  • 事件绑定阶段已经持有播放器实例,直接复用即可,避免重复调用getPlayer带来的异步问题。
  • 若坚持通过state.id获取实例,需先打印console.log(player)确认返回对象的结构,确保它是标准的Dailymotion播放器实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:58:19