web-dev-qa-db-ja.com

WKWebViewおよびwindow.open

Webサイトの多くのリンクはonclickハンドラーでwindow.openを使用していますが、WKWebViewはwindow.openを完全に無視しているようです。

これの回避策はありますか?

JavaScriptCanOpenWindowsAutomatically設定をtrueに設定しようとしましたが、それは役に立たないようです

18
Bret

JavaScriptでWebアプリケーションがwindow.open()を呼び出すと、WKWebViewはそのUIDelegateで_- webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:_メソッドを呼び出します。

そのデリゲートメソッドでは、与えられたWKWebViewを使用して新しいWKWebViewConfigurationを作成する必要があります。この新しいWKWebViewを画面に表示すると、正しいコンテンツが読み込まれます。

これは WKUIDelegateのドキュメント に記載されていますが、これがwindow.open()の結果として呼び出されることはあまり明確ではありません。

33
Stefan Arentz