Проблемы с веб-приложением для iOS с поддержкой Apple Mobile Mobile Web App - PullRequest
0 голосов
/ 17 февраля 2012

В настоящее время я пишу небольшое веб-приложение, используя Asp.net MVC и jQuery mobile.Все отлично отрисовывается в тестовой среде на рабочем столе и в браузере Safari на iPad.Однако, когда я добавляю <meta name="apple-mobile-web-app-capable" content="yes" /> к голове, я начинаю вести себя странно.

Вот начало моей простой тестовой страницы входа для объяснения ниже:

<%@ Page Title="Test App" Language="C#" Inherits="System.Web.Mvc.ViewPage<TestApp.ViewModels.LoginViewModel>" %>
<!DOCTYPE html> 
<html> 
<head runat="server"> 
<meta charset="UTF-8" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />  
<link rel="apple-touch-icon" sizes="72x72" href="../../../Content/Images/touch-icon-ipad.png" />
<!-- <link rel="apple-touch-startup-image" sizes="1024x748" href="../../../Content/Images/splash-screen-1024x748.png" />
<link rel="apple-touch-startup-image" sizes="768x1004" href="../../../Content/Images/splash-screen-768x1004.png" /> -->
<title>Test App</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
<script src="../../../Scripts/jquery.1.7.min.js" type="text/javascript"></script>
<script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js" type="text/javascript"></script>

<link rel="Stylesheet" href="../../../Content/jquery-mobile-fluid960.css" />
<link rel="Stylesheet" media="screen" href="../../../Content/mobile.css" />
<script type="text/javascript">
    function BlockMove(event) {
        // Tell Safari not to move the window
        event.preventDefault();
    }   
</script>
</head>
<body id="login" ontouchmove="BlockMove(event);"> 

Сначала Safari зависал каждый раз, когда я пытался загрузить значок «Главный экран» с яблоком-mobile-web-app-способен контент = "да", но не с контентом = "нет" или когда он отсутствовал.В ходе тестирования я обнаружил, что если я закомментировал заставки, Safari не потерпит крах, но загрузит какой-то странный код.Chrome для сафари исчез бы, как и предполагалось, но в тексте показывался бы только этот текст:

Test App function BlockMove(event) { // Tell Safari not to move the windowevent.preventDefault();} Mobile: Password:    

Это странно, потому что он перечисляет заголовок страницы и мой javascript из головы как обычный текст втело.Кроме того, не выполняется ни JavaScript, ни CSS (или так оно и выглядит).Это странное поведение, потому что, как я уже говорил ранее, оно отлично работает в обычном браузере iOS Safari или когда отсутствует поддержка apple-mobile-web-app или значение no.У меня есть несколько журналов сбоев Safari, которые я нашел, но из того, что я понимаю, я мало что могу сделать с теми, у кого нет источника.

Любое понимание того, почему это может происходить, будет высоко оценено, потому что я в растерянности.Я искал несколько дней, пытаясь найти кого-то с такой же проблемой, но безуспешно.Надеюсь, это что-то простое, что я пропускаю.Спасибо.

1 Ответ

1 голос
/ 20 февраля 2012

У меня та же проблема. До сих пор я был в состоянии определить, что строка пользовательского агента отличается при обычном доступе к веб-сайту и при обращении к нему как к приложению.

При обращении к приложению в строке пользовательского агента отсутствует информация, из-за которой страница отображается как браузер, ASP.NET не распознает и не имеет возможностей, включая JavaScript. Это приводит к поведению, которое вы видите.

Я нашел эту ссылку, которая предоставляет решение, хотя я пока не смог заставить его работать на меня.

http://blog.lavablast.com/post/2011/05/29/Gotcha-iPad-versus-ASPNET.aspx

...