saveしたwebページのリンクをクリックしたときの処理を追加しました。
.webarchiveファイルに落とすと、リンクが有効になったり、無効になったりします。webページの作りに影響されるようです。
それで、.webarchiveのwebページのリンクをベースURLにして、その中に定義されているリンク(URL)をクリックされたとき、その場所に飛んで行くようにしました。リンクの生成は比較的簡単にできます。
注意点は、次の2点。
① func webView(_ sender: WebView!, didStartProvisionalLoadForFrame frame: WebFrame!)
- xWebView?.mainFrameURLの先頭が”file”であること。
- xWebView?.mainFrameURLの末尾が”.html”であること。
② func webView(_ sender:WebView, didFinishLoadForFrame frame:WebFrame)
- たとえば、.webarchiveファイルを読み込み指示をかけるときに1、ここ②でそれが1なら2をセットし、base URLが有効であることを保証し、あとでリンクがクリックされたとき、つまり①でリンクを読み込むとき、これをリセットするようにする。
- リンクを読み込むとき、つまり、html(webページ)を読み込むとき、あるいは.webarchiveのリンクを読み込むときは、-1にしてbase URLを無効にする。
- httpsを.webarchiveに落としたときだけなのかどうか不明だが、webViewのloadが終了してもさらに①に遷移して処理を継続する場合があるので、ここでのリセットは必須。
- このほか、当該webページに戻る場合、たとえばホームがクリックされた場合、file:///Users/hk/Library/Containers/com.wordpress.raizangawa.MesaClip/Data/MesaClip/のようなURLにリンクが変換されているので、この場合、base URLを読み込むようにさせないと、このリンクだけ読み込めなくなる。
- if (xWebView?.mainFrameURL)! + “Data/MesaClip/” == (A.tempFolderURL?.absoluteString)!のように書く。そうしないと、optionalとの比較になり、正しい結果が得られない。