javascript - 访问 Angular 生成的内容时,evaluateJavaScript() 无法获取稳定的内容?

标签 javascript ios angularjs swift3 wkwebview

我的网页中有一个带有 id test 的 p 标签,当我按如下方式放置时,一切正常。

html,

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

swift 3,

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 is not an object (evaluating 'document.getElementById('test').innerHTML')

大部分情况,其余情况效果很好Optional(hhhhhhhh)

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

现在我猜evaluateJavaScript在anjular完成提供网页之前就已经执行了。

最佳答案

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

有关详细信息,请查看此 post

关于javascript - 访问 Angular 生成的内容时,evaluateJavaScript() 无法获取稳定的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43606361/

相关文章:

javascript - 在 redux/react 应用程序的页面之间导航时图像被复制

javascript - 如何使用 "chrome.webRequest.onBeforeRequest"?

ios - 是否可以将 GestureRecognizer 添加到自定义 UIView subview 中的标签

jquery - 将 JQuery 树插件转换为 Angularjs 指令

javascript - 将 PHP 数组转换为项目对象以与 AngularJS 一起使用

javascript - 指令依赖模板来工作

javascript - 在 javascript 中加入 2 'threads'

javascript - socket.io - 引用错误 : io is not defined

ios - 设置效果 AudioUnit

javascript - 在基本 Angular Directive(指令)中定义隔离范围时无法获得 '&' 前缀