作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
代码
这是我一直在尝试做的事情:
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 中查找模拟器的控制台时,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');")
}
}
关于javascript - 如何在 UIWebView 加载请求之前设置 sessionStorage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45501677/
我是一名优秀的程序员,十分优秀!