swift如何在anjular呈现页面后执行javascript?
Posted
技术标签:
【中文标题】swift如何在anjular呈现页面后执行javascript?【英文标题】:swift how to execute javascript after anjular have rendered the page? 【发布时间】:2017-04-26 08:08:29 【问题描述】:在我的 ios 应用程序中,我使用 WKWebview.evaluatejavascript() 来执行 javascript 以获取 div boundingRect。在我的网页中,我使用 anjularjs 来渲染我的部分页面,页面内容如下,
<body ng-app="home" ng-controller="HomeController" style="min-height:700px;">
<printerinfo></printerinfo>
</body>
<div id="movie" style="border: 1px grey dotted; width: 120px; height: 90px;"></div>
迅速
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
self.wk.evaluateJavaScript("var rect = document.getElementById('movie').getBoundingClientRect(); [rect.x, rect.y, rect.width, rect.height, rect.top, rect.right, rect.bottom, rect.left];") (result, error) -> Void in
print(result)
从结果来看,
Optional(<__NSArrayM 0x170251010>(
<null>,
<null>,
120,
90,
0,
120,
90,
0
)
)
boundingRect 位于视口的原点,看起来 body 在视口中没有空间。我以为是因为网页加载的时候,angualrjs没有渲染body部分。
那么如何在 anjularjs 用 swift3 渲染页面后执行 javascript 呢?
非常感谢。
【问题讨论】:
查看此帖子***.com/a/43672099/6521116的答案***.com/q/28149097/6521116 【参考方案1】:而且我认为使用原生 swift 或 Objective-c 来检测页面何时加载是一个糟糕的选择。更灵活有效的方法是在页面加载完成时使用javascript调用原生的swift代码。更重要的是,这也适用于特定的 dom 完成加载事件和非常动态的内容。
详情请参阅此post。
【讨论】:
以上是关于swift如何在anjular呈现页面后执行javascript?的主要内容,如果未能解决你的问题,请参考以下文章
如何推迟加载 UpdatePanel 内容,直到页面呈现后?
使用 Swift 呈现新的 Viewcontroller 后如何关闭以前的 Viewcontroller?