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

関連する問題