我懷疑有些用戶有工具欄,插件,惡意軟件或其他東西,它們在訪問我們的網站時在其瀏覽器中運行一些JavaScript,並且這個JavaScript會搞亂我們頁面上的功能。顯示加載了哪些腳本
我的JavaScript可以看到哪些JavaScripts已經從其他文件,即通過http://some.site/script.js'>加載?
我懷疑有些用戶有工具欄,插件,惡意軟件或其他東西,它們在訪問我們的網站時在其瀏覽器中運行一些JavaScript,並且這個JavaScript會搞亂我們頁面上的功能。顯示加載了哪些腳本
我的JavaScript可以看到哪些JavaScripts已經從其他文件,即通過http://some.site/script.js'>加載?
在瀏覽器上打開開發者工具(通常使用F12)。然後檢查網絡部分/選項卡,它將列出加載到當前文檔中的所有資源。
如果您想查找由頁面加載的腳本,但無法訪問開發工具,則可以在DOM中搜索腳本標記。這隻會找到由DOM加載的腳本(這是非常典型的)。但是它不會查找通過xhr請求加載的腳本,然後進行評估,並且它不會查找由瀏覽器擴展加載的腳本。
但是,這可能對你有所幫助。你可以這樣做:
console.log(window.document.getElementsByTagName("script"))
這會將所有加載的腳本記錄到控制檯。或者,您可以在客戶端進行分析,並在出現可疑情況時彈出明亮的大警告消息。
要拍攝其他類型的請求,你也許能包裝添加到XHR發送方法,像這樣:
XMLHttpRequest.prototype.send = function() {
// do some checking of the request
// do the actual request
this.send();
}
我還沒有試過,所以可能有一些注意事項,比如我不確定是否所有瀏覽器引擎都允許您重新定義內置類型的方法。但值得嘗試。
你的問題很有趣,但動機是錯誤的,國際海事組織。是什麼讓你相信「某些東西」正在搞亂你的JavaScript?你能重現這個問題嗎?即使某種bookmarklet正在破壞全局JavaScript代碼,您(作爲開發人員)也能夠檢查正確的功能並在需要時進行polyfill填充。
如果你仔細看看你的代碼,以及它爲什麼沒有達到你的期望,我希望你會發現惡意軟件/工具欄/插件是沒有責任的。
隔離失敗並重現行爲的代碼。
我認爲@LeifNeland想在遠程機器上找到腳本。只有當您坐在正在檢查的機器上時,您的答案纔有效。 – 2013-04-04 19:49:45
應該在服務器端檢測到,或者在客戶瀏覽器中顯示。 「嘿,我們的商店無法正常工作,因爲您的瀏覽器受到www.superfish.com的惡意軟件感染,這個惡意軟件將會被xxxx,請執行yyy以消除感染。」 – 2013-04-04 19:50:21
所以你首先必須找出罪魁禍首,然後添加一些js來檢測他們正在做的改變。 – bfavaretto 2013-04-04 19:55:45