簡體   English   中英

為什么“console.log()”在這個網站上不起作用?

[英]Why doesn't "console.log()" work on this website?

我可以為此 URL: https://www.google.com/打開 Chrome DevTools 控制台,然后輸入以下命令將“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() {}
    )

似乎是一種抑制生產日志記錄的廉價(但懶惰?)方式。

修復它的一種方法是使用許多其他控制台命令之一 console.dirconsole.error ,如果你願意)

如果您真的希望原始的console.log再次工作,唯一的方法是在頁面代碼運行之前運行代碼,這樣您就可以保存對 function 的引用。 例如,使用用戶腳本:

// <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

某些性能已經解釋了這是怎么可能的,以及抑制日志的原因似乎是什么。 我將在這里展示另一種在原始文件丟失后取回console.log的方法。

document.body.appendChild(document.createElement('IFRAME')).onload = function () {
    this.contentWindow.console.log('Hello, World!');
    this.remove();
};

這基本上使用了從臨時 iframe恢復全局對象的舊方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM