如何在Objective C中监听是否调用javascript方法?
例如javascript:
<script>
function someJsFunction(){}
</script>
如何使用UIWebView在目标c中实现侦听器来侦听正在调用的js函数。
我如何使用以下组件? UIWebView shouldStartLoadWithRequest
如何在UIWebView中获取输入框值?
答案 0 :(得分:3)
如果您想通过目标c在js中打印控制台消息,那么您可以使用下面的代码。
//fetch JSContext
//webView is object of UIWebView , in which your js files are already injected
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//evaluate script on context object
[context evaluateScript:@"var console = {};"]; // make console an empty object
// when ever you use "console.log('')" in your JS it will call below block
context[@"console"][@"log"] = ^(NSString *message)
{
NSLog(@"Console msg from js:%@", message);
};
要从目标c执行js函数,请使用以下代码。
NSString *evalScript = [NSString stringWithFormat:@"someJSFun(%@)",param];
[context evaluateScript:evalScript];
现在,如果你想从你的JS调用目标c函数,你可以使用如下的块。
//Suppose you want to call "someObjCFun(param)" from your js then
context[@"someObjCFun"]= ^(JSValue *message)
{
//TODO
//This block will be executed when you will call 'someObjCFun(param)' from your js
};
因此,如果您希望文本框值在目标c中,只需使用上面的块并将文本框值作为参数传递。
P.S。你的JS应该在UIWebView中注入。