在webview中加载.js文件的问题

时间:2011-01-04 06:57:35

标签: javascript iphone objective-c uiwebview

我只是在我的webview中加载本地html文件。这个html文件还提供了本地存储的.js文件。 webview正确加载html文件,但不响应.js文件中定义的javascript函数。这就是我加载本地html文件的方式。

[aWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];

请注意,我已删除了警告

warning: no rule to process file '$(PROJECT_DIR)/html/orientation.js' of type sourcecode.javascript for architecture i386

但它仍然没有成功。请帮忙。 谢谢 劳拉

3 个答案:

答案 0 :(得分:2)

由于 .js 文件是源代码文件,Xcode不知道是编译它还是包含在bundle资源中不变。如果您在html代码中链接外部 .js 文件,这里是如何强制它们包含在资源中,以便可以从html加载它们。

  1. Xcode< 4.0:在左侧窗格中查看,展开目标并将 .js 文件拖到复制包资源中。建立。
  2. Xcode> = 4.0:在左侧窗格中选择您的项目。选择目标。展开复制捆绑包资源并将 .js 文件拖到将要发生的列表中。建立。
  3. 要检查捆绑包中是否包含.js文件,请转到项目的构建文件夹,右键单击它并选择查看内容。如果一切顺利,你应该在那里看到它们。

答案 1 :(得分:0)

这也让我疯了。在尝试了一些事情之后,我就是为了让它发挥作用而做的:

NSString *root = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
NSString *filePath1 = [[NSBundle mainBundle] pathForResource:@"Player.js" ofType:@"txt"];
NSData *htmlData1 = [NSData dataWithContentsOfFile:filePath1];

[[NSFileManager defaultManager] createFileAtPath:[NSString stringWithFormat:@"%@/Player.js", root] 
                                        contents:htmlData1
                                      attributes:nil];

无论出于何种原因,.JS扩展似乎存在问题。所以你要做的是使用不同类型的扩展(在我的例子中,我使用.js.txt)并将其保存到.html可以找到它的位置。

希望这有帮助!我希望听到一个更有效的解决方案,或者听听为什么.js文件不起作用。

答案 2 :(得分:0)

在XCode 4中,确保.js-File包含在“Copy Bundle Ressources”列表中是不够的,它也不能包含在“Compile Sources”列表中,默认情况下也是如此。< / p>

我实现它的方法是手动将XCode中的文件类型设置为“纯文本”