基于.net开发chrome核心浏览器【七】
Xilium.CefGlue开源项目的,
CefSharp(据说github的客户端也是用这个开发的,但用起来感觉有点蛋疼)
chromiumfx,这个项目虽然用的人没有CefShrp多,但用起来真的很舒心
输入法提示框不能跟随输入光标的问题,
nw.js,这是一个国内牛人做的开源项目,我关注了很久了!
用nw.js开发一个浏览器也不是不可能,但一定要用nodejs就有点蛋疼了,
Roger Wang发过邮件,哀求他做一个go语言或C#的封装,
下载chromiumfx的类库,注意,你要记下他的版本号,比如目前最新的版本号是:3.2171.13
下载CEF的类库,注意,这里下载的版本号要和前面记下的版本号前两个数字一致,这里就是:3.2171.2069
bin\Debug\cef
bin\Debug\cef
并让这两个DLL拷贝到本地
Chromium运行时占用的一些资源;
|
CfxRuntime.LibCefDirPath = @"C:\path\to\cef\directory";
ChromiumWebBrowser.Initialize();
|
|
var f = wb.GetFrame("mem_index");
var js = File.ReadAllText("login.js", Encoding.UTF8);
f.ExecuteJavaScript(js, "", 0);
|
好,来解释一下这几行代码
|
第一行代码
用webbrowser控件获取一个iframe有好几个重载方法
我这里输入的是iframe的name,
还有CfxFrame GetFrame(long identifier);注意这里可不是iframe的id哦
还有一个函数挺有用的
List<string> GetFrameNames();
得到页面中所有iframe的名字
|
|
第二行代码就不用解释了
你看到我写了login.js应该知道我不是在做什么好事儿
|
|
第三行代码就是让这个iframe执行这段JS脚本
方法的签名是这样的:
void ExecuteJavaScript(string code, string scriptUrl, int startLine);
如果你的iframe已经加载了jquery,那么你执行的代码也是可以使用jqeury的
第二个参数和第三个参数都是和出错调试有关的
|
|
wb.OnLoadingStateChange += wb_OnLoadingStateChange;
void wb_OnLoadingStateChange(object sender, Chromium.Event.CfxOnLoadingStateChangeEventArgs e)
{
if (e.IsLoading == false)
{
//do what you want
}
}
|
|
加载完成的时候e.IsLoading的值是false
|
接管js对话框,并自动触发是或否的按钮JS和C#通信给页面或iframe注册全局的回调函数接管或屏蔽页面的请求
喜欢的人请点推荐,分享知识也不容易,大家快来感谢我
基于.net开发chrome核心浏览器【七】的更多相关文章
- 基于.net开发chrome核心浏览器
本文转载自:http://www.cnblogs.com/liulun/archive/2013/04/20/3031502.html 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一 ...
- 基于.net开发chrome核心浏览器【四】
原文:基于.net开发chrome核心浏览器[四] 一: 上周去北京出差,给国家电网的项目做架构方案,每天都很晚睡,客户那边的副总也这样拼命工作. 累的不行了,直接导致第四篇文章没有按时发出来. 希望 ...
- 基于.net开发chrome核心浏览器【二】
原文:基于.net开发chrome核心浏览器[二] 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一] 二: 相关资源介绍: chrome Frame: 让IE有一颗chrome的心, ...
- 基于.net开发chrome核心浏览器【三】
原文:基于.net开发chrome核心浏览器[三] 本篇我们讲解怎么用CefGlue开发一个最简单的浏览器 一: CefGlue是建立在Cef项目之上的,Cef项目是C/C++的项目:CefGlue只 ...
- 基于.net开发chrome核心浏览器【一】
原文:基于.net开发chrome核心浏览器[一] 说明: 这是本系列的第一篇文章,我会尽快发后续的文章. 源起 1.加快葬送IE6浏览器的进程 世界上使用IE6浏览器最多的地方在中国 中国使用IE6 ...
- 基于.net开发chrome核心浏览器【五】
一:本篇将解决的问题 本章主要为了解决一下几个问题: 1.JsDialog的按钮错位的问题 我们开发出的浏览器,在有些操系统上调用alert,confirm之类的对话框时,确定和取消按钮会出现错位的情 ...
- 基于.net开发chrome核心浏览器【一】(转)
http://www.cnblogs.com/liulun/archive/2013/03/18/2874276.html 说明: 这是本系列的第一篇文章,我会尽快发后续的文章. 源起 1.加快葬送I ...
- 基于.net开发chrome核心浏览器【六】
写在前面: 距离发这个系列的上一篇文章已经过去两个多月了 因为工作上不涉及这一部分的内容,兼且琐事缠身,一直无力动笔写这个系列的第六篇文章 然而,有很多朋友都关注这个系列,希望我能再写写. 写文章有人 ...
- 黄聪:C# 开发Chrome内核浏览器(WebKit.net)
WebKit.net是对WebKit的.Net封装,使用它.net程序可以非常方便的集成和使用webkit作为加载网页的容器.这里介绍一下怎么用它来显示一个网页这样的一个最简单的功能. 第一步: 下载 ...
随机推荐
- Redis所需内存 超过可用内存怎么办
爬虫和转载请注明原文地址:博客园蜗牛 http://www.cnblogs.com/tdws/p/5727633.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...
- 解决eclipse中logcat不显示log的问题
调试程序需要打印一些消息出来,logcat不好用的话就很麻烦了.这个问题折腾了好久,为啥就是不出来呢? 上网找了很多解决办法: 重启eclipse 重启adb 重启logcat ......等等好多 ...
- 获取linux服务器基本信息脚本
为了方便日常运维写的一段简单脚本,用于集中获取服务器操作系统.CPU.内存使用.负载.硬盘使用.网络信息. 脚本比较简单,就不解释了,有兴趣的朋友请自行查看. #!/bin/bash##Name:sy ...
- js补充小知识点(continue,break,ruturn)
1.continue,break,ruturn eg:1-100的和 $(function () { $("#hello").click(function () { var iNu ...
- Jsonp跨域访问
很早之前看过好几篇跨域访问的文章,然后做项目的时候基本没有遇到跨域访问的问题.不过该来的还是会来,前些天终于让我遇到了.于是重温了一下原理这些,再进行实战.于是现在也敢通过实战后的一些理解来和大家分享 ...
- javaweb学习总结(三十八)——事务
一.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐,对应于如下两条sql语句 update from account set mone ...
- jquery 格式化系统时间
Date.prototype.Format = function (fmt) { //javascript时间日期函数 var o = { "M+": this.getMonth( ...
- [moka同学笔记]七、Yii2.0课程笔记(魏曦老师教程)[新增管理员,重置密码]
- python之初体验
1. Python简介: Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明, ...
- jQuery ClockPicker 圆形时钟
ClockPicker.js是一款时钟插件,其实还可以改进,里面的分可以改成短横线. 在线实例 实例预览 jQuery ClockPicker 圆形时钟 使用方法 <div class=&qu ...