比方說,我有一個UIWebView與一些JavaScript函數。我希望這些javascript函數能夠從我的應用程序請求信息,並且我的應用程序應該返回它。我能夠使用URL Schemes獲取請求,但是我不知道如何將信息返回給javascript函數。如何在Objective-C中將信息返回給javascript函數?
是在UIWebView中注入一個JavaScript變量,然後再次調用JavaScript函數,將變量作爲參數來實現它的最佳方式?或者有什麼方法可以用於UIWebView?
比方說,我有一個UIWebView與一些JavaScript函數。我希望這些javascript函數能夠從我的應用程序請求信息,並且我的應用程序應該返回它。我能夠使用URL Schemes獲取請求,但是我不知道如何將信息返回給javascript函數。如何在Objective-C中將信息返回給javascript函數?
是在UIWebView中注入一個JavaScript變量,然後再次調用JavaScript函數,將變量作爲參數來實現它的最佳方式?或者有什麼方法可以用於UIWebView?
使用異步通信。爲Objective C例程提供一個Javascript函數,以使用任何需要的回覆參數回調Javascript。 Javascript回調函數甚至可以是通過URL方案發送到Objective C代碼的參數之一。
通過stringByEvaluatingJavaScriptFromString
注入Javascript是絕對沒問題的。
另一個方向將經由webView:shouldStartLoadWithRequest:navigationType:
How to Properly Call ObjectiveC From Javascript(包括回調至JS)可以更好地處理描述更詳細地,源也包括在內。
樣品JS-代碼這使得目標C的returnValue的用途:
NativeBridge.call("objCMethod", ["firstArgument"], function (returnValue) {
if (returnValue) {
// whatever
} else {
// whatever
}
});
我已經有這部分工作。我的問題是,如何將信息返回給javascript函數。對不起,如果我不夠清楚。 – 2012-04-05 19:15:38
在代碼的Objective C一側,如何將值返回給您發佈的腳本?我可以只使用常規返回鍵嗎?例如:' - (BOOL)objCMethod:(NSString *)myString {//做東西... return YES; }'。然後在JavaScript中,'returnValue'將具有值「是」的權利? – 2012-04-05 19:53:47
有_could_可以像' - (BOOL)objCMethod:(NSString *)myString'這樣的方法。但實際上涉及更多的代碼。在該示例項目中(http://blog.techno-barje.fr/public/iphone-sdk/NativeBridge/NativeBridge-non-buggy.zip)查看'webView shouldStartLoadWithRequest','handleCall'和'returnResult'。 – 2012-04-05 20:15:28