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