JS与OC交互问题

Kinika 2016-11-22 03:50:35
webview oc与js交互 ,使用JavaScriptCore,-(void)webViewDidFinishLoad:(UIWebView *)webView中注册OC对象给js window的一个自定义对象,现在有个问题,js加载的时候就要执行注册给js的OC对象的方法。请问这种情况怎么样注册,才能在js加载的时候,就给js绑定好OC对象了?
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"---------------END------------------");
_model = [[test alloc] init];
_model.jsObjectDelegate=self;
self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
self.context[@"nobj"] = _model;
}
...全文
228 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kinika 2016-11-29
  • 打赏
  • 举报
回复
引用 1 楼 dodge_cyq 的回复:
JavaScriptCore貌似没有好办法解决办法 在webViewDidStarLoad里面注册代理的话有可能在加载过程中交互,但是在web内部页面跳转后,新的对象还是没有代理。
#pragma mark - UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    
    [self injectJS];
    return YES;
}
在这里注册,可以注册进去。解决问题。
Kinika 2016-11-23
  • 打赏
  • 举报
回复
引用 1 楼 dodge_cyq 的回复:
JavaScriptCore貌似没有好办法解决办法 在webViewDidStarLoad里面注册代理的话有可能在加载过程中交互,但是在web内部页面跳转后,新的对象还是没有代理。
就是纠结在这里了,HTML页加载js资源的时候,当window加载完毕,JS就开始执行了,而webview的代理是在页面加载完后才能注册。这时候注册已经晚了。因为还没注册到方法,而js已经开始调用了。
纯柴爸爸 2016-11-22
  • 打赏
  • 举报
回复
JavaScriptCore貌似没有好办法解决办法 在webViewDidStarLoad里面注册代理的话有可能在加载过程中交互,但是在web内部页面跳转后,新的对象还是没有代理。

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧