我使用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