2011-03-23 44 views
0

我發現OSX/iOS中的WebView/UIWebView讓我們很有能力用html/css/javascript構建奇特的UI佈局。我想知道UIWebView中的javascript如何調用UIWebView之外的object-c對象?WebView/UIWebView和object-c對象中的javascript如何相互通信?

我在論壇搜索,發現此線程: Javascript in UIWebView callback to C/Objective-Cdocument here

但似乎只有當視圖加載/加載完成或類似的時候纔會調用web view委託。 javascript可以隨時調用視圖外的對象嗎?

回答

1

我發現,設置window.location裏面的UIWebView似乎有副作用。特別是,即使您的shouldStartLoadWithRequest:返回YES,它也可以防止DOM進一步的JS操作。

有一個涉及輪詢機制的控制檯日誌記錄解決方案here,它可以擴展爲允許調用任何任意的objective-c方法 - 但它可能會影響性能。

另一種解決方案是,如果您願意不使用javascript alert()函數,則會覆蓋類別中的UIWebView的runJavaScriptAlertPanelWithMessage:方法。這用於here來更改警報對話框的外觀,但也可以用於根據消息的內容調用任何任意的objective-c方法。但是,請注意,這是一個未公開的API,因此不應在生產中使用(它可能會拒絕您的應用)。

+0

謝謝你的幫助! – icespace 2011-04-07 02:19:59