为什么Safari浏览器开发者工具里的控制台不显示JS报错信息?

阿枫大大_7627

阿枫大大_7627

2026-10-13

655人浏览

原创

safari控制台不显示日志是因默认屏蔽info级别且页面跳转清空日志;需启用“开发”菜单、开启level:info过滤、勾选“保留日志”,并排查扩展干扰、js禁用及console重写问题。

为什么safari浏览器开发者工具里的控制台不显示js报错信息?

你在Safari浏览器里打开开发者工具,切换到控制台标签页,却看不到任何红色报错信息,连console.log都不打印——这不是代码没写错,而是Safari默认屏蔽了info级别日志,且页面跳转或脚本执行时机导致日志被清空,必须手动开启关键开关并排除干扰项才能让错误真正浮现出来。

确认“开发”菜单已启用(强制前提)

这是所有后续操作的基础,跳过这步,快捷键无效、右键无选项、控制台永远打不开。
1、点击屏幕左上角【Safari】→ 选择“设置”。
2、顶部标签栏切换到“高级”页签。
3、勾选底部的“在菜单栏中显示‘开发’菜单”。【此选项未勾选时,所有调试入口均不可见】
4、关闭设置窗口,检查菜单栏是否出现“开发”项;若未出现,请重启 Safari 后重试。

打开控制台并确保 Info 级别日志可见

即使控制台打开了,Safari 默认只显示 warning 和 error,而 console.log 属于 info 级别,会被静默丢弃。

方法一:快捷键直达 + 手动启用 info
确保网页已完全加载 → 按 Option + Command + I → 控制台默认打开在“元素”页签 → 点击顶部“控制台”标签 → 右键点击日志列表顶部任意列标题(如“时间”“源”)→ 勾选“过滤器”→ 在顶部过滤栏输入 level:info 并回车。

方法二:通过右键菜单快速启用
在控制台空白处右键 → 选择“显示级别”→ 确保“信息”已打钩。若该选项灰显,说明“过滤器”未启用,需先按方法一第一步开启过滤功能。

防止页面跳转导致日志丢失

如果报错语句紧跟在 location.href = 'xxx' 或表单 submit() 之后,控制台大概率一片空白——不是没执行,是页面跳走太快,日志根本来不及渲染就被清空了。

js2java
js2java

JavaScript 到 Java 全栈翻译助手,专为前端开发者学习 Java 或快速实现后端业务逻辑而设计。当用户提到以下场景时必须使用此技能: - "帮我把这段 JS 代码转成 Java" - "用 Java 怎么写这个逻辑" - "我习惯用 JS 写,想翻译成 Java" - "教我 Java,我要写后端接...

下载

第一步:勾选“保留日志”
在控制台左上角找到“Preserve Log”复选框并勾选。这是解决跳转丢失日志最直接有效的开关。

第二步:调整日志输出时机
将 console.error 或 console.log 移至跳转语句之前,并加一行 setTimeout(() => {}, 0) 微任务延迟,确保日志进入队列再触发跳转。不要依赖 beforeunload 中的日志,它不可靠。

第三步:临时加 debugger;
在疑似出错位置下方插入 debugger;,刷新页面后执行会自动暂停,此时可确认控制台是否已有日志输出,避免误判为无报错。

排查其他干扰项

方法一:禁用扩展与隐私限制
某些广告拦截器或隐私增强插件会劫持 console 对象,甚至直接屏蔽日志输出。在 Safari 无痕窗口中打开同一网页测试,若控制台正常显示,则问题出在扩展或当前站点设置上。

方法二:检查 JavaScript 是否被全局禁用
Safari 设置 → 网站 → 找到当前域名 → 查看“JavaScript”右侧开关是否为开启状态。若显示“阻止”,则所有脚本包括错误捕获机制都会失效。

方法三:验证 console.log 是否被重写
在控制台中直接输入 console.log.toString(),回车。若返回结果不是 function log() { [native code] },说明有 SDK 或脚本覆盖了原生方法,需定位并移除相关初始化代码。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4216

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1315

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1698

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

9763

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

940

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2584

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1529

5

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

2023.09.21

4429

3

js生成随机数方法
js生成随机数方法

JavaScript生成随机数的方法,包括使用Math.random()方法生成指定范围内的随机整数、生成随机字符串和生成随机颜色。根据具体需求,可以选择适合的方法来生成随机数,以实现各种功能 。

2023.09.25

2555

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 21万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.8万人学习