WKWebView не вызывает метод createWebViewWithConfiguration - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь запустить Javascript в HTML Source. Код внутри должен открыть новое окно с другим HTML источником, который я дал. В чем моя ошибка здесь?

( Моя цель - доказать, что WKWebView способен открывать вложенное всплывающее окно) Это означает, что Webview открыл PopUpWindow A , тогда PopUpWindow A будет window.open() PopUpWindow B , затем PopUpWindow B будет window.open() PopUpWindow C.

В моем WKWebView я сделал следующее:

  1. Реализован WKUIDelegate
  2. Установите _webView.UIDelegate = self;
  3. Установите оба параметра: wkWebViewConfig.preferences.javaScriptCanOpenWindowsAutomatically = YES; wkWebViewConfig.preferences.javaScriptEnabled = YES;
  4. Создать метод ниже
- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
{
  if (!navigationAction.targetFrame.isMainFrame) {
    [webView loadRequest:navigationAction.request];
  }
  return nil;
}

Мой образец html Источник следующим образом:

<!DOCTYPE html>
<html>
  <head>
     <script language="javascript">
      function init()
      { 
          setTimeout( () => {
            window.open("testing2.html","mywindow","toolbar=no,menubar=no,location=no,directories=no,width=910,height=750");
          }, 3000)
          document.redirectForm.target="mywindow";
          document.redirectForm.submit();
      }
    </script>
  </head>
  <body>
    Going to testing2
    <form>
         <input type="button" onclick="init()" value="Click" />
      </form>
      <script type="text/javascript">
        init();
      </script>
  </body>
</html>

Я попытался заменить "testing2.html" с https://www.google.com, он показывает веб-сайт Google. Но опять же, моя цель здесь - убедиться, что мой WKWebView может открывать Вложенное всплывающее окно из-за некоторой архитектуры какого-то клиентского API

Некоторые похожие вопросы и ответы, которые я читал:

  1. { ссылка }

  2. { ссылка }

  3. { ссылка }

1 Ответ

0 голосов
/ 25 марта 2020

Я думаю, причина в том, что window.open не открывает локальный файл (например, тестирование. html). Поэтому я установил http-server для размещения своих файлов на локальном хосте.

  1. npm i http-server -g
  2. cd в мою папку, где размещены все файлы html
  3. run http-server
  4. Запустите последний IP-адрес: 8080, возврат с http-server
  5. Вы увидите все ваши. html файлы там на localhost
  6. Замените ваш. html файл localhost link
...