如何解决iOS UIWebView DOM异常18的问题?

我的开发团队已经构建了一个成功的iOS通用应用程序,可以将复杂的
HTML5 Web应用程序同步到iPhone / iPad.应用程序从本地文件系统加载到UIWebView中.我们最近使用MessageUI.framework添加了应用内电子邮件.

一切都很顺利,直到我们的QA部门确定了一个用例,其中MailCompose类的实例化导致UIWebView抛出SECURITY_ERR:DOM Exception 18错误.这仅适用于iOS 4.2.1.当针对SDK 4.1构建并安装在运行iOS 4.1的设备上时,该应用程序正常运行.这个感觉就像是iOS 4.2错误,或iOS 4.2中出现的HTML5问题.

我正在寻找找到SECURITY_ERR的原因的技术:DOM异常18.我知道这个错误是某种类型的同源异常,但它没有意义,为什么它适用于4.1而不是4.2.为什么MailCompose类会导致问题?

任何帮助都将不胜感激!

最佳答案 请问如何从本地FS加载你的html源代码?

你的MailCompose类也做了什么,与加载到UIWebView中的文档进行交互?

如果要将html文件的内容读入字符串然后将其加载到UIWebView中,则必须更改它,然后使用file:// protocol加载它.

而不是将html源加载为字符串:

NSString *html = [NSString stringWithContentsOfFile:[path stringByAppendingString:@"path to the html file"] encoding:NSUTF8StringEncoding error:NULL]; 
[webView loadHTMLString:html baseURL:baseURL];

继续并通过NSURLRequest(file:// url)加载实际的html文件

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSURL *baseURL = [NSURL fileURLWithPath:[path stringByAppendingString:@"path and file name of the file"]]; 
NSURLRequest *request = [NSURLRequest requestWithURL:baseURL]; 
[webView loadRequest:request];

这样做可以访问window.localStorage,window.openDatabase和其他对象.

干杯

点赞