用户真实的点击操作和代码模拟的点击操作有什么区别呢?例如NodePlayer中对于用户真实事件的监听?

新手上路,请多包涵

怎么区分点击事件是用户的真实操作还是代码触发的呢?
目前在使用NodePlayer播放器时遇到一个问题,使用它的自动播放时,一开始视频是没有声音的,得点击一下才有声音,官方API给出的解释以及解决方法如下:

image.png

官方API说当点击播放器的时候,声音可以恢复。
但如果我们想实现无感知操作,不想让用户再多一步点击操作,通过在代码里自己调用click去触发点击事件,声音恢复无效。
但无论是使用.click和创建一个点击事件其实都能触发监听点击事件的方法,说明代码触发的点击是生效了的,但为什么声音恢复无效呢?NodePlayer官方API上说“需要由一个真实的用户交互操作来恢复,不能使用代码”,但两者都是能触发监听点击事件的方法,NodePlayer是怎么区分到底是真实的用户操作还是代码触发的呢?

var btn = document.getElementById('btn');
//自动点击方法一
var event = new MouseEvent('click', {
  'view': window,
  'bubbles': true,
  'cancelable': true
});
btn.dispatchEvent(event);

//自动点击方法二
btn.click()

//监听点击事件
btn.addEventListener('click', function() {
    console.log('被点击了')
});

NodePlayer相关文档地址:https://www.nodemedia.cn/doc/web/#/1/3

阅读 3.1k
1 个回答

事件对象中有个只读属性,isTrusted,

仅用户操作产生的事件对象isTrusted = true

模拟点击isTrusted = false

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题