12

在寻找解决方案并尝试不同的方法来解决我在使用 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 扩展名的所有内容从“编译源”移动到“复制捆绑资源”。它看起来像这样:

在此处输入图像描述

在此处输入图像描述

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

在此处输入图像描述

3) 检查 HTML 文件中是否设置了正确路径和最新版本的框架:

在此处输入图像描述

4) Build and Run 只是为了得到一个空白的 web 视图。

如果我用这样的警报测试 Javascript:

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

我将在 web 视图中获取文本:

在此处输入图像描述

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

在此处输入图像描述

对我来说似乎很明显

$(document).ready(function(){

没有被 xcode 注意到或调用。

这就是我想要完成的:

在此处输入图像描述

我不知道还要测试什么。如果您有任何想法,我将不胜感激。

4

2 回答 2

10

没关系的家伙。我终于明白了。

Web 开发时代的一些旧习惯在这里扮演了我的角色。

事实证明,您不必为 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 中应该是这样的:

<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>

难以置信我花了多少时间才发现这一点。

现在它正在工作。

于 2012-05-01T12:18:44.753 回答
4

正确的做法是将 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 文件中没有太大区别,但它确实将其模块化得更多。快乐编码:)

于 2012-08-07T20:37:36.287 回答