0

編集: setRequestHeader 手法が v18 と v19 の両方で機能することを発見したため、質問は無関係になりました。http://code.google.com/p/chromium/issues/detail?id=123150#c39のポスターは、この方法が v18 では機能しないと言って間違っているようです。許可されたら、8時間以内にこの回答で更新します!


自動テスト ツールである Chrome 拡張機能を使用しています。ユーザー エージェントを (Chrome の起動時にコマンド ラインで) オーバーライドしたため、appVersion を使用して Chrome のバージョンを確認できなくなりました。

Javascript でクロムのバージョンを検出する他の方法はありますか?

背景: xmlhttp を使用して、基本認証で保護されたページを要求しています。

Google が v19 で URL に埋め込まれた基本認証を削除したため、v18 または v19+ に応じて異なるアクションを実行する必要があります ( 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) ;
4

1 に答える 1

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:pass@example.org"  
        onload="chrome_version(18)"  
        onerror="chrome_version(19)">  
</iframe> 
于 2012-05-21T12:47:17.493 に答える