【问题标题】:Is there an event triggered for opening a devtools?打开开发工具是否触发了事件?
【发布时间】:2020-01-10 11:34:18
【问题描述】:

问题标题很明显,我需要一个与打开开发工具相关的事件的回调,例如

    /* I expect for something like that with var "devtools" as window's object or the instanceof an unknowed class  */

    devtools.onDevtoolsOpened = () =>
    {
        // do my stuff
    }

如果可能,我寻求帮助。但如果没有,是否有相关的行动或其他方式来实现我的愿望?

【问题讨论】:

  • 你的actual problem 是什么,为什么你觉得需要检测devtools 打开? // do my stuff 是什么?
  • 当有人尝试在特定页面上进行代码检查时,我想删除特定脚本。这是为了防止某种作弊行为
  • 那行不通。人们总是可以看到您页面的代码,他们甚至不需要开发工具。但是 devtools 在源选项卡上记录执行的代码,之后删除脚本无论如何也无济于事。当然你可以尝试让它变得更难,但最终所有的作弊预防都需要在服务器端进行。
  • 我什至不知道我们可以在没有 devtools 的情况下访问脚本! ://

标签: javascript browser devtools


【解决方案1】:

这实际上取决于每个单独的浏览器。但是,我发现了一个模块可以为大多数浏览器解决问题: devtools-detect
从他们的文档中:

<script src="node_modules/devtools-detect/index.js"></script>
<script type="module">
    // Check if it's open
    console.log('Is DevTools open:', window.devtools.isOpen);

    // Check it's orientation, `undefined` if not open
    console.log('DevTools orientation:', window.devtools.orientation);

    // Get notified when it's opened/closed or orientation changes
    window.addEventListener('devtoolschange', event => {
        console.log('Is DevTools open:', event.detail.isOpen);
        console.log('DevTools orientation:', event.detail.orientation);
    });
</script>

【讨论】:

  • "如果 DevTools 未停靠,则不起作用,并且如果您切换任何类型的侧边栏,则会显示误报。" - 哇。
  • 是的,这很糟糕。然而,回购有点受欢迎,并且根据用例,它仍然可以工作,因此我的回答是。
  • 我首先想到的是捕获 devtools 调用键 (F12, ctrl + maj + i, ctrl+maj+c, ... ) 但我立即发现如果那个人通过浏览器的菜单。
猜你喜欢
  • 2018-06-12
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 2019-12-29
  • 2014-07-07
  • 2019-04-17
  • 1970-01-01
  • 2012-11-02
相关资源
最近更新 更多