WKWebView无法触发ajax在本地加载文件

时间:2015-10-19 09:51:29

标签: ajax wkwebview ios9.1

我将所有html嵌入到WKWebView中,一直有效,直到我认识到WKWebView无法在本地加载xml文件


$.ajax({
        type: "GET",
        url: "tags.xml",
        dataType: "xml",
        cache: false,
        success: function(xml) {

        },
        error: function() {

            alert("An error occurred while processing XML file.");
        }
    });

我的UIWebView代码

//urlFolder is located locally in a temporary file: tmp/www/htmlFolder 
//urlFile is located in the urlFolder: tmp/www/htmlFolder/index.html
//xml file is located in the urlFolder: tmp/www/htmlFolder/tags.xml


WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
    _webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
    [_webView loadFileURL:urlFile allowingReadAccessToURL:urlFolder];

    [self.view addSubview:_webView];

注意:我使用的是XCode7.1 Beta,Objective-C,ios9.1,WKWebView

2 个答案:

答案 0 :(得分:3)

我发现他们在WKWebViews中禁用了跨源请求。

搜索cors或xhr + WKWebView以获取有关此问题的更多信息。我认为它必定是某种类型的错误,因为在使用本地文件的“普通”UIWebViews中总是可能的(例如你的例子)。

但是,您可以在应用内部运行{{3}},这对我来说很有用。确保为.host文件的.plist文件中的App Transport Security Settings添加例外。

答案 1 :(得分:0)

而不是本地服务器,您可以使用我从一些代码示例拼凑而成的插件。它应该通过XHR为您启用本地文件访问。我用它来恢复对我们应用程序上的大量本地文件的访问。

https://github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix