我正在開發一個正在顯示在UIWebView
中的Web應用程序。該應用程序在本地加載,即不從Web服務器加載。我通過UIWebViewDelegate
協議中的shouldStartLoadWithRequest:
方法從Javascript向ObjC進行通信。在Objective-C的iOS Web應用程序中調用Javascript
我需要的最後一件事就是能夠在沒有任何頁面重新加載的情況下從ObjC調用Javascript函數。我希望這是可能的。
我正在開發一個正在顯示在UIWebView
中的Web應用程序。該應用程序在本地加載,即不從Web服務器加載。我通過UIWebViewDelegate
協議中的shouldStartLoadWithRequest:
方法從Javascript向ObjC進行通信。在Objective-C的iOS Web應用程序中調用Javascript
我需要的最後一件事就是能夠在沒有任何頁面重新加載的情況下從ObjC調用Javascript函數。我希望這是可能的。
好吧,你可以叫
-[UIWebView stringByEvaluatingJavaScriptFromString:]
,只要你喜歡,不只是響應委託方法。
[self.myWebView stringByEvaluatingJavaScriptFromString:@"myJavaScriptFunction(123.0)"];
你不需要重新加載web視圖發送這樣的信息:
便無法你只是做一個「的loadRequest」,並與內容傳遞一個NSURL喜歡像這樣做:
javascript:myFunction("MyParameter");
應該調用你的函數,而不是重新加載頁面。
您可以通過簡單地使用stringByEvaluatingJavaScriptFromString方法對你的WebView加載了網頁視圖後,撥打您的WebView任何JavaScript函數(在完成之前不要發佈webview)。
可以使用JavaScriptCore框架從Objective-C運行JavaScript代碼。
#import <JavaScriptCore/JavaScriptCore.h>
...
JSContext *context = [[JSContext alloc] init];
[context evaluateScript: @"function greet(name){ return 'Hello, ' + name; }"];
JSValue *function = context[@"greet"];
JSValue* result = [function callWithArguments:@[@"World"]];
[result toString]; // -> Hello, World
這裏是一個演示:
OMG我知道這已經。哈,這裏真的很晚,我因爲不得不從頭開始項目而徹底忘記了而感到恐慌。謝謝。我現在可以上牀休息了。 – 2010-11-15 02:55:15