2017-08-04 114 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

相關問題