当前位置: 首页 > 面试题库 >

从WKWebView中的本机代码调用JavaScript函数

洪承天
2023-03-14
问题内容

在iOS8中使用WKWebView,如何从本机端运行JavaScript函数或以其他方式从本机端与JavaScript通信?似乎没有类似于UIWebView的方法stringByEvaluatingJavaScriptFromString:

(我可以-addScriptMessageHandler:name:在该configuration.userContentController对象上使用,以允许从JS到本机进行通信,但是我正在寻找相反的方向。)


问题答案:

(我在这里提出问题后不久就为此提出了雷达申请。)

几天前刚刚添加了一种新方法(感谢jcesarmobile指出):

添加-[WKWebView evaluateJavaScript:completionHandler:]

方法在iOS 8 beta 3及更高版本中可用。这是新的方法签名:

/* @abstract Evaluates the given JavaScript string. 
 @param javaScriptString The JavaScript string to evaluate. 
 @param completionHandler A block to invoke when script evaluation completes
     or fails. 
 @discussion The completionHandler is passed the result of the script evaluation
     or an error. 
*/ 
- (void)evaluateJavaScript:(NSString *)javaScriptString
         completionHandler:(void (^)(id, NSError *))completionHandler;


 类似资料:
  • 问题内容: 我想从JavaScript代码中调用Python函数,因为JavaScript中没有其他方法可以做我想做的事情。这可能吗?您可以调整以下代码段使其正常工作吗? JavaScript代码: 包含使用高级库编写的函数,这些函数在JavaScript中没有易写的等效项: 问题答案: 您需要做的就是向您的pythoncode发出ajax请求。您可以使用jquery 进行此操作,也可以仅使用ja

  • 问题内容: 在WKWebView中,我们可以使用webkit消息处理程序来调用ObjectiveC / swift代码,例如: 它非常适合没有参数的简单javascript函数。但; 是否可以使用JS回调函数作为参数来调用本机代码? 是否可以从本机代码向JS函数返回值? 问题答案: 不幸的是,我找不到本机解决方案。 但是以下解决方法解决了我的问题 使用JavaScript Promise,您可以从

  • 问题内容: 我正在使用c ++为node.js编写附加组件。 这里有一些片段: 我需要将一个JavaScript函数另存为回调,以便稍后调用。Client类是另一个对象的观察者,应从onAsyncMethodEnds调用javascript回调。不幸的是,当我调用函数“ BeInitiator”时,在回调Call()之前收到“ Bus error:10”错误 感谢建议 问题答案: 您不能从另一个线

  • 问题内容: 通过使用Java Scripting API,我能够在Java中执行JavaScript。但是,有人可以解释一下我需要添加到此代码中以便能够调用C:/Scripts/Jsfunctions.js中的函数吗? 问题答案: 使用读剧本

  • 通过使用Java脚本API,我能够在Java中执行JavaScript。但是,有人能解释一下,为了能够调用C:/scripts/jsfunctions.js中的函数,我需要在这段代码中添加什么内容吗

  • 这可能是一个真正的新手问题,但我正在编写一个Android应用程序,它需要使用一个用C编写的.so库。该.so由几个类组成,是通用C语言,而不是JNI语言。 除了JNI之外,有没有办法从AndroidJava应用程序调用C函数?我所看到的关于JNI的一切都表明,您必须重写本机代码以特定于JNI,如果只给您一个. so,那真是太不方便了。 在Android 4.0.3中,从java应用程序调用本机函