Как фильтровать диалоги подтверждения с разных URL в iOS WKWebView - PullRequest
0 голосов
/ 01 апреля 2020

Моя веб-страница имеет более одного диалогового окна подтверждения. Они принадлежат разным URL-адресам

window.confirm("Hello") -> /hello
window.confirm("Exit") -> /confirm

У меня есть контроллер вида:

class View2Controller: UIViewController, WKUIDelegate {
var webView: WKWebView!
...
override func viewDidLoad() {
webView = WKWebView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height), configuration: WKWebViewConfiguration())

        self.view.addSubview(webView)
        let myURL = URL(string:"https://www.myweb.com")
        let myRequest = URLRequest(url: myURL!)
        webView.uiDelegate = self
        webView.load(myRequest)

... ...

func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
            let ac = UIAlertController(title: "Title", message: message, preferredStyle: .alert)
            ac.addAction(UIAlertAction(title: "OK", style: .default, handler: { (UIAlertAction) in
                ...
            }))
            ac.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
            self.present(ac, animated: true)
        completionHandler(true)
        }

Могу ли я использовать iOS предупреждение ТОЛЬКО для подтверждения выхода в URL-адресе / verify и используйте диалоговое окно подтверждения для Hello?

1 Ответ

0 голосов
/ 01 апреля 2020

При использовании WKWebView диалоговое окно «Подтверждение Интернета» отсутствует. Все вызовы windowc.confirm, window.alert и window.prompt перенаправляются на ваш WKUIDelegate, и это зависит от вашей реализации различных методов делегата, что происходит на этих вызовах.

Тем не менее, вы ' Вы не правильно используете completionHandler в своем коде - его аргумент должен отражать выбор, сделанный пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...