大家好!
我有WKWebView,它使用js加载本地XML。
function loadSegment(url,uuid) {
let xhr = new XMLHttpRequest();
xhr.onerror = () => rejected();
xhr.onabort = () => rejected();
xhr.ontimeout = () => rejected();
xhr.onload = () => xhr.status === 200 ? handleSegment(url, uuid, xhr.response) : rejected();
xhr.open("GET", url);
xhr.responseType = "arraybuffer";
xhr.send(null)
}
function handleSegment(url,uuid,res) {
// url, uuid, res to json
// webkit.messageHandlers.LoadHandler.postMessage(<#JSON#>)
}
function rejected() {
}
成功加载WebView后,我评估文件
webView.evaluateJavaScript(script, completionHandler: { (response, error) in
// Error handling
}
脚本成功评估。但在Safari Inspector中,我看到以下错误
[Error] Failed to load resource: The network connection was lost. (05.ts, line 0)
[Error] Failed to load resource: A server with the specified hostname could not be found. (05.ts, line 0)
它尝试执行以下网址请求:http://edge.flowplayer.org/cilla_black_bean_sauce/1/216p-lo/00.ts
最奇怪的是它在模拟器上的完美运作。
有人遇到类似的问题吗?
答案 0 :(得分:1)
我遇到了类似的问题,并使用webview配置对其进行了修复。只需在您的viewDidLoad()
或类似的代码中使用下面的代码(如果您使用的是Swift):
webView.configuration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs")
答案 1 :(得分:0)
根据@Dion的答案,用于Obj C
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
[configuration.preferences setValue:@true forKey:@"allowFileAccessFromFileURLs"];
self.wkWebView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];