0

編輯:這個問題已經變得無關緊要,因爲我發現setRequestHeader技術在v18和v19上均可使用。 http://code.google.com/p/chromium/issues/detail?id=123150#c39上的海報似乎是不正確的說這種方法不適用於v18 - 它的確如此。當我被允許時,我會在8小時內更新這個答案!沒有使用window.navigator.appVersion檢測Chrome的版本


我使用的Chrome擴展是一個自動測試工具。它已經覆蓋了用戶代理(在啓動chrome時通過命令行),所以我不能再使用appVersion查看chrome的版本。

有一些其他的方式來檢測在Javascript的Chrome版本?

背景:我使用XMLHTTP請求的基本認證保護的頁面。

取決於V18 V19或+我現在必須採取不同的行動,谷歌在V19的URL(見http://code.google.com/p/chromium/issues/detail?id=123150#c39)去除的嵌入基本身份驗證。

這是一個自動的腳本,所以我不會在那裏輸入用戶名或密碼,但他們都知道的腳本。

if (v18_or_earlier) 
{ 
    xmlhttp.open("POST", url, true, http_basic_username, http_basic_password) ; 
} 
else //v19+ 
{ 
    xmlhttp.open("POST", get_upload_url(), true); 
    var auth_header = "Basic " + Base64.encode(http_basic_username + ":" + http_basic_password) ; 
    xmlhttp.setRequestHeader("Authorization", auth_header) ; 
} 
xmlhttp.send(post_body) ; 

回答

0

會是這樣的工作?

<script> 
function chrome_version(version) { 
    if (version < 18) { 
    xmlhttp.open("POST", get_upload_url(), true); 
    var auth_header = "Basic " + Base64.encode(http_basic_username + ":" + http_basic_password) ; 
    xmlhttp.setRequestHeader("Authorization", auth_header) ; 
    } else { 
    # Maybe do framebusting or... 
    xmlhttp.open("POST", url, true, http_basic_username, http_basic_password) ; 
    }  
} 
</script> 
<iframe src="http://user:[email protected]" 
     onload="chrome_version(18)" 
     onerror="chrome_version(19)"> 
</iframe>