当前位置: 首页 > 知识库问答 >
问题:

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

卜季萌
2023-09-04

怎么区分点击事件是用户的真实操作还是代码触发的呢?
目前在使用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

共有1个答案

袁桐
2023-09-04

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

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

模拟点击isTrusted = false

 类似资料:
  • 本文向大家介绍jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码,包括了jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码的使用技巧和注意事项,需要的朋友参考一下 在使用JqGrid时,Table中最后一列是操作列,在操作列中每一行都一个操作按钮,该操作按钮类似下拉菜单,如下图: 在点击Table中【操作】一列时需要弹出一个Div层,该Div层中包含一堆按钮,用

  • 问题内容: 我正在使用Selenium编写一些UI测试,并且使用Dojo工具箱具有一个JavaScript Tree控件。 我已经使用Dojo提供的示例为树的每个节点实现了一个上下文菜单,但是我需要Selenium测试来“调用”树节点上的右键,但是我无法使其正常工作。这些测试根本不会通过JavaScript模拟右键单击事件,并且不会显示上下文菜单。 是否有人在使用Dojo和Selenium调用上下

  • 问题内容: 很多次,我在HTML页面中都看到过这样的链接: 在那里的作用是什么? 另外,我通常不会在按钮中看到它。 在任何地方都指定了吗?在w3.org的某些规格中? 问题答案: 事件处理程序的返回值确定默认浏览器行为是否也应发生。在单击链接的情况下,将在链接之后,但是区别最明显的是表单提交处理程序,如果用户输入信息有误,您可以在其中取消表单提交。 我不相信对此有W3C规范。像这样的所有古代Jav

  • 2.url点击事件的监听 url点击事件的监听是指将访客和客服发送在聊窗中的链接ur的点击事件暴漏出来,用户可以自定义url打开方式(默认使用SDK内置Webview加载)。监听接口为OnUrlClickListener; 注册监听方法: Ntalker.getInstance().setOnUrlClickListener(OnUrlClickListener onMsgClickListene

  • 本文向大家介绍Javascript操作select控件代码实例,包括了Javascript操作select控件代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Javascript操作select控件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 新增、修改、删除、选中、清空、判断存在等 1、判断select选项中 是否

  • 问题内容: 有人可以告诉我中间操作和终端操作有什么区别吗? 操作组合到管道中以处理流。所有操作都是中间操作或终端..means?。 问题答案: Stream支持几种操作,这些操作分为和操作。 此操作之间的区别在于,中间操作是惰性的,而终端操作不是。当您在流上调用中间操作时,该操作不会立即执行。仅在对该流调用终端操作时才执行该命令。在某种程度上,一旦调用了终端操作,便会存储并调用一次中间操作。您可以