Как устранить неполадки iOS UIWebView DOM Exception 18? - PullRequest
4 голосов
/ 13 января 2011

Моя команда разработчиков создала успешное универсальное приложение для iOS, которое синхронизирует сложные веб-приложения HTML5 с iPhone / iPad. Приложения загружаются в UIWebView из локальной файловой системы. Недавно мы добавили электронную почту в приложении, используя MessageUI.framework.

Все шло нормально, пока наш отдел контроля качества не определил случай использования, когда создание экземпляра класса MailCompose заставляет UIWebView вызвать ошибку SECURITY_ERR: DOM Exception 18 Это происходит ТОЛЬКО на iOS 4.2.1. Приложение работает нормально при сборке с SDK 4.1 и установке на устройстве под управлением iOS 4.1. Это похоже на ошибку iOS 4.2 или проблему HTML5, появившуюся в iOS 4.2.

Я ищу способы найти причину SECURITY_ERR: DOM Exception 18. Я знаю, что эта ошибка является исключением того же происхождения, но не имеет смысла, почему она работает на 4.1, а не на 4.2 , И почему класс MailCompose вызывает проблему?

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 18 января 2011

Могу ли я спросить, как вы загружаете свой источник HTML из локальной FS?Кроме того, что делает ваш 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];

Перейтивперед и загрузите фактический html-файл через NSURLRequest (file: // url)

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 и другим объектам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...