WKWebView не может распознать текст, возвращаемый JavaScript - PullRequest
0 голосов
/ 17 ноября 2018

Я использую WKWebView в своем приложении для iOS для отображения строки HTML.Теперь мне нужно, чтобы мое приложение зафиксировало слово, которое прослушивается на странице HTML.У меня есть фрагмент кода JQuery, встроенный в HTML, чтобы захватить слово, а затем перенаправить страницу на фальшивый URL, включая это слово.А в методе WKWebView WKNavigationDelegate "managePolicyFor" я анализирую запрошенный URL-адрес для получения слова.Все работает хорошо, за исключением того, что само слово исчезло.Я попробовал ту же HTML-страницу в Safari, и URL-адрес перенаправления полностью верен, что я могу подтвердить в URL-адресе.Я не знаю, что не так между кодом jQuery и WKWebView.Любой совет будет наиболее ценным.

Моя строка HTML:

<!DOCTYPE html>
<html>
    <header>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
        <script>
            $(document).ready(function() {

                              var p = $('p');

                              p.click(function(e) {
                                      var sel_obj = window.getSelection(); //it will return an object
                                      sel_obj.modify("move","forward","character");
                                      sel_obj.modify("extend","backward","word");

                                      sel_obj.modify("move","backward","character");
                                      sel_obj.modify("extend","forward","word");

                                      var text = sel_obj.toString().trim();
                                      text = text.toLowerCase();
                                      window.location = "https://www.anonexistent.com/wordclicked/" + text;
                                      });

                              });
            </script>
    </header>

    <body>
        <h1>CLICK-TO-PICK-THE-WORD</h1>
        <br/>
        <br/>
        <p><font size=20>Baa Baa Black Sheep<font></p>
    </body>
</html>

Мой код iOS (в Swift):

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

    let redirectURLString = navigationAction.request.url?.absoluteString ?? ""
    print("redirectURLString: \(redirectURLString)")

    if redirectURLString == "about:blank" {
        decisionHandler(WKNavigationActionPolicy.allow)
    }
    else {
        decisionHandler(WKNavigationActionPolicy.cancel)
    }
}

Теперь страница отображается правильно.И когда я нажимаю слово «Овцы» в этом абзаце, jQuery может распознать слово и создать URL перенаправления как

https://www.anonexistent.com/wordclicked/sheep

, который я подтвердил в Safari.Проблема заключается в том, что в Xcode, navigationAction.request.url? .AbsoluteString имеет значение только

https://www.anonexistent.com/wordclicked/

, а слово «овца» отсутствует.

...