JQuery Mobile 在 UIWebView 中无法正常工作

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扩展名的内容从“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

我将获取Web视图内的文本:

enter image description here

我也尝试使用远程框架链接和旧版本的库进行测试,但没有成功。没有发生任何不同的情况。

enter image description here

我觉得很明显

$(document).ready(function(){

这段代码没有被Xcode注意或调用。
我想要实现的目标是:

enter image description here

我不知道还有什么可以测试。如果您有任何想法,我将非常感激。

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>

真不可思议,我花了这么多时间才找到这个。

现在它正常工作了。


我遇到了同样的问题,但是针对手风琴测试。你能帮我吗? - Gustavo Barbosa
这里发布的信息没有帮助到您吗?如果没有,您具体遇到了什么问题? - Juan González
3
除非在将文件添加到您的项目时勾选“创建文件夹引用”,否则不会出现这种情况。 - Miles
其中一个那种时刻... 哎呀。花了几个小时的时间沮丧地找出它是一个太明显的解决方案。 - K. Kilian Lindberg
如果您希望它与文件夹一起工作怎么办?您该怎么做?Miles的评论回答是唯一的方法吗? - Joseph Astrahan

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文件中并没有太大区别,但它使其更加模块化。祝编码愉快 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接