开发者-导航 猿导航

Chrome 浏览器 F12 无法打开控制台,右键无法查看元素解决办法

发布时间:

目录

不可以打开 #

方法一 #

将鼠标光标移动到搜索或地址栏中,点击聚焦,此时再按 F12 键就可以顺利打开控制台了。

方法二 #

随便找一个可以打开控制台的页面,然后将不能打开控制的页面地址,复制粘贴已打开的网页中,Enter 键访问。

方法三 #

尝试 Ctrl + S 保存网页,对代码进行分析,然后通过 油猴 注入脚本重新对应方法

方法四 #

操作系统 元素 控制台 您上次使用的面板
Windows 或 Linux Ctrl + Shift + C Ctrl + Shift + J F12 Ctrl + Shift + I
Mac Cmd + Option + C Cmd + Option + J Fn + F12 Cmd + Option + I

下面介绍了一种记忆快捷键的简单方法:

方法五 #

Ctrl + u 源码视图进行分析网页代码

可以打开 #

有些网页可以打开控制台,但是打开一瞬间跳转 about:blank 空白页,可以通过一下脚本阻止跳转同时弹框提醒是否离开

beforeunload #

监听页面卸载事件 油猴脚本
window.addEventListener("beforeunload", function(event) {
    // 尝试离开页面时执行
    event.preventDefault();
	return
});

devtoolschange #

监听控制台变化 油猴脚本
// 如果已经存在的监听器需要移除
const originalRemoveEventListener = window.removeEventListener;
window.removeEventListener = function(type, listener, options) {
	if (type === 'devtoolschange') {
		// 拦截对 devtoolschange 事件监听的移除
		return;
	}
	// 对其他事件,使用原始方法进行移除
	originalRemoveEventListener.call(window, type, listener, options);
};

通过窗口高度和宽度来判断是否打开控制台 #

此刻就需要先打开控制台,点击控制台设置 停靠测:“取消停靠至单独的窗口”,然后控制台单独一个窗口

油猴脚本 #

安装 enable-devtool

有些网站是通过 setTimeout 定时触发检测或重定向,所以可以过滤 callback 的内容然后对应方法失效(自行测试调整)。

离开页面提示框

// ==UserScript==
// @name         enable-devtool
// @namespace    http://tampermonkey.net/
// @version      2025-12-18
// @description  解决大部分页面,打开控制台页面直接重定向或 about:blank 问题
// @author       Mr.Fang
// @match        https://*/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=www.google.com
// @grant        unsafeWindow
// @run-at 		 document-start
// ==/UserScript==

(function() {
	'use strict'

	const originalAddEventListener = window.addEventListener;

	// 重写 setTimeout ,拦截定时器执行 about:blank 内容
	const originalSetTimeout = unsafeWindow.setTimeout;
	unsafeWindow.setTimeout = function(callback, delay, ...args) {
		let toStr = callback?.toString();
		console.log(toStr)
		if (toStr && toStr.includes('about:blank')) return true; // 自定修改 about:blank 要匹配的内容
		const wrappedCallback = function() {
			callback(...args);  // 也可注释掉此行进行验证
		};
		return originalSetTimeout(wrappedCallback, delay);
	};

	// 重写 setInterval,拦截定时器执行 about:blank 内容
	const originalSetInterval = unsafeWindow.setInterval;
	unsafeWindow.setInterval = function(callback, delay, ...args) {
		let toStr = callback?.toString();
		console.log(toStr)
		if (toStr && toStr.includes('about:blank')) return true; // 自定修改 about:blank 要匹配的内容
		const wrappedCallback = function() {
			callback(...args); // 也可注释掉此行进行验证
		};
		return originalSetInterval(wrappedCallback, delay);
	};

	// 重写 addEventListener 方法
	window.addEventListener = function(type, listener, options) {
		if (type === 'devtoolschange') {
			// 拦截对 devtoolschange 事件的监听,阻止其添加
			console.log("拦截了添加“devtoolschange”侦听器的尝试.");
			return;
		}
		// 对其他事件,使用原始方法进行添加
		originalAddEventListener.call(window, type, listener, options);
	};

	// 如果已经存在的监听器需要移除
	const originalRemoveEventListener = window.removeEventListener;
	window.removeEventListener = function(type, listener, options) {
		if (type === 'devtoolschange') {
			// 拦截对 devtoolschange 事件监听的移除
			console.log("拦截了删除“devtoolschange”侦听器的尝试.");
			return;
		}
		// 对其他事件,使用原始方法进行移除
		originalRemoveEventListener.call(window, type, listener, options);
	};
	
	// 监听开发者窗口改变
	window.addEventListener("devtoolschange", event => {
		console.log('阻止')
		event.preventDefault();
		return
	});
	
	// 监听离开当前页面,例如使用 window.location.href
	window.addEventListener("beforeunload", function(event) {
		// 在用户尝试离开页面时执行你的逻辑
		// 例如:
		event.preventDefault();
		console.log('阻止');
		return
		// event.returnValue = ""; // 兼容老版本浏览器
		// return ""; // 兼容新版本浏览器
		// 或者显示一个警告框
		// return "您确定要离开吗?";
	});
})();