2010-08-26 35 views
0

HI全部,如何禁用特定的JavaScript對象

有沒有辦法禁用特定的JavaScript對象,而所有其他JS對象都可用於執行?像頂部行中的一個腳本,用於控制頁面上其餘的JS代碼。

例如,我想阻止navigator.userAgent執行,並且可以使用navigator.appVersion。或者更先進的方式,執行結果必須由我定義。比方說,我的瀏覽器是FF 3.6.8但navigator.userAgent將利潤歸還IE 8.0

主要是我很感興趣的禁用或替代對象的結果提前返回有關用戶瀏覽器,餅乾,分辨率和OS

感謝信息。 Jevgenijs

+0

我很確定Crockford說要使用JavaScript來代替Good,而不是Evil。你能否澄清爲什麼這是第一個,而不是第二個? – 2010-08-26 10:40:09

+1

這裏不是州法院:) – 2010-08-31 06:53:28

回答

0

我不知道你爲什麼會想這樣做,但你可以僅僅通過聲明一個變量,在全球範圍內的同名覆蓋窗口對象的任何屬性和方法:

var navigator = { 
    userAgent: "", 
    appVersion: navigator.appVersion, 
    // etc... 
} 

alert(window.navigator.userAgent); 
//-> "" 
+1

如果瀏覽器允許你(例如FF3.6)。無論如何,這聽起來像是一個非常非常糟糕的主意。不同的瀏覽器具有不同的JavaScript功能,如果您欺騙腳本以期望使用其他瀏覽器,那麼它很可能會調用瀏覽器實際無法理解的JS命令。 – Tgr 2010-08-26 08:22:06

+0

@Tgr:事實並非如此,Firefox 3.6和所有瀏覽器都允許您聲明任何將覆蓋窗口對象屬性*窗口*的全局變量。另外,應該編寫腳本以運行功能檢測,而不是瀏覽器檢測。檢測一個函數是否存在,而不是使用不支持該函數的瀏覽器更合適。雖然我同意你的看法,但我認爲這不是一個好主意,但是這是因爲我不明白爲什麼有必要這麼做。 – 2010-08-26 08:28:23

+0

好,其目的是防止Google產品/機器人收集/分析這些數據。最有可能的是用JS收集它。可能是我採取了錯誤的方法,但到目前爲止,這是我腦海中唯一的想法。 – 2010-08-26 13:24:32

0

@All:我添加了下面的user.js文件(link text),它有幫助。現在我的FF瀏覽器和操作系統類型都不會被任何網站識別,即使是那些通過像iframe一樣通過iframe顯示的類型。

user_pref("general.useragent.appName", "replacement string for appNameCode"); 
user_pref("general.appname.override", "replacement string for appName"); 
user_pref("general.useragent.override", "replacement string for userAgent"); 
user_pref("general.appversion.override", "replacement string for appVersion"); 
user_pref("general.platform.override", "replacement string for Platform"); 

現在留給覆蓋以下screen.width, screen.heigh, screen.colorDepth但這些對象似乎無法通過user.js的文件被覆蓋。

到目前爲止,只有一個念頭: ...最有可能FireFox的JS引擎從OS取回這些值,所以我需要知道什麼時候我需要哪些文件在Linux操作系統(Ubuntu的)存儲這些值,並臨時改變它。對於任何WIN操作系統,由於它將所有內容都存儲在該死的註冊表中,所以它會變得更加困難。我對嗎 ?

還有什麼想法?

Regards

相關問題