UIWebView loadHTMLString在iOS5中不起作用

也许这是类似于这个问题,没有任何反应: loadHTMLString不适用于iOS5?

我有一个UIWebView,我使用loadHTMLString填充:baseURL :. HTML是小而简单的,它引用了一个css样式表和一个javascript脚本,它们通过baseURL:来加载,该脚本被设置到应用程序包中的一个目录中。

// load the html NSString* filePath = [NSString stringWithFormat: @"%@/html", [[NSBundle mainBundle] resourcePath ] ]; [_pCurrentWebView loadHTMLString: html baseURL: [NSURL fileURLWithPath: filePath isDirectory: YES ] ]; 

这一直以来都是有效的,但在iOS5中已经崩溃了。 在iOS5中,UIWebView中不显示任何内容。 webview确实会提供所有预期的事件 – 例如,shouldLoadRequest,didStartLoad,didFinishLoad等

html有一个脚本标签,像这样:

 <script type="text/javascript" src="./myscript.js" /> 

如果我删除脚本标记,然后页面加载和iOS5罚款。 我可以告诉我,加载并应用与脚本.js文件相同的方式引用的css文件。

如果我保留脚本标记,但使myscript.js文件完全清空,它仍然无法加载。

对我来说,这似乎是某种跨站点脚本问题,因为WebView认为它应该禁止加载脚本(事实上,禁止呈现页面?)

不知道从哪里去。 想法?

UPDATE

这感觉越来越像一个跨站点脚本问题。 如果我删除它的标签,虽然sans脚本。 我所有的图像都是从baseURL加载的,就像我的样式表一样。 也就是说,我们知道baseURL正在工作。

如果我用我的脚本文件的实际内容replace标签,那么它的工作原理,所以问题不是脚本本身。

仍然在寻找确认和额外的想法来规避。 我不得不将脚本本身修补到html中,但这是我迄今为止最好的解决scheme。 或者我可以写html到文件系统,并通过loadRequest加载,但是,不是我的第一select。

更新2

感谢@djromero我有一个解决scheme。 我的文档是一个XHTML文档,因此使用了一个自我closures的脚本标签(没有内容,只是属性)。但是, loadHTMLString:baseURL:显然假设一个loadHTMLString:baseURL:text/html ,UIWebView显然现在解释更严格 – text/html文件,你可能没有自我closures标签。

我的解决scheme是切换到loadData:MIMEtype:baseURL:并指定application/xhtml+xml作为MIMEtypes。 我可以使用dataUsingEncoding:从我的NSString构造NSData。

我不是一个HTML标准专家,但是…您是否尝试closures<script>标记:

<script type="text/javascript" src="./myscript.js"> </script>
<script type="text/javascript" src="./myscript.js"> </script> 

它为我工作。

加载包含embedded式文件夹引用(例如“/file.js”)的HTML文件的方法是将其加载为URL而不是STRING。

 NSString *urlAddress = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"htm"]; NSURL *url = [NSURL fileURLWithPath:urlAddress]; NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; [webView loadRequest:requestObj]; 

我将它与引用的文件夹(未引用的文件)一起用于在Xcode中创build一个普通的网站结构,在embedded的index.htm文件中使用js /和css /和images / references,例如

 <script type="text/javascript" src="js/jquery-1.6.4.min.js"></script> 

UPDATE

我不认为在加载的HTMLstring中引用URI是正式的支持。 如果您必须使用string,则在将其加载到UIWebView之前,将所需的资源文件加载到string中。