从Objective-C在iOS web应用程序中调用Javascript
我正在开发一个web应用程序,它显示在从Objective-C在iOS web应用程序中调用Javascript,javascript,ios,objective-c,Javascript,Ios,Objective C,我正在开发一个web应用程序,它显示在UIWebView中。应用程序是本地加载的,即不是从web服务器加载的。我通过UIWebViewDelegate协议中的shouldStartLoadWithRequest:方法从Javascript与ObjC通信 我最不需要的是能够从ObjC调用Javascript函数,而无需重新加载任何页面。我希望这是可能的。您是否可以通过执行“loadRequest”并向其传递一个包含以下内容的NSURL来做到这一点: javascript:myFunction("M
UIWebView
中。应用程序是本地加载的,即不是从web服务器加载的。我通过UIWebViewDelegate
协议中的shouldStartLoadWithRequest:
方法从Javascript与ObjC通信
我最不需要的是能够从ObjC调用Javascript函数,而无需重新加载任何页面。我希望这是可能的。您是否可以通过执行“loadRequest”并向其传递一个包含以下内容的NSURL来做到这一点:
javascript:myFunction("MyParameter");
它应该调用您的函数,但不能重新加载页面。好的,您可以调用
-[UIWebView stringByEvaluatingJavaScriptFromString:]
只要您愿意,而不仅仅是响应委托方法。您可以在Web视图中调用任何javascript函数,只需在加载Web视图后在Web视图上使用stringByEvaluatingJavaScriptFromString方法即可:
[self.myWebView stringByEvaluatingJavaScriptFromString:@"myJavaScriptFunction(123.0)"];
发送此消息不需要重新加载webview(只需在完成之前不要释放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
#导入
...
JSContext*context=[[JSContext alloc]init];
[context evaluateScript:@“函数问候(名称){return'Hello',+name;}”];
JSValue*function=context[@“问候”];
JSValue*result=[function callWithArguments:@[@“World”];
[结果字符串];//->你好,世界
下面是一个演示:
天哪,我早就知道了。哈,现在真的很晚了,我因为不得不重新开始这个项目而陷入恐慌,完全忘记了。谢谢我现在可以上床休息了。