Exception 如何解决iOS UIWebView DOM异常18?

Exception 如何解决iOS UIWebView DOM异常18?,exception,dom,ios,html,uiwebview,Exception,Dom,Ios,Html,Uiwebview,我的开发团队已经成功构建了一个iOS通用应用程序,它将复杂的HTML5网络应用程序与iPhone/iPad同步。这些应用程序从本地文件系统加载到UIWebView中。我们最近使用MessageUI.framework添加了应用内电子邮件 一切都很顺利,直到我们的QA部门确定了一个用例,其中MailCompose类的实例化导致UIWebView抛出一个SECURITY_ERR:DOM Exception 18错误。这仅在iOS 4.2.1上发生。当该应用程序根据SDK 4.1构建并安装在运行iOS

我的开发团队已经成功构建了一个iOS通用应用程序,它将复杂的HTML5网络应用程序与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的bug,或者是iOS 4.2中出现的HTML5问题

我正在寻找技术来找出安全性错误的原因:DOM异常18。我知道这个错误是某种类型的同源异常,但是为什么它在4.1上工作而不是在4.2上工作是没有意义的。为什么MailCompose类会导致这个问题


任何帮助都将不胜感激

请问如何从本地FS加载html源代码? 您的MailCompose类做什么来与加载到UIWebView中的文档交互

如果要将html文件的内容读入字符串,然后将其加载到UIWebView,则必须对其进行更改,然后使用
文件://
协议加载

不要将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文件

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


干杯

事实上,我正在按照您的建议加载带有NSURLRequest的HTML。我们已经在广泛使用window.localStorage和window.openDatabase。我现在可以通过在显示MailCompose操作表之前从内存中完全删除UIViewController和UIWebView来避免DOM异常。但我始终无法确定DOM异常发生的原因。顺便说一句,MailCompose是MessageUI.framework和MFMailComposeViewController的一部分。谢谢,通过NSURLRequest加载页面解决了这一问题。你能破解这种情况吗?我面临同样的问题吗?
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];