2016-05-18 3 views
0

私はさまざまなドメインからウェブページを開くアプリを持っています。これらのドメインの一部には、You're the 1 millionth visitor to this website. You won >>nothing<<"のようなアラートを表示するスクリプトが組み込まれています。UIWebViewアラートをブロックする

window.alert私は、上記のウェブサイトで悪意のあるアラートが表示されないように何もしないことを呼び出すことにしました。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType- (void)webViewDidFinishLoad:(UIWebView *)webViewのアラートをブロックして、ページのロードが完了する前にアラートが表示されないようにします。

一部のクラッシュレポートでは、webView stringByEvaluatingJavaScriptFromString:...からshouldStartLoadWithRequestを呼び出すと、アプリがクラッシュすることがわかりました。必ずしもそうではありません。それがなぜ起こっているのでしょうか?

手動ハイジャックを行わずに最初に警告が表示されないようにする方法はありますか?私はSFSafariViewControllerを使用したいと思いますが、残念なことに、これはさまざまな制約のオプションではありません。

答えて

1

なぜWKWebViewを使用しないのですか? WKWebViewはJSの警告をフックし、デフォルトでは何もしません。 FYI

:あなたはJSのアラートが呼び出されたときに警告を表示したい場合は 、WKUIDelegateの

webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler:() -> Void) 

を実装し、自分でダイアログを表示。

+0

ああ、WKWebViewがそれをしたことを知らなかった、それは実際には本当にクールです!つまり、WKWebViewも私が扱っている制約なので、あなたの答えは有用ですが、私はそれを扱うことはできません。 –

関連する問題