iOS UIWebView和javascript

iOS UIWebView和javascript

问题描述:

我有一个格式良好的html文件,我们称它为index.html。它在应用程序包中。该文件包含链接到CSS样式表和本地JavaScript文件。如果我使用iOS UIWebView和javascript

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

所有的JavaScript/CSS的项目在档案工作就好了。

然而,如果我读文件的内容转换成字符串(和更新字符串逃过“和/项),然后使用

[ourWebView loadHTMLString:HTMLString baseURL:nil]; 

的HTML标记被呈现,但没有任何的JavaScript/CSS被兑现或执行。

我甚至试图从已知的好文件读取,改写在Documents目录中另一个文件,然后使用的loadRequest加载它。这并不要么执行JavaScript。

上午我错过了明显的东西?

感谢, 肯

+0

我做到了这一点,以及和它仍然没有有所作为。 – macgeezer

+0

您需要传递的确切值取决于您的javascript/css文件在捆绑包中的位置。 – albertamg

+0

我在文档目录中创建了一个名为myDir的目录,其中包含所有JavaScript文件。然后这段代码 - 哪个不起作用NSString * documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0]; filePath = [documentsDirectory stringByAppendingFormat:@“myDir”]; NSURL * fileURL = [NSURL fileURLWithPath:filePath]; [self.ourWebView loadHTMLString:thisString baseURL:fileURL]; – macgeezer

(以上我的意见混搭)你声称:

的HTML标记被呈现,但没有任何的JavaScript/CSS的被尊敬或执行。使用

下面的代码:

[ourWebView loadHTMLString:HTMLString baseURL:nil]; 

您需要将相应的值传递给baseURL参数而不是nil。这个值取决于你的javascript/css文件在bundle中的位置。


后来,在评论,你说:

我已经创建了名为MYDIR的文件目录的目录,其中包含所有的JavaScript文件。

而且你已经修改了代码如下(从您的意见采取):

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
filePath=[documentsDirectory stringByAppendingFormat:@"myDir"]; 
NSURL *fileURL = [NSURL fileURLWithPath:filePath]; 
[self.ourWebView loadHTMLString:thisString baseURL:fileURL]; 

要创建的路径看起来不正确的方式。 NSString有许多使用路径的方法。使用它们。

替换:

filePath=[documentsDirectory stringByAppendingFormat:@"myDir"]; 

与此:

filePath=[documentsDirectory stringByAppendingPathComponent:@"myDir"];