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。
上午我错过了明显的东西?
感谢, 肯
答
(以上我的意见混搭)你声称:
的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"];
我做到了这一点,以及和它仍然没有有所作为。 – macgeezer
您需要传递的确切值取决于您的javascript/css文件在捆绑包中的位置。 – albertamg
我在文档目录中创建了一个名为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