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?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 如何在关闭模式后在根导航中呈现视图

Swift函数在另一个函数完成后执行

如何推迟加载 UpdatePanel 内容,直到页面呈现后?

使用 Swift 呈现新的 Viewcontroller 后如何关闭以前的 Viewcontroller?

如何在 Swift 中呈现独特的 UITabBarControllers

Swift:关闭所有视图控制器,然后呈现一个视图控制器