Chrome на iPad не работает с ASP.NET 4

Я только что загрузил Google Chrome для iPad, и я заметил, что он не работает с веб-сайтами ASP.NET 4.

Например, создайте простую страницу:

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Protected Sub LinkButton1_Click(sender As Object, e As System.EventArgs)
    Response.Write("Link button was clicked")
End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
    </div>
    </form>
</body>
</html>

Теперь попробуйте нажать кнопку "Ссылка", но она не запускает событие postback.

Я не могу отлаживать, потому что нет javascript-консоли, чтобы узнать, что происходит.

!! UPDATE!!

Я обнаружил, что вам нужно выбрать Запрос рабочего сайта в раскрывающемся меню настроек в Chrome, чтобы заставить его работать.

!! UPDATE!!

ASP.NET не распознает самые последние версии некоторых браузеров и, следовательно, будет относиться к ним как к низкоуровневым браузерам. (В принципе: нет JavaScript.) Исправление состоит в том, чтобы получить обновленные файлы определения браузера.

Где мы можем получить обновленный файл определения браузера для Chrome?

Ответ 1

У меня возникла такая же проблема. Большинство из них отлично работают на моей странице, только несколько элементов, которые были изменены на стороне клиента, отображаются неправильно.

Я просмотрел файлы заголовков, которые возвращаются из каждого браузера на ipad, и обнаружил, что в режиме Chrome в рабочем режиме он просто притворялся Mac Box, посылая в заголовке следующее: Mozilla/5.0 + (Macintosh; + Intel + Mac OS + + X + 10_7_3) + AppleWebKit/534.53.11 + (KHTML, + как + Gecko) + версия /5.1.3 + Safari/534.53.10

и когда он находится в стандартном режиме, он воспринимает следующее в заголовке: Mozilla/5.0 + (IPAD + CPU + OS + 6_0 + как + Mac OS + + X) + AppleWebKit/534.46.0 + (KHTML, + как + Gecko) + CriOS/21.0.1180.82 + Мобильный /10A403 + Сафари /7534.48.3

Я попытался добавить новый браузер в свой каталог "app_browsers", скопировав "хром" и переименовав его в "chromeios", и заменив "хром" useragent внутри CriOS. Это ничего не делало, и я даже не уверен, что файлы в каталоге "app_Browsers" ничего не делают.

Что, когда я столкнулся с этим вопросом. Ответы, предложенные пользователями vamshik и Jay Douglass, когда они вместе работали для меня.

Однако Джей был неправильным в том, что у него неправильный агент пользователя (он должен быть "крио" ).

Пользователь geo1701, однако, жаловался на добавление этого на каждую страницу. Это легко сделать, создав класс, наследующий System.Web.UI.Page, а затем добавьте выше код с событием "protected void Page_PreInit", а затем замените наследование на каждой веб-странице новым классом. Затем, если вам нужно добавить что-то, что необходимо на каждой странице, у вас есть этот класс, чтобы добавить его тоже.

Мне также интересно, есть ли способ добавить его в класс global.asax? но я не думаю, что...

Ищем лучшее решение. Если я найду его, я обновлю.

Нашли следующие похожие сообщения:

Chrome для пользовательского агента iOS на iPad

Веб-формы ASP.NET не отображают функцию обратной передачи JavaScript для Chrome/iOS

UPDATE Я нашел этот Скоттом Хансельманом. Пока он говорит о куках, я думаю, что его предложения могут отправить нас в правильном направлении.

OK! ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ!!!

После установки .NET Framework 4.5 и удаления файлов из моего каталога app_browsers работает Chrome на моем iPad. Я просмотрел записи в новых файлах .Browser, предоставленных .net 4.5, и не было ничего примечательного, поэтому я предполагаю, что было еще немного обновления для файлов .browser.

.Net framework 4.5 можно скачать здесь

Ответ 2

ASP.NET может неправильно обнаруживать Chrome на iPad как "нисходящий" браузер, который не поддерживает JavaScript. ASP.NET использует строку пользовательского агента для определения браузеров уровня ниже. Чтобы заставить Chrome быть обнаруженным в качестве браузера "уровня вверх", вы можете сделать это:

protected void Page_PreInit(object sender, EventArgs e)
{
    if (Request.UserAgent != null && Request.UserAgent.IndexOf("chrome", StringComparison.OrdinalIgnoreCase) > -1)
    {
        this.ClientTarget = "uplevel";
    }
}

Ответ 3

Ниже работал у меня...

if (Request.UserAgent != null && Request.UserAgent.IndexOf("crios", StringComparison.OrdinalIgnoreCase) > -1)
{
    this.ClientTarget = "uplevel";
}

Ответ 4

Вероятно, ASP.NET создает неверную страницу.

Я не знаю об iPhone, но версия Android имеет Удаленная отладка. Вы можете попробовать проверить страницу там.