【Swift】WKWebViewでJavaScriptのポップアップが表示されない原因と対応方法

この記事からわかること
- SwiftでWebサイトをiOSアプリから開く方法
- WKWebViewクラスの使い方
- JavaScriptのwindow.alert()/window.confirm()が表示されない原因
\ アプリをリリースしました /
環境
- Xcode:16.0
- iOS:18.0
- Swift:5.9
- macOS:Sonoma 14.6.1
WKWebViewでJavaScriptのポップアップが表示されない原因
iOSアプリからWebViewでWebページを表示している際にJavaScriptで実装していたalert
とconfirm
が表示されない事象が発生しました。調べてみるとWKWebView
ではデフォルトではポップアップ表示に対応していないようです。
⇧上記でポップアップ出るのでWebViewで開いて確認してみてください。
ポップアップを表示させる方法
WKWebView
でポップアップを表示させるにはWKUIDelegate
のrunJavaScriptAlertPanelWithMessage
とrunJavaScriptConfirmPanelWithMessage
デリゲートメソッドを活用します。
この2つのメソッドではJavaScriptで実装したalert
とconfirm
をネイティブ側のアラートへ繋ぎこむことができるようになります。confirm
で押下した後の処理もcompletionHandler
で返却するBool
値によって制御し、JavaScript側の押下後の実装を問題なく動作させることが可能になっています。
uiDelegate
プロパティへのセットも忘れずに。
これで無事WebViewからポップアップが表示されるようになりました。

Swift UIで実装する
Swift UIでUIViewRepresentable
を使用している場合は以下のように実装すればアラートが表示されます。
AndroidのWebViewでも同じです
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。