栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

iOS JavaScript桥

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

iOS JavaScript桥

有一些库,但是我没有在大型项目中使用任何库,因此您可能想尝试一下:

  • WebViewJavascriptBridge:https : //github.com/marcuswestin/WebViewJavascriptBridge
  • GAJavascript:https://github.com/newyankeepreshop/GAJavascript

但是,我认为这很简单,您可以自己尝试一下。当我需要这样做时,我个人就是这样做的。您可能还会创建一个适合您需求的简单库。

1.从Objective-C执行JS方法

这实际上只是一行代码。

NSString *returnvalue = [webView stringByevaluatingJavascriptFromString:@"your javascript pre string here"];

有关官方UIWebView文档的更多详细信息。

2.从JS执行Objective-C方法

不幸的是,这稍微复杂一点,因为Mac OSX上不存在相同的windowscriptObject属性(和类),因此两者之间无法完全通信。

但是,您可以轻松地从javascript自定义网址进行调用,例如:

window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value

并从Objective-C拦截它:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {   NSURL *URL = [request URL];    if ([[URL scheme] isEqualToString:@"yourscheme"]) {       // parse the rest of the URL object and execute functions   } }

这虽然没有达到应有的效果(或使用windowscriptObject),但它可以工作。

3.收听来自Objective-C的本地JS事件(例如DOM ready事件)

从上面的解释中,您可以看到,如果要执行此操作,则必须创建一些Javascript代码,将其附加到要监视的事件上,然后调用正确的

window.location
调用然后将其拦截。

同样,它不是很干净,但是可以工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号