WKWebView не запускает метод createWebViewWithConfiguration

Я пытаюсь запустить Javascript в источнике HTML. Код внутри должен открывать новое окно с другим исходным кодом 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. /questions/9882581/wkwebview-i-windowopen/9882592#9882592

  2. /questions/43660446/wkwebview-ne-budet-otkryivat-vsplyivayuschie-okna-vhoda-v-sotsialnyie-seti/43660457#43660457

  3. /questions/24521084/pochemu-wkwebview-ne-otkryivaet-ssyilki-s-targetblank/24521087#24521087

1 ответ

Решение

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

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