从swift注入本地存储到WKWebview
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从swift注入本地存储到WKWebview相关的知识,希望对你有一定的参考价值。
我的Swift代码:
self.webView.evaluatejavascript("javascript: localStorage.setItem('usr_dtls', 'vivek')") { (result, error) -> Void in
print(result)
print(error)
}
Error message in cosole:
nil
Optional(Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=SecurityError (DOM Exception 18): The operation is insecure., WKJavaScriptExceptionColumnNumber=25, WKJavaScriptExceptionSourceURL=about:blank, NSLocalizedDescription=A JavaScript exception occurred})
知道什么是错的吗?
答案
由于evaluateJavaScript
执行代码就好像来自Safari Inspector的控制台,因此不使用javascript:
。
另外,javascript:
前缀用于从URL执行JavaScript(您可以通过在浏览器的地址栏中键入(而不是复制粘贴)javascript: alert('howdy')
来测试它)。
另一答案
//Found a solution.Execute Javascript after webView finished loading
//Sample code:
self.webView.navigationDelegate = self
func webView(_ webView: WKWebView,
didFinish navigation: WKNavigation!)
{
self.webView.evaluateJavaScript("localStorage.setItem('usr_dtls', 'vivek')") { (result, error) -> Void in
print("Finished navigation and Local storage injection.")
}
}
//Run the app and debug using Safari Technology Preview
//You will see the injected data as Show in the image below:
[![Screenshot][1]][1]
[1]: https://i.stack.imgur.com/tzGUc.png
以上是关于从swift注入本地存储到WKWebview的主要内容,如果未能解决你的问题,请参考以下文章
从应用程序的文档目录加载本地 html 文件 swift wkwebview
如何在 Swift 3 的 WKWebView 中注入 javascript
在 WKWebView (iOS, Swift) 中使用本地 Javascript 源加载本地 HTML
使用 evaluateJavascript 从 WKWebView 获取 HTML,然后将其存储在变量中(使用 Swift)