视图控制器
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let wv = UIWebView(frame: UIScreen.main.bounds)
wv.stringByEvaluatingJavaScript(from: "localStorage.setItem('key', 'value')")
wv.loadRequest(URLRequest(url: URL(string: "http://localhost:63343/test.html")!))
self.view.addSubview(wv)
// Do any additional setup after loading the view, typically from a nib.
}
}
测试.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
alert(localStorage.getItem("key"))
</script>
</head>
<body>
</body>
</html>
我打了电话localStorage.setItem('key', 'value')
before loadRequest
。我希望警报会输出value
,但它输出了null
:
所以我的问题是:
在之前设置本地存储的正确方法是什么UIWebView
加载其初始请求?
EDIT:
感谢 @Wez 指出我应该评估 JavaScriptwebViewDidFinishLoad
,但我想做的是在加载该页面之前设置 localStorage(我们将在其初始请求中使用该 localStorage)。所以我无法在 webViewDidFinishLoad 中评估它...
有什么办法可以实现这一点吗?
如果您正在寻找Swift版本:
let configuration = WKWebViewConfiguration()
let contentController = WKUserContentController()
let js = "javascript: localStorage.setItem('key', 'value')"
let userScript = WKUserScript(source: js, injectionTime: WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: false)
contentController.addUserScript(userScript)
configuration.userContentController = contentController
let webview = WKWebView(configuration: configuration)
webview.load(URLRequest(url: URL(string: "your URL")))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)