[英]How to set sessionStorage before UIWebView loads request?
碼
這是我一直在嘗試做的事情:
import UIKit
import WebKit
class WebViewViewController: UIViewController {
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "http://example.com/index.html")
webView.stringByEvaluatingJavaScript(from: "sessionStorage.setItem('exampleKey','exampleValue');")
let request = URLRequest(url: url! as URL)
webView.loadRequest(request)
}
}
問題
但是,在Safari中為Simulator查找控制台時,sessionStorage不包含exampleKey
。
題
如何在加載http://example.com/index.html
之前設置sessionStorage?
編輯
Alexandre Lara提出的解決方案對我不起作用。
import UIKit
import WebKit
class WebViewViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "http://example.com/index.html")
let request = URLRequest(url: url! as URL)
webView.delegate = self
webView.loadRequest(request)
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
webView.stringByEvaluatingJavaScript(from: "sessionStorage.setItem('exampleKey','exampleValue');")
return true
}
}
您可以通過從UIWebViewDelegate
實現webView(_:shouldStartLoadWith:navigationType:)
來解決此問題:
class WebViewViewController: UIViewController, UIWebViewDelegate {
// ...
let url = NSURL(string: "http://example.com/index.html")
let request = URLRequest(url: url! as URL)
webView.loadRequest(request)
// ...
// Set delegate and implement the method
webView.delegate = self
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) {
webView.stringByEvaluatingJavaScript(from: "sessionStorage.setItem('exampleKey','exampleValue');")
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.