2010-07-22 64 views
0

我有一個帶有垂直子菜單的水平asp.NET菜單,它有另一個垂直子菜單。問題是,在Chrome中(在FF和IE中工作正常),當定義PopOutImageUrl時,當我將鼠標懸停在第一個垂直子菜單上時,它會擴展到屏幕的一半。我清除了PopOutImageUrl,這是正確的大小,但我沒有注意到第二個子菜單。那麼我怎樣才能保持我的箭頭圖像,而不會在菜單中覆蓋我的屏幕?在定義PopOutImageUrl時在Chrome中過度擴展的Asp.NET菜單

<asp:MenuItem NavigateUrl="TestPage.aspx" Text="HorizontalMenuItem" PopOutImageUrl="" SeparatorImageUrl="SeperatorImage.png"> 
    <asp:MenuItem NavigateUrl="TestPage2.aspx" Text="Test1" PopOutImageUrl="arrow.png" SeparatorImageUrl="" > 
     <asp:MenuItem NavigateUrl="TestPage3.aspx" Text="SubTest1" PopOutImageUrl=""> 
     </asp:MenuItem> 
    </asp:MenuItem> 
</asp:MenuItem> 

回答

0

我剛剛工作的一個類似的問題在我的菜單顯示旁邊的每個靜態項目字Expand甚至不會顯示我的子菜單中的動態項目......真的很爛。儘管我很高興,但我找到了一個解決方案。

ASP.NET呈現控件以與舊版瀏覽器向後兼容。這意味着有時候不管我們在我們的代碼中做什麼,都不會解決它。 基本上,這裏可能發生的事情是,ASP.NET將Chrome瀏覽器誤認爲其他對Menu控件沒有很大支持並且渲染錯誤的瀏覽器。

我做了什麼來解決它有兩部分。我不確定是否需要全部應用它們,或者不需要修復工作,但我的菜單現在完全按照我的要求顯示(除了需要使用CSS進行一些調整外)。

希望這有助於:

步驟1:這個添加到代碼文件爲您的母版頁

[VB] 
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) 
    If Request.ServerVariables("HTTP_USER_AGENT").IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) <> -1 Then 
     Page.ClientTarget = "uplevel" 
    End If 
    If Request.UserAgent.Contains("AppleWebKit") Then 
     Request.Browser.Adapters.Clear() 
    End If 
End Sub 

第2步:創建一個新的瀏覽器文件
1.創建在您的網站中新建App_Browsers文件夾
2.向文件夾中添加一個新的瀏覽器文件並將其命名爲Chrome.browsers
3.註釋掉所有默認的東西,並添加以下內容:

<browsers> 
    <browser refID="safari1plus"> 
     <controlAdapters> 
      <adapter controlType="System.Web.UI.WebControls.Menu" adapterType="" /> 
     </controlAdapters> 
    </browser> 
</browsers> 
0

步驟1,對自己沒有工作,和步驟2用「ID爲‘safari1plus’瀏覽器或網關元素出錯不能發現「

0

主頁最終出現錯誤,因爲它沒有名爲PreInit的事件。因此,添加瀏覽器文件並將以下代碼添加到您的主頁的Page_Load事件中:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Request.UserAgent.IndexOf("AppleWebKit") > 0 Then 
      Request.Browser.Adapters.Clear() 
     End If 
     Dim j As String = Page.Request.ServerVariables("http_user_agent").ToLower() 
     If j.Contains("safari") Or j.Contains("chrome") Then 
      Page.ClientTarget = "uplevel" 
     End If 
     If Request.ServerVariables("HTTP_USER_AGENT").IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) <> -1 Then 
      Page.ClientTarget = "uplevel" 
     End If 
End Sub 
+0

剛纔看到了這一點。沒有錯誤,但根本沒有幫助。 – thchaver 2011-05-11 19:14:43