浏览器判断控制台是否开启

根据 console.table 的执行时长

这种方案还是可以的,BOSS 用的这个。

Javascript 复制代码
function checkIsOpen() {
    const bengin = new Date().valueOf();
    console.table(new Array(100).fill(1).map(item => new Array(100).fill(1)))
    const end = new Date().valueOf();
    console.clear();
    return (end - bengin) > 5
}
console.log(checkIsOpen())

toString 检测 (已经没有用了)

这个方案,是基于console.log不会在控制台开启时执行的前提条件下才会生效,但是目前浏览器这个不行。

Javascript 复制代码
function checkIsOpen() {
    
}
checkIsOpen.toString = function() {
    this.isOpen = true;
}
console.log(checkIsOpen)

这个方案已经无了,但是可以了解一下console.log。 console.log() API ‌无论 DevTools 是否打开都会执行‌,但其行为和影响在不同状态下有显著差异。

性能与内存影响不同‌:

  • DevTools 关闭时 ‌:
    日志输出通常由浏览器轻量处理,‌不会导致内存泄漏‌,堆内存保持稳定。
  • DevTools 打开时 ‌:
    浏览器会‌保留被打印对象的引用 ‌(尤其是对象/数组),以便在控制台中展开查看,这可能导致‌内存无法被垃圾回收(GC) ‌,从而引发内存泄漏。nodejs 环境不会内存泄漏

监控debugger

Javascript 复制代码
function checkIsOpen() {
    const bengin = new Date().valueOf();
    debugger;
    const end = new Date().valueOf();
    console.clear();
    return (end - bengin) > 5
}
console.log(checkIsOpen())

就是利用断点。

DOM元素检测

就是挂一个隐藏的 html 标签放页面上监控这个 html 标签的offsetHeightoffsetWidth。 这个也无了。

相关推荐
Moment4 小时前
当前端开始做 Agent 后,我才知道 LangGraph 有多重要❗❗❗
前端·后端·面试
竹林8184 小时前
RainbowKit 快速集成多链钱包连接:从“连不上”到丝滑切换的踩坑实录
前端·javascript
小蜜蜂dry4 小时前
nestjs实战-登录、鉴权(一)
前端·后端·nestjs
农夫山泉不太甜4 小时前
WebSocket与SSE技术方案选型对比分析
前端
重阳微噪4 小时前
受够了空格翻页?我写了一个 Chrome 自动滚动插件,让你真正沉浸式阅读
前端
Awu12274 小时前
🍎用 pretext 搞定输入框动态宽度:一个困扰了我三天的 CSS 问题
前端
萑澈4 小时前
我用 Cloudflare 搭了一个 FlashInbox 临时邮箱
前端·next.js
慕斯fuafua5 小时前
CSS——盒模型
前端·css
嗜好ya5 小时前
解决 Vite 项目中 import.meta.env 变量为 undefined 的问题
前端·javascript·vue.js