javascript - 检查文件是否存在于 wkwebview 中的 javascript 中

标签 javascript ios cordova cors wkwebview

我正在构建一个混合应用程序,并且我一直在尝试在使用它之前测试本地镜像是否存在于本地,但由于出现 CORS 错误,我被困在使用 wkwebview 的 iOS 上。

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 cannot load "". Cross origin requests are only supported for HTTP.

我不想使用插件来绕过这个错误,有没有办法做到这一点?

谢谢。

最佳答案

我认为您应该将一个 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');

关于javascript - 检查文件是否存在于 wkwebview 中的 javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52533417/

相关文章:

cordova - 为 ionic 应用程序创建一个表情符号按钮,如 whatsapp

javascript - 使用 javascript 获取复选框数量

javascript - 这里需要一些 javascript 帮助(简单)

javascript - 自动完成不起作用......(AJAX+PHP+HTML+JS)

ios - 为什么我的约束设置对 X/Height 不满意?

angularjs - 谷歌地图不显示

javascript - 为什么这一行会阻塞我的 jQuery 数据表?

ios - 在tableview中搜索时如何更改文本 "no results"?

ios - 录制后临时目录中的 AVPlayer 视频在几秒钟后停止播放

jquery - Cordova &jquery :value sent to another static html page