2017-08-04 111 views
0

代码如何在UIWebView加载请求之前设置sessionStorage?

这是我一直在努力做的事情:

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) 
    } 
} 

问题

然而,寻找模拟器sessionStorage的Safari中的控制台时不包含exampleKey

问题

我怎样才能加载http://example.com/index.html之前设置的sessionStorage?由亚历山大·拉腊提出

编辑

解决方案并不为我工作。

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 
    } 
} 

回答

0

可以解决由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');") 
    } 
} 
+0

这是行不通的。你测试过这个解决方案吗? – adrianp

相关问题