从cef-chromium源码中寻找网页链接点击事件
来源:互联网 发布:淘宝的孕妇装 编辑:程序博客网 时间:2024/06/06 09:41
本人现在有一个利用libcef的软件,想寻找网页链接点击事件的方法,又不想利用JS,因为页面太多。于是想到了这个方法,
记录下来,以便日后再需时查看,也方便有此需求的人。
前提是你已经编译了cef-chromium的源码,cefbuilds下载的只是已经编译好的libcef库和调用接口,
因此得真正的编译cef和chromium的源码,才能找到解决办法。
如果你还没编译成功,请看这篇:
从源码编译cef-chromium的正确步骤
当编译好cef-chromium的源码后,就可以开始找网页链接点击事件了。
因为是点击,所以chromium源码中应该包含click事件,本人不才,是通过click这个字符串搜索的,最后居然也找到了,
网页链接点击事件是在WebKit的html事件中处理的。
我的cef-chromium源码在E盘,具体目录为:
E:\cef-chromium\chromium\src\third_party\WebKit\Source\core\html\HTMLAnchorElement.cpp
在HTMLAnchorElement.cpp中有这么一个成员函数:
void HTMLAnchorElement::handleClick(Event* event){ event->setDefaultHandled(); LocalFrame* frame = document().frame(); if (!frame) return; StringBuilder url; url.append(stripLeadingAndTrailingHTMLSpaces(fastGetAttribute(hrefAttr))); appendServerMapMousePosition(url, event); KURL completedURL = document().completeURL(url.toString());...
这个handleClick成员函数便是处理网页超链接点击的方法,
KURL completedURL = document().completeURL(url.toString());
这个url.toString()就是点击的链接地址,在这句下面处理获取到的地址就可以了,如果不想让网页加载,直接在获取到链接地址后return即可。
这个url.toString()返回的是String类型,它是定义在chromium内的,想转换链接地址到char*可以用这个方法:
const char* sUtf8Data = url.toString().utf8().data();有一点要注意,转换后的sUtf8Data是utf8类型的字符串。
0 0
- 从cef-chromium源码中寻找网页链接点击事件
- 寻找cef-chromium页面鼠标单击事件
- 从源码编译cef-chromium的正确步骤
- 从源码编译cef-chromium的正确步骤
- CEF Chromium Embedded Framework
- Windows下从源码编译CEF
- Windows7下从源码编译CEF
- 点击TextView中链接,自定义处理事件
- 自动获取字符串中的网页,邮箱等链接,点击事件
- 从网页源文件中得到链接
- 正则从网页中提取网址链接
- The Chromium Embedded Framework (CEF)
- 模拟网页点击事件
- 点击RichTextBox中的链接,在默认浏览器中打开网页
- app中webview显示网页,类似于微信里点击链接
- Android TextView中链接(link)点击事件的截取
- 监听TextView中链接文本的点击事件
- Android TextView中链接(link)点击事件的截取
- poj Pots(BFS)(路径记录)(模拟)
- 眼图——概念与测量(摘记)
- hbuider 集成自己的插件后不能用chrome调试的解决方案
- 初写Cocos2dX Box demo
- py2exe安装及使用; 复制cmd中的内容小记
- 从cef-chromium源码中寻找网页链接点击事件
- HTML(3)基本标签
- 卸载nginx 并重新安装
- git 常见错误
- 我的2016——比惨,我要赢
- Python的md5加密
- Jedis-单独使用demo(包括redis五种数据类型常见操作)
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
- ios 时间格式转换