evaluateJavaScript()在访问由angular生成的内容时无法获得稳定的内容?

时间:2017-04-25 09:13:32

标签: javascript ios angularjs swift3 wkwebview

我的网页上有一个带有id测试的p标签,当我按照以下方式进行操作时,一切运行良好。

HTML,

<p id="test">hhhhhhhhhhhh</p>
<body ng-app="home" ng-controller="HomeController" style="min-height:700px;">
  <printerinfo></printerinfo>
</body>

swift3,

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    self.wk.evaluateJavaScript("document.getElementById('test').innerHTML;") { (result, error) -> Void in
    ->
       if error != nil {
            print(error)
       }
        print(result)
    }
}

当我将p标签移动到模板printerinfo时,我得到了

  

的UserInfo = {WKJavaScriptExceptionLineNumber = 1,   WKJavaScriptExceptionMessage = TypeError:null不是对象   (评估'document.getElementById('test')。innerHTML')

大多数情况下,遗留情况适用于结果Optional(hhhhhhhh)

这是从 Safari技术预览的开发版&gt;中查看的ios wkwebview页面内容。 iphone设备名称的窗口。我可以从控制台访问innerHTML。 enter image description here

现在我想在anjular完成网页送入之前已经执行了evaluateJavaScript。

1 个答案:

答案 0 :(得分:0)

这是由网页的动态内容引起的。我通过使用javascript检查页面何时加载来解决这个问题,然后通知本机swift代码来执行下一个过程。

有关详细信息,请查看 post