【问题标题】:Cordova load resource from documents issue (WKwebview)Cordova 从文档问题加载资源(WKwebview)
【发布时间】:2020-12-10 18:35:12
【问题描述】:

我们有一个非常简单的 Cordova 应用程序,它将所有应用程序的内容下载到 /Documents/ 文件夹。 这里我们存储 html、图像、css 和 javascripts。我们最近搬到了 WKWebview,因为旧版本已被弃用。 HTML 从文档中读取并附加到本地索引文件中。这一切都很好。在此之后,我们尝试通过将 src 设置为 'file://.../data/Containers/Application/Documents/test.js' 来附加脚本块(文件在那里)。 不幸的是,这不受支持,我们收到以下消息: 加载资源失败:操作无法完成。不允许操作 我们正在使用最新的 Cordova 和最新的 IOS 平台。

有人知道如何解决这个问题吗? 在模拟器中一切正常,但在 iPad 设备上却不行。

非常感谢。

罗宾

【问题讨论】:

    标签: ios cordova local-storage wkwebview


    【解决方案1】:

    还有一个解决方案,不需要对代码进行重大更改,这是我在似乎没有解决方案的绝望日子后发现的

    需要两个步骤:

    首先使用以下更新您的 config.xml

    <platform name="ios">    
      <preference name="scheme" value="app" />
      <preference name="hostname" value="localhost" />
     </platform>
    

    然后使用未记录的方法转换您的 file:// 链接

    window.WkWebView.convertFilePath(filePath)
    

    此方法执行转换为虚拟 localhost 链接,使文件可访问并绕过 WkWebView 限制。稍微长一点的样本是这样的

    let localFile = cordova.file.dataDirectory + 'logo.png';
    let convertedPath = window.WkWebView.convertFilePath(localFile);
    document.getElementById("myImg").src = convertedPath;
    

    【讨论】:

      【解决方案2】:

      啊。我刚刚在我的应用程序中修复了文件协议 'file://' 和带有 target='_blank' 的网络链接 2 天。 WKWebView 有问题。但是有一些插件可以解决这个问题。

      尝试安装cordova-plugin-wkwebview-file-xhrcordova-plugin-wkwebviewxhrfix 插件,解决文件协议问题。

      【讨论】:

      • 感谢您的回复。我没有使用 xhrequest 获取信息,但我尝试将 scr 属性设置为脚本元素的本地文件。这似乎不起作用,但我找到了不同的解决方案。我从文件系统读取 .js 文件,然后将内容添加到脚本块的 text 属性并将其附加到正文。
      • 我最近处理了这个问题,file:// URI 和 WKWebView 由于 CORS 和原点为空而被拒绝。长期应重构以使用方案 URI,但正在运行快速修复(请参阅:github.com/AraHovakimyan/cordova-plugin-wkwebviewxhrfix)cordova 插件添加 @ahovakimyan/cordova-plugin-wkwebviewxhrfix
      猜你喜欢
      • 1970-01-01
      • 2018-07-25
      • 2018-01-29
      • 2012-11-21
      • 2018-09-13
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      相关资源
      最近更新 更多