怎么区分点击事件是用户的真实操作还是代码触发的呢?
目前在使用NodePlayer播放器时遇到一个问题,使用它的自动播放时,一开始视频是没有声音的,得点击一下才有声音,官方API给出的解释以及解决方法如下:
官方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
事件对象中有个只读属性,isTrusted,
仅用户操作产生的事件对象
isTrusted = true
,模拟点击
isTrusted = false