我的网页中有一个带有 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 时,我得到 p>
UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=TypeError: null is not an object (evaluating 'document.getElementById('test').innerHTML')
大部分情况,其余情况效果很好Optional(hhhhhhhh)
这里是从Safari技术预览的开发> iPhone设备名称的窗口中查看的ios wkwebview页面内容。我可以从控制台访问innerHTML。
现在我猜evaluateJavaScript在anjular完成提供网页之前就已经执行了。
最佳答案
这是由网页的动态内容引起的。我通过使用 javascript 检查页面何时加载,然后通知 native swift 代码执行下一步处理来解决这个问题。
有关详细信息,请查看此 post 。
关于javascript - 访问 Angular 生成的内容时,evaluateJavaScript() 无法获取稳定的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43606361/