2012-04-24 18 views
1

私は既に動作しているproxy.pacファイルを持っています。私はクライアントに、Webブラウザに応じて異なるproxyserverを使用したいと思います。PAC(プロキシ自動設定)navigator.appNameが利用できません

問題はありません。そこにブラウザの名前/バージョンを検出するために、そこに多くのJavaスクリプトスニペットがあります。

見つかったサンプルでは、​​すべて「navigator.appName」が使用されています。これを通常のウェブサイトでテストするとうまくいきます。私は私のproxy.pacに同じものを入れても動作しません。ナビゲータオブジェクトが存在しないようです。

ユーザーエージェントに応じてプロキシを切り替える方法を教えてください。

私の目標は、すべてのIE6が特定のプロキシを使用することです。残りの部分はデフォルトのプロキシを使用します。

背景:IE6は、デフォルトプロキシで使用されるKerberos認証をサポートしていません。したがって、私はLDAP認証を使用して追加のプロキシをセットアップしました。

ご協力いただきありがとうございます。

答えて

0

はたぶん例
if (typeof(someIESpecificFunction) != "undefined")
のために使用したり、tryおよびcatch
を使用するか、微妙なため、いくつかの組み込み関数の結果を比較し、いずれかが見つけることができますブラウザの間にいくつか小さいか、より微妙なjavascriptのエンジンの違いがあります差異

http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(ECMAScript)およびhttp://www.robertnyman.com/javascript/index.htmlは、開始に役立つでしょうか?

更新:もう一つのブラウザバージョン固有の動作:

http://technet.microsoft.com/en-us/library/dd361918.aspxから:

function FindProxyForURL(url, host) 
    { 
     if(weekdayRange("WED", "SAT", "GMT")) 
      return "PROXY proxy:80"; 
     else 
      return "DIRECT"; 
    } 

weekdayRange(< 1日目> [<曜日2 >] [、<GMT>])関数が返します現在のシステム時刻がパラメータで指定された範囲内にあるかどうかを確認します。<day1>,<day2>、および< GMT>最初のパラメータだけが必要です。 GMTパラメータは、現地時間帯ではなく、GMTで取得する時間を設定します。

機能が< 1日目> == < 2日目>と呼ばれるノート、以前のバージョンのInternet Explorerは、Netscape Navigatorとの結果と異なる結果をもたらすであろう。具体的には、以前のバージョンのInternet Explorerでは、この日の範囲が1週間として解釈され、Internet Explorer 6およびNetscape Navigatorでは1日と解釈されます。 たとえば、現在の日付が月曜日の場合、weekdayRange( "TUE"、 "TUE")の呼び出しはInternet Explorerの以前のバージョンではTRUE、Internet Explorer 6およびNetscape NavigatorではFALSEを返します。

アップデート2:http://blogs.msdn.com/b/wndp/archive/2006/07/18/ipv6-wpad-for-winhttp-and-wininet.aspxによると、1は古いIEのバージョン(例えばChromeについてここで言及のように、他のブラウザでは、と、これらの拡張をサポートしていない可能性があります。http://code.google.com/p/pactester/issues/detail?id=9)からも、IE7を区別することができるはず

これまでの情報に基づいて、IE 5.5、IE 6、IE 7、IE 8、IE 9を区別できるはずですか?

そのようなものが見つかった場合はお知らせください。

+0

ご返信が遅れました。私は解決策が見つからないため、適切に動作したため、回避策を講じました。私はブラウザにPHPのスクリプトproxy.phpを指しています。このスクリプトはユーザエージェントのヘッダーを解析し、ie6のproxy.pacと他のすべてのproxy.pacを送ります。 – casper

0

Conditional Compilationconst ifIE = /*@[email protected]*/false;でPACスクリプト内のIEを検出しようとするとよいでしょう。
条件付きコンパイルは、新規または古いIE/Edgeバージョンによって異なる場合があります。

私はこの回答をテストしていません。コメントで動作するかどうかお知らせください。

関連する問題