dcef3 指出一个坑
dcef3 指出一个坑
http://ju.outofmemory.cn/entry/80119
dcef3提供了TChromium,可能会有人想用这个来开发游览器
可惜这个实现起来有问题
问题就出在OnBeforePopup这个事件上
很多人以为只要在这做一个拦截
让新的TChromium来加载这个新网页即可
这是一个大坑,我之前发布的游览器也是这样
get可能表面上还看不出什么问题,
但如果是个post请求,问题就大了
一个好好的post在我们这个所谓的游览器里莫名其妙的变成了get请求
所以开发游览器最好的方法就是不要去用这个TChromium
或者说凡是涉及到不是那种简单跳转网页的,都不要用TChromium
你会进坑的
自己用底层的dcef3
在这里我放出一段核心代码(参考TChromium的源码)
另外你还需要自己处理消息循环 CefDoMessageLoopWork
procedure CreateBrowser;
var
info: TCefWindowInfo;
settings: TCefBrowserSettings;
begin
if (FParentRect.IsEmpty) or (FParentHandle = 0) then Exit;
FillChar(info, SizeOf(info), 0);
info.Style := WS_CHILD or WS_VISIBLE or WS_CLIPCHILDREN or WS_CLIPSIBLINGS or WS_TABSTOP;
info.parent_window := FParentHandle;
info.x := FParentRect.left;
info.y := FParentRect.top;
info.Width := FParentRect.right - FParentRect.left;
info.Height := FParentRect.bottom - FParentRect.top;
FillChar(settings, SizeOf(TCefBrowserSettings), 0);
settings.size := SizeOf(TCefBrowserSettings);
GetSettings(settings);
{$IFDEF CEF_MULTI_THREADED_MESSAGE_LOOP}
CefBrowserHostCreate(@info, FHandler, FDefaultUrl, @settings,
TCefRequestContextRef.CreateContext((FHandler as ICefClientHandler).GetRequestContextHandler));
{$ELSE}
CefLoadLibDefault;
FBrowser := CefBrowserHostCreateSync(@info, FClientHandler, FDefaultUrl, @settings,
TCefRequestContextRef.CreateContext((FClientHandler as ICefClientHandler).GetRequestContextHandler));
FBrowserId := FBrowser.Identifier;
{$ENDIF}
end;
dcef3 指出一个坑的更多相关文章
- 用html5的视频元素所遇到的第一个坑
html5 有一个video标签,这个是被大家所熟知的事情.按照w3c的规范,我认真的写出如下代码: <video preload="auto" controls=" ...
- 监控jvm的一个坑
监控jvm的一个坑 1,遇到的问题 我按照以往文档,在catalina.sh里追加jvm的监控api,如下 紧接着我启动 tomcat. 未报任何错误. 发现 lsof –i:12000, 12000 ...
- JavaScript中sort方法的一个坑(leetcode 179. Largest Number)
在做 Largest Number 这道题之前,我对 sort 方法的用法是非常自信的.我很清楚不传比较因子的排序会根据元素字典序(字符串的UNICODE码位点)来排,如果要根据大小排序,需要传入一个 ...
- PHP中逻辑运算符and/or与||/&&的一个坑
我原来以为PHP中的and和&&是一样的, 只是写法上为了可读性和美观, 事实上我错了. 这里面深藏了一个坑! 看以下代码: $bA = true; $bB = false; $b1 ...
- 困扰多日的C#调用Haskell问题竟然是Windows的一个坑
最近一直被C#调用Haskell时的“尝试读取或写入受保护的内存”问题所困扰(详见C#调用haskell遭遇Attempted to read or write protected memory,C# ...
- 在VS2012中GridView的一个坑
使用GridView的时候遇到了一个坑,一个增加一个选择按钮~貌似在某些情况下会出现一个是否允许选择的属性,貌似会默认为fals,然后就返回不了指定ID!坑,巨坑!但是今天居然找不到这个属性了,难道是 ...
- 【转载】linux命令行计算器bc的一个“坑”
[转载自]http://blog.chinaunix.net/uid-174325-id-3518953.html 结论:ibase,obase可以使用在不同的计算公式里,但是尽量把obase放iba ...
- 使用ffmpeg视频编码过程中踩的一个坑
今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果: ...
- Jquery-全选和取消的一个坑
在做一个商城的购物车的时候遇到了一个坑, 购物车一般都有全选按钮, 再次点击就会全部消除, 在网上查到的答案全部都是使用attr来做的, 无一例外都不能用, 之后才知道要使用jquery的prop和r ...
随机推荐
- Delphi 标识符
- zabbix发送报警的脚本
zabbix报警媒介:自定义脚本Custom alertscripts 邮件报警准备工作:安装sendEmail zabbix-server 的 配置文件 /etc/zabbix/zabbix_ser ...
- 23_1spring基础
1.spring是什么 2.spring的优势 3.spring体系结构 4.耦合 程序间的依赖关系:类之间的依赖和方法之间的依赖. 解构:降低程序间的依赖关系. 实际开发中应该做到:编译期不依赖,实 ...
- python 文件夹压缩
import os import zipfile def zipDir(dirpath,outFullName): """ 压缩指定文件夹 :param dirpath: ...
- java数据结构1--数组、排序和Arrays工具类
数组:Array 数组的定义 数组的内存结构 数组定义常见问题 数组常见操作 Java参数传递问题--值传递 二维数组 1.数组概念 同一种类型数据的集合,可以是基本数据类型,也可以是引用数据类型. ...
- Softmax函数与交叉熵
在Logistic regression二分类问题中,我们可以使用sigmoid函数将输入Wx+b映射到(0,1)区间中,从而得到属于某个类别的概率.将这个问题进行泛化,推广到多分类问题中,我们可以使 ...
- CodeForces-1167C
链接: https://vjudge.net/problem/CodeForces-1167C 题意: In some social network, there are n users commun ...
- 【NOIP2016提高A组模拟9.15】Math
题目 分析 因为\((-1)^2=1\), 所以我们只用看\(\sum_{j=1}^md(i·j)\)的值模2的值就可以了. 易证,一个数x,只有当x是完全平方数时,d(x)才为奇数,否则为偶数. 那 ...
- hdu 1724 : Ellipse 【Simpson积分】
题目链接 题意:给出椭圆方程中的a和b,再给出l.r,求l到r的积分的二倍. 输出时要求精度控制为保留到小数点后3位,如下代码中,eps设为1e-9 1e-8时均TLE,1e-4可以AC,1e-3会W ...
- SQL复杂筛选
SELECT A.MATERIALID,A.MATERIALNAME,ISNULL(A.COMPIDSEQ,'') COMPIDSEQ,ISNULL(A.SUPPLYID,'') SUPPLYID,S ...