为什么 "console.log()" 无法在此网站上运行?
Why doesn't "console.log()" work on this website?
我可以为此 URL 打开 Chrome DevTools 控制台:https://www.google.com/ 并输入以下命令来打印“Hello world!”到控制台:
console.log("Hello world!")
但是,当我尝试对此 URL 使用相同的命令时:https://svc.mt.gov/dor/property/prc 我的消息没有打印在控制台中。这是为什么?
有什么方法可以强制控制台为这个 MT 网站工作吗?
我试过使用 python/selenium 打开页面并使用 execute_script() 发出命令,但这也没有用。
如果你这样做
console.dir(console.log)
并单击 [[FunctionLocation]]
,您将在站点的源代码中看到以下内容:
"Debug" != e && (window.console.log = function() {}
)
似乎是一种抑制生产日志记录的廉价(但懒惰?)方法。
修复它的一种方法是使用 one of the many other console commands。 (console.dir
,或 console.error
,如果你愿意的话)
如果您真的想让原来的 console.log
再次工作,唯一的方法是 运行 在 页面代码 之前 =30=]s,这样就可以保存对函数的引用。例如,使用用户脚本:
// <metadata block...>
// @grant none
// ==/UserScript==
const origConsoleLog = console.log;
// set original window.console.log back to its original
// after the page loads
setTimeout(() => {
window.console.log = origConsoleLog;
}, 2000);
// there are more elegant but more complicated approaches too
CertainPerformance 已经解释了这是如何可能的以及抑制日志的原因似乎是什么。我将在这里展示另一种在原件丢失后取回 console.log
的方法。
document.body.appendChild(document.createElement('IFRAME')).onload = function () {
this.contentWindow.console.log('Hello, World!');
this.remove();
};
这基本上使用了来自临时 iframe 的旧方法 restoring global objects。
我可以为此 URL 打开 Chrome DevTools 控制台:https://www.google.com/ 并输入以下命令来打印“Hello world!”到控制台:
console.log("Hello world!")
但是,当我尝试对此 URL 使用相同的命令时:https://svc.mt.gov/dor/property/prc 我的消息没有打印在控制台中。这是为什么?
有什么方法可以强制控制台为这个 MT 网站工作吗?
我试过使用 python/selenium 打开页面并使用 execute_script() 发出命令,但这也没有用。
如果你这样做
console.dir(console.log)
并单击 [[FunctionLocation]]
,您将在站点的源代码中看到以下内容:
"Debug" != e && (window.console.log = function() {}
)
似乎是一种抑制生产日志记录的廉价(但懒惰?)方法。
修复它的一种方法是使用 one of the many other console commands。 (console.dir
,或 console.error
,如果你愿意的话)
如果您真的想让原来的 console.log
再次工作,唯一的方法是 运行 在 页面代码 之前 =30=]s,这样就可以保存对函数的引用。例如,使用用户脚本:
// <metadata block...>
// @grant none
// ==/UserScript==
const origConsoleLog = console.log;
// set original window.console.log back to its original
// after the page loads
setTimeout(() => {
window.console.log = origConsoleLog;
}, 2000);
// there are more elegant but more complicated approaches too
CertainPerformance 已经解释了这是如何可能的以及抑制日志的原因似乎是什么。我将在这里展示另一种在原件丢失后取回 console.log
的方法。
document.body.appendChild(document.createElement('IFRAME')).onload = function () {
this.contentWindow.console.log('Hello, World!');
this.remove();
};
这基本上使用了来自临时 iframe 的旧方法 restoring global objects。