WKWebView 不触发方法 createWebViewWithConfiguration

WKWebView does not trigger method createWebViewWithConfiguration

我正在尝试 运行 Javascript 在 HTML 源中。里面的代码假设用我给出的另一个 HTML 来源打开一个新的 window。我的错误是什么?

(我的目标 是为了证明 WKWebView 有打开嵌套弹窗的能力 window) 也就是说,Webview 打开了一个 PopUpWindowA,那么PopUpWindowA就会window.open()PopUpWindowB,那么PopUpWindowB就会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>

我尝试用 https://www.google.com 替换 "testing2.html",它确实显示在 Google 网站上。但同样,由于某些客户端的架构设计 API

,我的目标是确保我的 WKWebView 能够打开 Nested PopUp Window

我读过一些类似的问题和答案:

我认为是因为window.open没有打开本地文件(例如testing.html)。因此我安装了 http-server 以在本地主机上托管我的文件。

  1. npm i http-server -g
  2. cd 到我放置所有 html 文件的文件夹
  3. 运行 http-server
  4. 运行 来自 http-server
  5. 的最后一个 IP address:8080 return
  6. 您将在本地主机
  7. 中看到您所有的 .html 文件
  8. 将您的 .html 文件替换为 localhost link