PhoneGap和jQueryMobile中的行为破坏,其中包含指向其他jQuery Mobile Pages的链接

时间:2011-11-02 12:33:32

标签: ios jquery-mobile cordova

我使用jQuery Mobile创建了一个MVC3应用程序,该应用程序的视图包含多个嵌套在以下列表中的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,同样的事情会再次发生。

我通过在XCode中更改AppDelegate文件以检测#

来解决此问题
- (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

0 个答案:

没有答案