将本地存储从 swift 注入到 WKWebview
Inject local storage from swift to 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代码:
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