首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS objective-c如何在UIWebView中捕获window.open事件

在iOS Objective-C中,可以通过UIWebViewDelegate来捕获UIWebView中的window.open事件。具体步骤如下:

  1. 首先,确保你的类实现了UIWebViewDelegate协议,并将UIWebView的delegate设置为该类的实例。
代码语言:objective-c
复制
@interface YourViewController : UIViewController <UIWebViewDelegate>
@property (nonatomic, strong) UIWebView *webView;
@end

@implementation YourViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
    self.webView.delegate = self;
    [self.view addSubview:self.webView];
    
    // 加载网页
    NSURL *url = [NSURL URLWithString:@"https://example.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
}

// ...

@end
  1. 实现UIWebViewDelegate的shouldStartLoadWithRequest方法,该方法在每次加载请求之前都会被调用。可以通过判断请求的URL是否为window.open事件来捕获该事件。
代码语言:objective-c
复制
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString *urlString = request.URL.absoluteString;
    
    // 判断是否为window.open事件
    if ([urlString hasPrefix:@"window.open"]) {
        // 处理window.open事件
        // ...
        
        // 返回NO,阻止UIWebView加载该请求
        return NO;
    }
    
    // 其他情况正常加载请求
    return YES;
}

在处理window.open事件时,你可以根据具体需求进行相应的操作,例如打开一个新的UIWebView来加载新的网页,或者在当前UIWebView中加载新的网页。

这是一个基本的示例,具体的实现方式可能会根据你的需求而有所不同。关于UIWebView的更多信息,你可以参考腾讯云的产品介绍链接:UIWebView

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS开发的WKWebView与JS的交互

之前已经写过一个篇OC与JS交互的博客了(博客地址:http://blog.csdn.net/u010105969/article/details/53189934),可当时用来展示网页的控件是UIWebView...,而在iOS8之后苹果推出了WKWebView,此控件也能用来显示网页,可与JS的交互却与UIWebView有所不同。...+Mac OS X/); //ios终端 alert('是否是Android:'+isAndroid); alert('是否是iOS:'+isiOS); if(isAcdroid){  }else...注意:在利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码的方法名,而我们在使用WKWebView的时候就不用了。...首先需要增加html的代码,如在“111111”按钮的点击事件增加代码:  window.webkit.messageHandlers.AppModel.postMessage({body: 'call

2.2K20

判断js引擎是javascriptCore或者v8

来由   纯粹的无聊,一直在搜索JavaScriptCore和SpiderMonkey的一些信息,却无意中学习了如何在iosUIWebView判断其js解析引擎的方法: if (window.devicePixelRatio...在之前的文章objC与js通信实现--WebViewJavascriptBridge,讲述了cordova的桥接机制-通过UIWebView的stringbyEvaluateJavascriptString...对比   1,在iOS通过UIWebView组件的stringByEvaluateJavascriptString:(NSString *)方法来调用。...实现的bridge机制性能堪忧,交互蛋疼;     4)通过UIWebView执行js代码段,有几点限制:由于ios并未给予我们通过UIWebView访问javascript运行时的权限,因此即使通过...引擎并在js,oc两层搭建桥接层,并且每层持有2份相同的配置表,每个表中都记录js,oc透出的API,并结合iOS事件机制完成oc和js的互调;第三种则仍是采用iOS7内置的javascriptCore

3.3K50

iOS开发OC与JS交互(UIWebView

可好像安卓和iOS还是有区别的,因为之前安卓那边可以实现与JS的交互,而我这边却不能。后台后台修改了代码,我这边也就可以进行交互了。.../android                                            } Objective-C...documentView.webView.mainFrame.javaScriptContext"]; _jsContext[@"startFunction"] =^(id obj){ ////这里通过block回调从而获得h5传来的json数据 /*block捕获...JSContexts          我们知道block会默认强引用它所捕获的对象,如下代码所示,如果block中直接使用context也会造成循环引用,这使用我们最好采用[JSContext currentContext...- (void)webViewDidFinishLoad:(UIWebView *)webView{ NSLog(@"加载完成..."); JSContext *context = [_webView

3.9K30

iOS下JS与OC互相调用(四)--JavaScriptCore

它是从iOS7开始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封装了一下,提供了简单快捷的方式与JavaScript交互。...JSValue包含了每一个JavaScript类型的值,通过JSValue可以将Objective-C的类型转换为JavaScript的类型,也可以将JavaScript的类型转换为Objective-C...把JSValue 保存进Objective-C 堆对象是不正确的,这很容易引发循环引用,而导致JSContext不能释放。...2.1 创建UIWebView,并加载本地HTML。 这步跟 文章(一)的步骤一是一样的。...WKWebView如何实现OC与JS交互可以看前面这篇文章:iOS下JS与OC互相调用(三)--MessageHandler UIWebView利用JavaScriptCore来实现交互的示例工程:JS_OC_JavaScriptCore

2.8K10

手把手教你从Core Data迁移到Realm

一.Cordova 说到PhoneGap,就不得不说到Cordova Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOSObjective-C 等)互相通信的一个库...与 Objective-C 通信 Js 使用了两种方式来与 Objective-C 通信,一种是使用 XMLHttpRequest 发起请求的方式,另一种则是通过设置透明的 iframe 的 src...通过在 Js 端创建一个透明的 iframe,设置这个 ifame 的 src 为自定义的协议,而 ifame 的 src 更改时,UIWebView 会先回调其 delegate 的 webView:...execIframe || createExecIframe();             execIframe.src = "gap://ready";         }     }     ... } iOS...这边对应的要在WebView里面写响应的方法 // UIWebView 加载 URL 前回调的方法,返回 YES,则开始加载此 URL,返回 NO,则忽略此 URL - (BOOL)webView:(

1.3K70

iOS Hybrid 框架

一.Cordova 说到PhoneGap,就不得不说到Cordova Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOSObjective-C 等)互相通信的一个库...与 Objective-C 通信 Js 使用了两种方式来与 Objective-C 通信,一种是使用 XMLHttpRequest 发起请求的方式,另一种则是通过设置透明的 iframe 的 src...通过在 Js 端创建一个透明的 iframe,设置这个 ifame 的 src 为自定义的协议,而 ifame 的 src 更改时,UIWebView 会先回调其 delegate 的 webView:...execIframe || createExecIframe();             execIframe.src = "gap://ready";         }     }     ... } iOS...这边对应的要在WebView里面写响应的方法 // UIWebView 加载 URL 前回调的方法,返回 YES,则开始加载此 URL,返回 NO,则忽略此 URL - (BOOL)webView:(

2.3K90

iOS学习巩固笔记-UIWebViewJavaScript

2016-05-0908:24:25 发表评论 0℃热度 写一些平时看书学习iOS的笔记,基础的、进阶的都有,供以后回顾,也可以让刚开始学习的同学学习。...1 UIWebView简介 UIWebViewiOS内置的浏览器控件 系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但能加载远程的网页资源,还能加载绝大部分的常见文件...self.webView loadRequest:[NSURLRequest requestWithURL:url]]; 3.2 HTML 1.Html决定网页的内容,css决定网页的样式,js决定网页的事件...selector withObject:nil]; #pragma clang diagnostic pop 4 NSInvocation的基本使用(任意调用对象消息方法并可以传N多参数的一个类) 在iOS...当下次用户重新打开app的时候,检查沙盒中是否保存有上次捕获到的crash信息。 如果有那么利用专门的接口发送给服务器,以求在后期版本修复。

1.2K70

oc 与 js 互相调用

很久之前用的互相调用的方法,今天要分享下,故记录下 Objective-C,通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。...UIWebView用于在App嵌入网页内容,通常情况下是html格式的网页,也支持pdf, word等文档。 控件优点 可跨平台    开发一次可以部署iOS、Android等平台。...数据通讯复杂    UIWebView与App之间进行数据通讯只能通过javascript或者UIWebViewDelegate来进行,客户端想传参数给UIWebView修改网页或者从网页获取数据都比较复杂...使用场景 排版复杂的内容 需后台灵活控制的界面 原网页 1.加载网页 UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds...www.baidu.com"]]; // 加载请求 [webView loadRequest:request]; [self.view addSubview:webView]; 2.js调oc 网页的点击方法可以调起原生页面

1.2K10

http:blog.csdn.netu010105969articledetails53541088

本文链接:https://blog.csdn.net/u010105969/article/details/101682356 iOS开发的WKWebView与JS的交互 之前已经写过一个篇OC与JS...交互的博客了(博客地址:http://blog.csdn.net/u010105969/article/details/53189934),可当时用来展示网页的控件是UIWebView,而在iOS8之后苹果推出了...WKWebView,此控件也能用来显示网页,可与JS的交互却与UIWebView有所不同。...注意:在利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码的方法名,而我们在使用WKWebView的时候就不用了。...首先需要增加html的代码,如在“111111”按钮的点击事件增加代码: window.webkit.messageHandlers.AppModel.postMessage({body: ‘call

1.5K30

iOS WebView 的 Hybrid 框架设计

UIWebView 和 WKWebView 兼容 iOS8 以后苹果推出了一套新的 WKWebView,对于 UIWebView 和 WKWebView 的区别,总结如下: ?...; } WebView 最关键的地方就是能捕获到前端资源的请求,UIWebView捕获方法是 webView:shouldStartLoadWithRequest:request navigationType...对于一个公司来说,往往一套底层框架需要服务于多条业务线、多个 APP,这就需要在设计的时候考虑好哪些桥接可以在框架层实现(比如跳转 Web 页面,设置数据,获取数据,Back 事件,Close 事件,Alert...hybrid_params={params need encode}&callback=callback_ID 客户端需要根据约定,在 Bridge 处理结束后通过 WebView window 对象的...、Reload 事件、Share 方法等。

1.6K10

JSBridge深度剖析

而在我们实际的开发,app不会注册对应的scheme,而是由前端页面通过某种方式触发scheme(如用iframe.src),然后Native用某种方法捕获对应的url触发事件,然后拿到当前的触发url...Native通知api被调用 上一步,我们已经成功在H5页面触发scheme,那么Native如何捕获scheme被触发呢? 根据系统不同,Android和iOS分别有自己的处理方式。...iOS,UIWebView有个特性:在UIWebView内发起的所有网络请求,都可以通过delegate函数在Native层得到通知。...这样,我们可以在webview捕获url scheme的触发(原理是利用 shouldStartLoadWithRequest) - (BOOL)webView:(UIWebView *)webView...总结 那么我们在实际的开发,如何针对Android和iOS的不同情况,统一出一种完整的方案。 ?

3.5K60

iOS中高级开发人员跳槽涨薪必备面试问题

Objective-C 的 class 是如何实现的?Selector 是如何被转化为 C 语言的函数调用的? UIScrollView 大概是如何实现的,它是如何捕捉、响应手势的?...Objective-C 如何对已有的方法,添加自己的功能代码以实现类似记录日志这样的功能? +load 和 +initialize 的区别是什么? 如何让 Category 支持属性?...Objective-C ,meta-class 指的是什么? UIView 和 CALayer 之间的关系?...UIWebView 有哪些性能问题?有没有可替代的方案。 为什么 NotificationCenter 要 removeObserver? 如何实现自动 remove?...你会如何存储用户的一些敏感信息,登录的 token。 有用过一些开源组件吧,能简单说几个么,大概说说它们的使用场景实现。 什么时候会发生 EXC BAD ACCESS 异常?

1.1K00

【Hybird】274-Hybird App 应用开发 5 个必备知识点复习

分发成本高,更新缓慢,特别是发布应用商店后,需要等到审核周期; 原生应用更新是一个很大的问题, Android还能直接下载整包APK进行更新,但是 iOS,如果是发布 AppStore ,必须通过...一般 Hybrid 的跨平台最少可以跨三个平台: Android App ,iOS App ,普通 webkit 浏览器。...2.2 Cordova 架构图 架构图介绍: Web App 用于存放我们程序的代码,包括业务逻辑,还有一些运行需要的资源(:CSS,JavaScript,图片,媒体文件等)。...而在 Objective-C 端使用一个 NSURLProtocol 的子类来检查每个请求,如果地址是 /!...,这样就可以达到 Objective-C 跟 JS 通信的效果,在 Cordova 的代码多处用到了这个方法,其中最重要的两处如下: 获取 JS 的请求数据: 把 JS 请求的结果返回给 JS 端:

1.3K30

Cordova 是什么

它不会把你的前端页面变成 ios 原生的 objective-c 或者 android 的 java 代码,你的界面还是网页呈现的,渲染在 android 的 android.webkit.WebView...或 iOSUIWebView 。...不太像壳,更像是胶水,因为它不像框架一样团团包住你写的那部分内容,只是在运行在 WebView 的 javascript 代码和原生代码之间建了一座沟通的桥梁, Ionic 这种东西才更像是壳。...(不知道现在还是不是,我之前看的资料版本有点低) 第一个是 iOSUIWebView 将要开始跳转地址的时候被调用,进而根据传入的地址作出反映。...性能问题 界面部分是渲染在webview的网页,通常来说应用逻辑也是js编写。性能是个大问题,但跨平台开发的便捷性又是个大优势。

2.1K30

Hybrid App 应用开发 5 个必备知识点复习

分发成本高,更新缓慢,特别是发布应用商店后,需要等到审核周期; 原生应用更新是一个很大的问题, Android还能直接下载整包APK进行更新,但是 iOS,如果是发布 AppStore ,必须通过...一般 Hybrid 的跨平台最少可以跨三个平台: Android App ,iOS App ,普通 webkit 浏览器。...而在 Objective-C 端使用一个 NSURLProtocol 的子类来检查每个请求,如果地址是 /!...的 src 属性: 5.2.2 iOS 调用 JS 的方式 UIWebView 有一个这样的方法 stringByEvaluatingJavaScriptFromString:,这个方法可以让一个 UIWebView...对象执行一段 JS 代码,这样就可以达到 Objective-C 跟 JS 通信的效果,在 Cordova 的代码多处用到了这个方法,其中最重要的两处如下: 获取 JS 的请求数据: [iOS] 把

2.2K00
领券