Проверьте, существует ли файл в javascript в wkwebview - PullRequest
0 голосов
/ 27 сентября 2018

Я создаю гибридное приложение, и я пытался проверить, существует ли локальное изображение в локальном образе, прежде чем его использовать, но я застрял на iOS с wkwebview, потому что я получил ошибки CORS.

var loadImage = function(urlImage) {
    var deferred = $q.defer();
    var xhr = new XMLHttpRequest();
    xhr.open('HEAD', urlImage, true);
    xhr.onload = function(e) {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                deferred.resolve(true);
            } else {
                deferred.resolve(false);
            }
        }
    };
    xhr.onerror = function(e) {
        deferred.resolve(false);
    };
    xhr.send();
    return deferred.promise;
};

Я получаю следующую ошибку:

Не удалось загрузить XMLHttpRequest "".Запросы перекрестного происхождения поддерживаются только для HTTP.

Я бы предпочел не использовать плагин для обхода этой ошибки, есть ли способ сделать это?

Спасибо.

1 Ответ

0 голосов
/ 27 сентября 2018

Я думаю, вам следует добавить userContentController в ваш WKWebView, а затем опубликовать сообщение из вашего кода Javascript, чтобы он обрабатывал запрос в собственной среде приложения.

Добавить это в viewDidLoad

yourWebView.configuration.userContentController.add(self, name: "callbackHandler")

, а затем

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    if message.name == "callbackHandler" {
        let content = message.body as! String
...

Таким образом, вы можете общаться с приложением, используя

webkit.messageHandlers.callbackHandler.postMessage('a message');
...