2017-04-26 64 views
0

在我的ios應用程序中,我使用WKWebview.evaluateJavaScript()來執行javascript以獲取div boundingRect。在我的網頁上,我用anjularjs渲染我的網頁的一部分,該網頁的內容是,swift如何在anjular渲染頁面後執行javascript?

<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是視口的起源,看起來身體在視口中沒有空間。我認爲這是因爲當網頁加載時,angualrjs沒有呈現身體部分。

那麼如何在anjularjs使用swift3渲染頁面後執行javascript?

非常感謝。

+0

查看本帖回覆http://stackoverflow.com/a/43672099/6521116 http://stackoverflow.com/q/28149097/6521116 –

回答

0

我認爲使用native swift或objective-c來檢測頁面何時加載是一個不好的選擇。更靈活有效的方法是在頁面加載完成時使用javascript調用本地swift代碼。更重要的是,這也適用於特定的dom整理加載事件和非常動態的內容。

欲瞭解詳情請致電post