2015-10-19 5 views
4

встроить все HTML в WKWebView, все работает, пока я не признать, что WKWebView не может загрузить файл XML на локальномWKWebView не может вызвать Ajax, чтобы загрузить файл на локальный

 

$.ajax({ 
     type: "GET", 
     url: "tags.xml", 
     dataType: "xml", 
     cache: false, 
     success: function(xml) { 

     }, 
     error: function() { 

      alert("An error occurred while processing XML file."); 
     } 
    }); 

мой код для UIWebView

 
//urlFolder is located locally in a temporary file: tmp/www/htmlFolder 
//urlFile is located in the urlFolder: tmp/www/htmlFolder/index.html 
//xml file is located in the urlFolder: tmp/www/htmlFolder/tags.xml 


WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init]; 
    _webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration]; 
    [_webView loadFileURL:urlFile allowingReadAccessToURL:urlFolder]; 

    [self.view addSubview:_webView]; 

Примечание: Я использую XCode7.1 Beta, Objective-C, ios9.1, WKWebView

ответ

3

Из того, что я мог бы найти, что они с ограниченными возможностями запросы кросс-происхождения в WKWebViews.

Поиск информации о корсе или xhr + WKWebView для получения дополнительной информации об этой проблеме. Я думаю, что это должно быть какой-то ошибкой, потому что это всегда было возможно в «нормальных» UIWebViews, используя локальные файлы (например, ваш пример).

Вы можете запустить small/lightweight http-server в своем приложении, которое отлично работает для меня. Обязательно добавьте исключение из App Transport Security Settings в ваш .plist-файл для localhost.

+0

Я был с той же самой проблемой себя с местным скриптом в wkwebview решений удаленных запросов, но служу локальный файл из разъединять в приложении не помог мне, удаленный сервер в настоящее время вместо этого жалуется, что localhost не находится в разрешенном списке. Нужно ли мне что-то делать, чтобы сделать эту работу? – Gusutafu

+0

Вам нужно добавить исключение для localhost к записи NSAppTransportSecurity в файле Info.plist в xcode. Это связано с тем, что Apple больше не разрешает веб-просмотру получать доступ к веб-страницам без https. –

+0

Большое спасибо за быстрый ответ! Я попробую это, хотя приложение уже разрешает произвольные нагрузки (не моя ошибка!). Я думал, что должен попросить людей сервера добавить localhost в свои заголовки CORS, хотя я не могу понять, возможно ли это или нет. Не могу попробовать это до завтра, так что я отдам это! – Gusutafu

0

Вместо локального сервера вы можете использовать этот плагин, который я вымотал из нескольких образцов кода. Он должен разрешить доступ к локальному файлу через XHR для вас. Я использовал его для восстановления доступа к большому количеству локальных файлов в нашем приложении.

https://github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix