Swift2

HTMLのあれをとってくる

https://qiita.com/_tid_/items/8705275813e740d693ef

webView.evaluateJavaScript("document.documentElement.innerHTML") { value, error in
    print(value as? String as Any)
}

これはHTML全文になるので

 

webView.evaluateJavaScript("document.getElementById('tes').innerHTML") { value, error in
    print(value as? String as Any)
}

で,HTML内に

<p id="tes">2019</p>

いれておくと,

optinal(“2019”)と表示される.

 


IDをWKWebkitからとれなかったので,cookieから取る

まずPHPでcookieにuseridを設定

//cookie設定(Swift用)
$userid = $_SESSION["id"];
setcookie('userid', $userid,time()+60*60*24*7);
echo $_COOKIE[‘userid’];

 

Swiftでcookieを取得・ただしこれはiOS11用

        //セッション取得
        let cookieStore = webView.configuration.websiteDataStore.httpCookieStore

//        webView.configuration.websiteDataStore.httpCookieStore.getAllCookies {
//            print($0)//全部取る
//        }

                cookieStore.getAllCookies() { (cookies) in
            for cookie in cookies {
                if cookie.domain == "hoge.com" &&
                    cookie.name == "userid" {
                    // UserDefaultsに保存
                    let cookieData = NSKeyedArchiver.archivedData(withRootObject: cookie)
                    UserDefaults.standard.set(cookieData, forKey: "Cookie")
                    UserDefaults.standard.synchronize()
                    print(cookie.value)//これでuseridだけとれる
                }
            }
        }
        //

XCODEのコンソールに表示される

参考

https://qiita.com/haru15komekome/items/fdbdea6d755545468ac8


特定のURLで実行させたい(途中)

 

extension ViewController: WKNavigationDelegate {//の中に書く

// 読み込み開始後に実行
 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
     //URLチェック
     //0.5秒後に実行する
     DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
         // 0.5秒後に実行したい処理
         
     }
 }

参考
https://swift.tecc0.com/?p=669

https://qiita.com/s_emoto/items/dc3d61626155f5cf83e7

これのまとめ

extension ViewController: WKNavigationDelegate {

の中にかきます

// 読み込み開始後に実行
   func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
       //URLチェック
       let currentUrl:URL? = webView.url
       let url = currentUrl?.absoluteString
       
       // 特定のURLで分岐処理
       if url!.contains("https://hoge.com") { //動的URLなのでcontain使用url!<-は
           
           //print("URLが含まれる")
           // 0.5秒後に実行したい処理
           DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
               
               //セッション取得
               let cookieStore = webView.configuration.websiteDataStore.httpCookieStore
               //        webView.configuration.websiteDataStore.httpCookieStore.getAllCookies {
               //            print($0)
               //        }
               cookieStore.getAllCookies() { (cookies) in
                   for cookie in cookies {
                       if cookie.domain == "life-log.org" &&
                           cookie.name == "userid" {
                           // UserDefaultsに保存
                           let cookieData = NSKeyedArchiver.archivedData(withRootObject: cookie)
                           UserDefaults.standard.set(cookieData, forKey: "Cookie")
                           UserDefaults.standard.synchronize()
                           print(cookie.value)//cookieのuseridをsessionに表示
                       }
                   }
               }
               ////セッションここまで
               
           }
       }
       
   }

 

containsの参考

https://qiita.com/osamu1203/items/3ee63291c37d91428b55