Неисправное поведение в PhoneGap и jQueryMobile со ссылками на другие мобильные страницы jQuery - PullRequest
1 голос
/ 02 ноября 2011

Я создал приложение 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

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