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

时间:2011-01-13 01:00:32

标签: exception dom ios html5 uiwebview

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

在我们的QA部门确定一个用例之前,一切都很顺利,其中MailCompose类的实例化导致UIWebView抛出SECURITY_ERR:DOM异常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类会导致问题?

任何帮助都将非常感谢!

1 个答案:

答案 0 :(得分:2)

我可以问你如何从本地FS加载你的html源代码? 您的 MailCompose 类也可以与加载到UIWebView中的文档进行交互?

如果您正在将html文件的内容读入字符串然后将其加载到UIWebView中,则必须更改它,并使用file://协议加载它。

而不是将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和其他对象。

干杯