2

我正在尝试在 HTML 源中运行 Javascript。里面的代码假设用我给出的另一个 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它确实显示了谷歌网站。但同样,我的目标是确保我的 WKWebView 能够打开嵌套弹出窗口,因为某些客户端 API 的一些架构设计

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

  1. https://stackoverflow.com/a/33198751/4311268

  2. https://stackoverflow.com/a/39073499/4311268

  3. https://stackoverflow.com/a/25853806/4311268

4

1 回答 1

-1

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

  1. npm i http-server -g
  2. cd 到我放置所有 html 文件的文件夹
  3. http-server
  4. 运行最后一个IP地址:8080返回自http-server
  5. 您将在 localhost 中看到所有 .html 文件
  6. 用localhost 链接替换您的 .html 文件
于 2020-03-25T15:55:33.910 回答