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
