我正在构建一个混合应用程序,并且我一直在尝试在使用它之前测试本地镜像是否存在于本地,但由于出现 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/