如何使用 WKWebview 从 iPad 的 Document 目录加载 javascript 和 css 资源?

Posted

技术标签:

【中文标题】如何使用 WKWebview 从 iPad 的 Document 目录加载 javascript 和 css 资源?【英文标题】:How to load javascript and css resources from Document directory of iPad using WKWebview? 【发布时间】:2016-10-28 10:41:43 【问题描述】:

我已在设备文档目录中添加了所有 .js、.css 和 .html 文件。在模拟器上,WKWebview 能够成功加载包含所有资源的 HTML,但在设备上它无法加载 .js 和 .css 文件。

我正在使用此代码 -

let baseURL = "file:///var/mobile/Containers/Data/Application/61AAA238-BE0C-4CD1-8401-58D0A40BBDF0/Documents/SitePlanResources/"
do 
   let fullPath = "/var/mobile/Containers/Data/Application/61AAA238-BE0C-4CD1-8401-58D0A40BBDF0/Documents/SitePlanResources/sitemap_708_193.html"
   let htmlString = try NSString(contentsOfFile: fullPath!, encoding: String.Encoding.utf8.rawValue)
   _ = self.masterWebView?.loadHTMLString(htmlString as String, baseURL: baseURL)
    catch 
       print(error)
   

在 HTML 中,我引用 HTML 之类的 -

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=6.0" />
    <script type="text/javascript" src="jquery-1.10.2.min.js"></script>
    <link href="preview.css" rel="Stylesheet" type="text/css" />
    <link href="simple-slider.css" rel="stylesheet" type="text/css" />
    <script  type="text/javascript"  src="jquery-migrate-1.2.1.js"></script>
    <script  type="text/javascript"  src="jquery.svg.min.js"></script>
    <script  type="text/javascript"  src="MasterSitePlan.js"></script>
    <script  type="text/javascript"  src="Tap.js"></script>
    <script  src="fastclick.js" type="text/javascript"></script>
    <script type="text/javascript" src="simple-slider.js"></script>
    <style>
        svg 
            -webkit-tap-highlight-color: rgba(0,0,0,0);
        
    </style>
</head>

所有文件都存储在同一位置。 我陷入了这个问题。需要一些帮助。

【问题讨论】:

如何在 html 中引用 HTML 和 JS。这个 HTML 在浏览器中是否正常工作?单独打开文件时。 是的,它在浏览器中正常工作。我已经编辑了这个问题。请再次检查。 看看下面的回答它是 WKWebview 的一个限制。你可以使用 UIWebview 【参考方案1】:

WKWebView 的known issue 无法加载本地文件,你可以用loadHTMLString 加载简单的内容,但这不会设置加载相关文件的基本路径,即使可能的。

如果您不需要支持 [WKWebView loadFileURL:allowingReadAccessToURL:]

否则,您可能不得不在 html 中嵌入所需的 css/js,或者使用标准的 UIWebView 或 Safari 视图或其他私有浏览器视图。

【讨论】:

以上是关于如何使用 WKWebview 从 iPad 的 Document 目录加载 javascript 和 css 资源?的主要内容,如果未能解决你的问题,请参考以下文章

当用户在 iPad 上的 WKWebView 中点击电话号码时如何禁用弹出窗口?

Wikipedia 在 iPad 上以不同方式呈现 WkWebView 和 Safari

ipad模拟器分辨率的wkwebview问题

iOS WKWebView javascript警报在ipad上崩溃

通过 Catalyst 工具 Xcode 11 从 Bundle for MacOS App 加载 WKWebView 中的 PDF

每次检测 WKWebView 何时完成加载