JQuery Mobile在UIWebView中无法正常工作

时间:2012-05-01 04:16:47

标签: ios xcode jquery-mobile uiwebview fusioncharts

经过几个小时的寻找解决方案并尝试不同的方法来解决这个问题,我来到这里,我正在使用JQuery Mobile和我的iPad应用程序。

我要做的是使用Fusion Charts的报告应用程序。我已经使用不同的方法在Web视图(UIWebView)中成功呈现了图表,并且遵循了不同的示例,但我现在要做的是使用JQuery Mobile框架完成相同的任务。

使用phonegap,我已按照有关JQuery Mobile + Xcode集成的信件的步骤(我认为)。我的桌面和移动浏览器(iPad,iPhone 4和iPod Touch 2G)上的图表加载没有问题,但是他们无法在我的UIWebView中加载(即使我使用相同的代码)。

这就是我正在做的事情:

1)将所需文件(JS,CSS和HTML)添加到项目中以在本地使用它们。添加它们后,我将.js扩展名从“Compile Sources”移动到“Copy Bundle Resources”。它看起来像这样:

enter image description here

enter image description here

2)将我的HTML测试文件(page_A1.html)加载到Web视图中:

enter image description here

3)检查HTML文件上的所有内容是否都设置了正确的路径和最新版本的框架:

enter image description here

4)构建并运行仅获取空白Web视图。

如果我使用以下警告测试Javascript:

enter image description here

它将显示证明Javascript正在运行的警报:

enter image description here

如果我在应该显示图表的容器上放置一些文字:

enter image description here

我将在网络视图中获取文字:

enter image description here

我还测试了远程框架链接,而不是本地版本和旧版本的库,没有运气。没有什么不同的事情发生:

enter image description here

对我来说似乎很明显

$(document).ready(function(){

未被xcode注意或调用。

这就是我想要完成的事情:

enter image description here

我不知道还有什么可以测试。如果你有任何想法,我会感激不尽。

2 个答案:

答案 0 :(得分:10)

没关系。我终于明白了。

网络开发时期的一些旧习惯在这里扮演了我的角色。

结果表明,您不必为CSS和JS文件指定内部目录结构,所以:

<link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css" />

<script src="js/jquery-1.7.2.min.js"></script>

<script src="js/jquery.mobile-1.1.0.min.js"></script>
在Xcode中,shoudl确实如此:

<link rel="stylesheet" href="jquery.mobile-1.1.0.min.css" />

<script src="jquery-1.7.2.min.js"></script>

<script src="jquery.mobile-1.1.0.min.js"></script>

令人难以置信的是我花了多少时间才找到它。

现在它正在运作。

答案 1 :(得分:4)

正确的方法是在String中加载JS文件并调用UIWebView的[stringByEvaluatingJavascriptFromString:@“Javascript here ...”]方法。

 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"content" ofType:@"js" inDirectory:@""];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];

[webView stringByEvaluatingJavaScriptFromString:jsString];

虽然这并没有太大的不同,然后将它们硬编码到html文件中,它确实模块化了更多。快乐编码:)