为了账号安全,请及时绑定邮箱和手机立即绑定

如何从Javascript调用Objective C方法并将数据发送回iOS中的Javascript

如何从Javascript调用Objective C方法并将数据发送回iOS中的Javascript

犯罪嫌疑人X 2019-08-31 10:41:07
在iOS中,如何从Javascript中调用Objective-C方法UIWebView并让它将数据发送回Javascript?我知道这可以使用Webkit库在OS X上完成,但是这可以在iOS上实现吗?PhoneGap如何实现这一目标?
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

更改页面的位置可能会导致以下问题:


所有setInterval和setTimeout立即停止在位置更改上

取消位置更改后,每个innerHTML都不起作用!

你可能会得到其他非常奇怪的错误,真的难以诊断......

这里提供的解决方案是:


继续使用相同的URL技术(在js和objective-c上),只需使用iframe更改位置:


 var iframe = document.createElement("IFRAME");

 iframe.setAttribute("src", "js-frame:myObjectiveCFunction";

 document.documentElement.appendChild(iframe);

 iframe.parentNode.removeChild(iframe);

 iframe = null;


查看完整回答
反对 回复 2019-08-31
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

从Objective-C:您可以将字符串中的javascript函数传递给UIWebView。网页将执行它并返回结果。这样您就可以传递变量并从Javascript中获取数据。


- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

例:


NSString *script = @"document.getElementById('myTextField').value";

NSString *output = [myWebView stringByEvaluatingJavaScriptFromString:script];

来自Javascript:将您的数据传递到URL中。拦截UIWebViewDelegate中的URL请求。通过返回NO获取数据并中止URL请求。


<script>window.location = "url://key1/value1"; </script>

拦截URL请求


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType


查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 580 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信