美文网首页iOS
iOS中OC和JS之间的互调的用法

iOS中OC和JS之间的互调的用法

作者: 左岸花不开 | 来源:发表于2016-11-25 11:09 被阅读12次

一、删除网页中对应的标签:OC调用JS代码


- (void)webViewDidFinishLoad:(UIWebView *)webView

{
 
// JS的代码

   
NSMutableString *JSStM = [NSMutableString string];
   
/**

    
①找到要删除的对应的标签:var headerTag = document.getElementsByTagName('header')[0];

    
②找到要删除的标签对应的父节点:headerTag.parentNode

    
③从父节点中将要删除的标签移除:headerTag.parentNode.removeChild(headerTag);

    
*/

   
// 删除导航

   
[JSStM appendString:
@"var headerTag = document.getElementsByTagName('header')[0];headerTag.parentNode.removeChild(headerTag);"
];

   
// 删除中间的“立即购买”按钮

   
[JSStM appendString:
@"var buyTag = document.getElementsByClassName('buy-now')[0];buyTag.parentNode.removeChild(buyTag);"
];
   
// 删除底部"APP下单返积分抵现金”悬停按钮

   
[JSStM appendString:@"var footerBtnTag = document.getElementsByClassName('footer-btn-fix')[0]; footerBtnTag.parentNode.removeChild(footerBtnTag);"
];

  

   
// 删除底部“各种信息”布局

   
[JSStM appendString:
@"var footerTag = document.getElementsByClassName('footer')[0]; footerTag.parentNode.removeChild(footerTag);"
];

  

   
// 给标签“顶部的图片”添加点击事件

   
/**

    
①JS中给标签添加相应的事件:弹框

    
var figureTag = document.getElementsByTagName('figure')[0].children[0];figureTag.onclick = function(){alert("点我点我点我")};

    
②通过点击某个标签跳转到其他链接:给图片添加点击事件

    
var figureTag = document.getElementsByTagName('figure')[0].children[0];figureTag.onclick = function(){window.location.href = 'http://www.baidu.com'};

    

    
跳转到百度中的OC调用JS代码

    
[JSStM appendString:@"var figureTag = document.getElementsByTagName('figure')[0].children[0];figureTag.onclick = function(){window.location.href = 'http://www.baidu.com'};"];

   
*/

   
// 通过自定义协议头的方式来实现控制器间的跳转,即JS调用OC代码

//    [JSStM appendString:@"var figureTag = document.getElementsByTagName('figure')[0].children[0]; figureTag.onclick = function(){window.location.href = 'xg://?src= '+this.src};"];

   
// 也可写成一下代码

   
[JSStM appendString:
@"var figureTag = document.getElementsByTagName('figure')[0].children[0]; figureTag.onclick = function(){window.location.href = 'xg://www.hahah.com'};"
];

  

   
// OC调用JS代码

   
[webView stringByEvaluatingJavaScriptFromString:JSStM];

  

}

二、通过网页中的JS代码跳转到控制器界面:JS调用OC的代码


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

{
  
NSLog
(
@"%@"
,request.URL.absoluteString);

// 拿到网页上的请求地址

    
NSString
*URLString = request.URL.absoluteString;

    
// 判断网页的请求地址协议是否是我们自定义的那个

    
NSRange
range = [URLString rangeOfString:
@"xg://?src="
];

//    if (range.length > 0) {

    
if
([URLString isEqualToString:
@"xg://www.hahah.com"
]){

                
NSLog
(
@"你点击的是图片"
);

        
 
        
// 控制器的跳转

        
[self.navigationController popToRootViewControllerAnimated:YES];

        
// 拦截到的这个自定义协议的请求时,我是不需要做网页加载的,就返回NO.

        
return NO
;

        
/**
         
温馨提醒:

         
①这里点击标签之后,如果不需要加载任何的网页,就需要return NO;
         
②如果需求是 : 点击网页的分享图标(按钮),跳转到分享页面,业务逻辑跟点击图片实现跳转是一样的,只需要在网页中找到那个分享的标签,确定他的点击事件并发送一个自定义协议头的请求,然后拦截这个特殊协议头的请求即可

         
*/

    
} 
    
return YES
;
}

相关文章

  • JS与OC交互

    iOS js oc相互调用(JavaScriptCore) iOS js oc相互调用(JavaScriptCor...

  • iOS中OC和JS之间的互调的用法

    一、删除网页中对应的标签:OC调用JS代码 二、通过网页中的JS代码跳转到控制器界面:JS调用OC的代码

  • JS和OC相互调用并传值,WebViewJavascriptBr

    JS和OC相互调用并传值,WebViewJavascriptBridge 的使用 在iOS开发中难免会遇到js和o...

  • cocos creator和Objective-C互调用

    本文为ios开发环境下js和obc相互调用的例子。 一 、js调用oc js oc建一个AdMaster文件,继承...

  • iOSUIWebView与js的交互

    最近在iOS项目中需要使用到oc与js之间的相互调用,而且要求是实现方式必须与Android中的相同,方便js中统...

  • iOS中OC和JS的互调

    首先我们要考虑到iOS中OC和JS相互交互的方案:一、WebView的代理:在大部分的app中直接使用,可以在We...

  • iOS与JS(二):MessageHandler(OC&

    参考:iOS下JS与OC互相调用(三)--MessageHandler iOS与JS的相互调用除了URL拦截(iO...

  • iOS与Safari联调

    iOS开发中,难免遇到与JS互调的情形,运用xcode只能看OC部分的代码,无法查看或者调试js端代码。此时Saf...

  • iOS OC和JS互调

    最近朋友让做一个webApp和原生的代码互调,就顺便查了一下资料 总结分享一个 从iOS7开始 苹果公布了Java...

  • 菜鸟教程——iOS与JS交互相互调用

    iOS的系统框架JavaScriptCore可以实现JS与OC互相通讯,本文就简单说下iOS与JS交互相互调用...

网友评论

    本文标题:iOS中OC和JS之间的互调的用法

    本文链接:https://www.haomeiwen.com/subject/rkwipttx.html