2009-03-16 2 views
1

私は、サファリとasp:menuコントロールのレンダリングの問題を解決するために、マスターページのcsファイルで次のコードを使用しました。なぜそれが実際に問題を解決するのか不思議でした。addedcontrolメソッドを使ってsafari/asp:menuの問題を修正しました。なぜこれは機能しますか?

protected override void AddedControl(Control control, int index) 
{ 
    if (Request.ServerVariables["http_user_agent"].IndexOf("Safari", 
     StringComparison.CurrentCultureIgnoreCase) != -1) 

    this.Page.ClientTarget = "uplevel"; 

    base.AddedControl(control, index); 

}

答えて

2

問題はASP.NETが誤って「ダウンレベル」ブラウザ(例えば古代)としてサファリを認識することである:ここでは、コードです。あなたの修正は、それをメニューのJavaScriptのいくつかを扱うことができるより現代的なブラウザとして認識させるものです。

これは、Page_PreInitを上書きするか、適切に設定されたsafari.browserをApp_Browsersに追加するなどの他の手法によっても機能します。

+0

asp.netがSafariを「下位レベル」のブラウザとして認識する理由は何ですか? Microsoftは何を考えていましたか? – Xaisoft

+0

私は特定の状況でasp:menuがSafariの古いバージョンを実際にクラッシュさせるというウェブを読んだ。だからおそらくそれが理由です。 – Keltex

関連する問題