javascript - 创建一个只能从 Google Chrome 中的用户手势内部调用的函数

标签 javascript google-chrome gesture

在 Google Chrome 中,如果您尝试通过在控制台中输入命令来进入全屏模式,将会失败并显示以下错误消息:

Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.

(据我所知)不可能通过模拟点击事件来欺骗这一点。它仅在真实用户操作内触发时才有效。其他几个内置函数也有这种行为。

我可以在自己的函数中重现此行为吗?

换句话说,我可以创建一个函数,该函数在由真人做出用户手势触发时起作用,但在任何其他情况下都不起作用吗?

最佳答案

在 Chrome 中,您可以使用 Event.isTrusted ( MDN web docs )。

当用户做出手势时,您可能会收到一个传递给处理程序的事件。以下是点击事件的示例:

document.documentElement.onclick = function(event)
{
  alert(event.isTrusted ? "trusted" : "untrusted");  
};

// After 5 seconds perform an untrusted click
setTimeout(function() { document.documentElement.click() }, 5000);

当事件可信时,它是由用户操作生成的,因此您可以执行您的函数。

关于javascript - 创建一个只能从 Google Chrome 中的用户手势内部调用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009028/

相关文章:

javascript - 将光标移动到 contentEditable DIV 中的占位符元素

jquery - 灯箱叠加层未在 Chrome 上显示,但在 Chrome Canary 上运行良好

javascript - 在 Chrome 中创建多个 webgl 纹理

react-native - 如何使用 react reanimated 和 react native gesture handler 来更新缩放焦点原点以进行迭代捏合手势?

swift - 如何实现更新(_ :body:) on gestures in SwiftUI

javascript - 如何循环遍历新生成的数组而不覆盖它?

javascript - 将 AJAX 数据绑定(bind)到 html 列表模板

android - 滑动屏幕的一部分

翻译后JavaScript旋转错误

css - Chrome 和 Firefox 中动态内容的不同滚动行为