Viz*_*llx 2 javascript iphone ios swift wkwebview
我计划使用从远程服务器下载到 iOS 应用程序的文档目录的 ChartIQ.js,然后加载下载的 ChartIQ.js,将其添加到本地 HTML 文件中的标记中,并在 WkWebview 中使用它。
<script src="(Documents_Directory_Path)/chartiq.js"></script>
Run Code Online (Sandbox Code Playgroud)
我认为您可以尝试通过脚本注入来解决您的问题,因此删除脚本 src 引用并使用WKUserScript从 Swift 代码加载它(一旦下载并保存在文档目录中) (我删除了文件异常检查,但最好添加它):
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
let webConfig = WKWebViewConfiguration()
let chartiq_js = try? String(contentsOfFile: documentsPath.appendingPathComponent("chartiq.js"), encoding: String.Encoding.utf8)
let script = WKUserScript(source: chartiq_js!, injectionTime: .atDocumentStart, forMainFrameOnly: false)
webConfig.userContentController.addUserScript(script)
wkWebV = WKWebView(frame: self.view.frame, configuration: webConfig)
Run Code Online (Sandbox Code Playgroud)
显示 WkWebview 后,您可以使用指向 iOS 模拟器的 Safari 模拟器调试器来检查文件是否已正确加载。
更新:
您还可以使用loadFileURL函数加载本地资源(仅从 IOS9 开始):
let fileURL = NSURL(fileURLWithPath: documentsPath.appendingPathComponent("index.html") as String) as URL
let filePath = NSURL(fileURLWithPath: documentsPath as String) as URL
wkWebV.loadFileURL(fileURL, allowingReadAccessTo: filePath)
Run Code Online (Sandbox Code Playgroud)
注意:在您的 html 文件中,您必须仅通过直接链接引用 JavaScript、图像等:
<script src="chartiq.js"></script>
Run Code Online (Sandbox Code Playgroud)
当然,所有文件都必须下载到同一目录中。
| 归档时间: |
|
| 查看次数: |
2846 次 |
| 最近记录: |