Я создал приложение MVC3, используя jQuery Mobile, который имеет представление с несколькими мобильными страницами jQuery, вложенными в список, подобный следующему.
Главная страница
<div data-role="page" id="main">
<ul data-role="listview" id="main" data-divider-theme="a">
<li>
<a href="#page1">Page 1</a>
</li>
<li>
<a href="#page2">Page 2</a>
</li>
</ul>
</div>
Другие страницы
<div data-role="page" id="page1">
....
</div>
Я также создал приложение PhoneGapp, которое предлагает некоторый офлайн-контент, который имеет простое меню кнопок, которое направляет на мой внешний MVC-сайт.
<div data-role="page" id="mainMenu">
<div data-role="content">
<ul class="buttonMenu">
<li>
<a href="http://www.thisismymvcsite.com" data-role="button">
<img src="mvcsite.png" alt="MVC Site" />
<span>MVC Site</span> </a></li>
</ul>
</div>
</div>
Теперь, когда я использую внешний хостЯ добавил домен в файл PhoneGap.plist, например *.thisismymvcsite.*
, чтобы включить подстановочные знаки для поддоменов.
Проблема
Когда я загружаю приложение PhoneGapвсе ведет себя правильно, я даже могу перейти на свой внешний сайт, и PhoneGap загружает контент в окне приложения.Проблема, с которой я сталкиваюсь, заключается в том, что, когда я нажимаю на <a href="#page1">Page 1</a>
, происходит переход на другую страницу в PhoneGap, НО также порождает окно в Safari, как будто я перехожу на внешний хост, который не настроен.Когда я возвращаюсь в приложение, я вижу, что загружена правильная страница jQuery Mobile, и если я пытаюсь вернуться к #mainPage
, то же самое происходит снова.
Я обошел эту проблему, изменив файл AppDelegate.в XCode для обнаружения #
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *absoluteUrl = [[request URL]absoluteString];
NSRange range = [absoluteUrl rangeOfString:@"#" options:NSCaseInsensitiveSearch];
if( range.location != NSNotFound ) {
return YES;
}
return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];
}
Вопрос Моя хакерская работа работает, однако должно быть что-то, чего мне не хватает, есть что-то, что я делаю неправильно, что вызывает этостранное поведение?
Примечание: я использую последнюю версию PhoneGap 1.1 и jQuery Mobile 1 RC2