【问题标题】:Check if a file exist in javascript within wkwebview检查 wkwebview 中的 javascript 中是否存在文件
【发布时间】:2019-03-03 03:47:15
【问题描述】:

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

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 支持跨源请求。

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

谢谢。

【问题讨论】:

    标签: javascript ios cordova cors wkwebview


    【解决方案1】:

    我认为你应该在你的 WKWebView 中添加一个 userContentController,然后从你的 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');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-17
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 2023-03-29
      • 2013-02-12
      相关资源
      最近更新 更多