Расширение меню Asp.NET в Chrome, когда задан PopOutImageUrl - PullRequest
0 голосов
/ 22 июля 2010

У меня есть горизонтальное меню asp.NET с вертикальным подменю, которое имеет другое вертикальное подменю.Проблема в том, что в Chrome (отлично работает в FF и IE), когда определен PopOutImageUrl, когда я наведу курсор на 1-е вертикальное подменю, он расширяется до половины экрана.Я очищаю PopOutImageUrl, и это правильный размер, но я не замечаю 2-го подменю.Так как же сохранить изображение стрелки, не закрывая экран в меню?

<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>

Ответы [ 3 ]

0 голосов
/ 31 августа 2010

Шаг 1, сам по себе, не сработал, и шаг 2 с ошибкой: «Не удается найти элемент браузера или шлюза с идентификатором 'safari1plus'"

0 голосов
/ 29 сентября 2010

Мастер-страница заканчивается с ошибкой, потому что она не имеет и событие с именем 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 голосов
/ 30 августа 2010

Я только что работал над аналогичной проблемой, когда мое меню показывает слово Expand рядом с каждым статическим элементом и даже не отображает динамические элементы для моего подменю ... Действительно отстой. К счастью, я нашел решение.

ASP.NET отображает элементы управления для обратной совместимости со старыми браузерами. Это означает, что иногда независимо от того, что мы делаем в нашем коде, ничто не исправит это. В основном, вероятно, здесь происходит то, что ASP.NET принимает Chrome за другой браузер, который не имеет большой поддержки элемента управления Menu и неправильно его отображает.

То, что я сделал, чтобы исправить это, состоит из 2 частей. Я не уверен, нужно ли вам применять их все или нет для исправления, но мое меню теперь отображается именно так, как я хочу (за исключением нескольких настроек, которые мне нужно сделать с помощью 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...