本周主要进行了oa_web项目的统一对话框(提示框)进行改造。因为我们知道,对于嵌入到客户端的web页面,会使用JS弹出的alert,confirm 对话(提示)框, 不过这个提示框的样式是由浏览器决定的,不能够定制,结果展示出来按钮错位,整个风格与整个软件不统一,使得用户体验很差,客户端C++进行拦截嵌入其中的JS弹出的alert,confirm提示框,阻止JS弹出后,C++获取弹窗信息,进行统一得对话框显示或者提示,使得风格统一,界面友好。

但是要拦截CEF中的alert信息框,是个难点,不过,经过仔细的阅读与查找官方文档,发现了在CefJSDialogHandler中有一个函数 bool OnJSDialog()的函数,先来看一下官方关于这个函数是怎么声明的:

大概意思就是说,这个函数是调用JS 对话框前会先调用这个函数,如果想阻止JS调用自身的对话框,就返回true, 反之返回false.这里面包含JS对话框的信息,我们可以拿来自己去用我们统一得对话框进行展示,并阻止JS自身的对话框。这样就能实现我们将JS的对话框使用C++进行重构。

具体怎么做呢?

1.继承,我们首先让handler的类,继承CefJSDialogHandler类

2.声明,在handler类中声明一下方法(这个方法是CefJSDialogHandler的虚函数)

3.实现, 在 hander的.cpp函数里进行实现JS弹窗的拦截,与统一对话框的展示

这里面的StyledMessageBox :: showMessage是我们实现的静态方法显示一个对话框,注意,这个对话框肯定是模态的,要等到用户确认之后,才进行返回结果,然后,将JS的弹窗给禁止掉,就完成了。

然后写一个测试的JS代码(这里要感谢@ 老师进行的技术支持),。使用客户端进行加载。

点击web页面的按钮,测试结果如下。就完成了我们将JS的弹窗重写为C++的弹窗了

android拦截js弹窗,C++ 拦截 CEF 的JS 弹窗(Alert, Confirm),改造为C++的对话框相关推荐

  1. js请求结果拦截机器_CefSharp请求资源拦截及自定义处理

    前言 在CefSharp中,我们不仅可以使用Chromium浏览器内核,还可以通过Cef暴露出来的各种Handler来实现我们自己的资源请求处理. 什么是资源请求呢?简单来说,就是前端页面在加载的过程 ...

  2. Android 5.0 Usb调试拦截分析及修改

    当我们调试安卓机器时,第一次插上usb线,会弹出一个授权的对话框,(前提是打开了usb调试功能)点击确认,才会允许调试. 如果我们想机器默认就可以调试该怎么做呢? 如果我们想动态拦截,需要用户输入帐号 ...

  3. 【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )

    文章目录 一.GOT 表拦截与插桩拦截 二.插桩拦截简介 三.插桩拦截涉及的 ARM 和 x86 中的跳转指令 一.GOT 表拦截与插桩拦截 函数拦截有 222 种方式 : 使用 GOT 表进行函数拦 ...

  4. html 弹窗被拦截,window.open()弹窗被浏览器拦截的解决方法

    本篇文章给大家带来的内容是关于window.open()弹窗被浏览器拦截的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 什么情况下会弹窗被拦截 当window.open为用 ...

  5. python 拦截windows弹窗广告_win10怎么阻止弹窗广告拦截功能的方法

    自从微软于2015年7月推出Windows 10以来,用户一直抱怨广告以某种方式投放到桌面,无论是微软拥有应用程序或服务,用户一直通过第三方Windows应用商店中寻求解决方法.毫无疑问,广告是恼人的 ...

  6. 【源码分析】Android触摸事件的分发拦截

    Android中View的分发拦截机制是一块重要的内容,网上也有很多大神进行过相关的分析. 在这篇文章里我将以自己的理解尽量全面地分析整个流程,有些分析结果是很多文章没有提及的. 整个分析过程将通过d ...

  7. Android OkHttp 源码解析 - 拦截器

    一.前言 看一下 RealCall 中的拦截器排序: Response getResponseWithInterceptorChain() throws IOException {// Build a ...

  8. 自动化软件测试 - 通过 Android Studio 开发 App 自动拦截读取短信验证码

        之前一期介绍了怎样通过 Python 的代码去获取短信验证码去进行软件测试,这一期将主要介绍 怎样 通过 Android Studio 开发 App 自动拦截读取短信验证码.     Andr ...

  9. html避免js脚本注入,chrome浏览器拓展——js脚本拦截及注入

    概要 该浏览器拓展插件是拥有为页面拦截和注入js功能的chrome浏览器扩展,可以拦截页面脚本.检索页面脚本文件.下载页面脚本文件.为页面注入js文件,以及为页面注入requirejs和require ...

最新文章

  1. Android通过ksoap2调用.net(c#)的webservice
  2. R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集
  3. HDU 2149 Public Sale (博弈)
  4. Flash与组件:国外收费组件网站
  5. 印度孟买机器人餐厅_宝莱坞机器人2.0:重生归来一起来看印度神片!
  6. python接口测试之requests详解_Python接口测试-requests库
  7. Python二级笔记(13)
  8. Hashmap扩容时出现循环链表(jdk1.8把头插法换成了尾插法的原因)
  9. oracle日志存放默认位置,oracle——数据库日志存放位置
  10. 卷积神经网络(CNN)结尾篇:可视化跟踪(Visualize)
  11. cpu224xp生产方案
  12. 抖音私域运营的新玩法
  13. k8s---adm构建
  14. contiki笔记2-contiki的第一个程序
  15. 苹果企业证书_IOS_苹果企业签名_企业签名的圈外证书 拒绝频繁掉签!
  16. 微擎上传图片失败——加密版本不能使用__DIR__或者__FILE__
  17. i5 11400和锐龙r5 5600X哪个强
  18. 创意svg加载loading小猫动画
  19. 梅科尔工作室-赵凌志-鸿蒙笔记4
  20. windows操作系统支持文件名大小写区分的设置方法

热门文章

  1. 发现大家对销售感兴趣,再来两则(二)
  2. Android系统共享内存
  3. 潇洒郎: git配置、拉取、提交代码
  4. 20小时上手移动端自动化测试-张璇-专题视频课程
  5. 【例4-6】香甜的黄油
  6. 8puzzle java 代码_八数码难题(8 puzzle)深度优先和深度优先算法
  7. 攻防世界Misc:nice_bgm
  8. 站长必装软件之火孤插件
  9. 最令程序员沮丧的 10 件事
  10. python均值滤波_均值滤波、高斯滤波python实现