我的开发团队已经构建了一个成功的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类会导致问题?
任何帮助都将非常感谢!
答案 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和其他对象。
干杯