[Winform]Cefsharp重写alert与confirm弹窗
摘要
在使用winform内嵌cefsharp浏览本地页面的时候,如果出现alert弹窗,会在标题栏显示页面所在目录。所以想起来重写alert的样式,通过winform的MessageBox进行提示。
解决办法
这里有必要提一下,使用的cefsharp版本,因为不同的版本,参数有所变化。
cefsharp:57.0.0.0
添加类JsDialogHandler,实现接口CefSharp.IJsDialogHandler
class JsDialogHandler : CefSharp.IJsDialogHandler
{ public void OnDialogClosed(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser)
{ } public bool OnJSBeforeUnload(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, string message,
bool isReload, CefSharp.IJsDialogCallback callback)
{
return true;
} public bool OnJSDialog(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser,
string originUrl, CefSharp.CefJsDialogType dialogType, string messageText, string defaultPromptText,
CefSharp.IJsDialogCallback callback, ref bool suppressMessage)
{
switch (dialogType)
{
case CefSharp.CefJsDialogType.Alert:
MessageBox.Show(messageText, "提示");
suppressMessage = true;
return false;
case CefSharp.CefJsDialogType.Confirm:
var dr = MessageBox.Show(messageText, "提示", MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
callback.Continue(true, string.Empty);
suppressMessage = false;
return true;
}
else
{
callback.Continue(false, string.Empty);
suppressMessage = false;
return true;
}
break;
case CefSharp.CefJsDialogType.Prompt:
MessageBox.Show("系统不支持prompt形式的提示框", "提示");
break;
default:
break;
}
return false;
} public void OnResetDialogState(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser)
{ }
}
初始化browser时,将自定义的弹窗注册上
_browser = new CefSharp.WinForms.ChromiumWebBrowser(url)
{
BrowserSettings =
{
DefaultEncoding = "UTF-8"
},
MenuHandler = new MenuHandler(),
LifeSpanHandler = new OpenPageSelf(),
JsDialogHandler = new JsDialogHandler(),
Dock = DockStyle.Fill,
};
测试
总结
之前通过js调用c#方法实现,结果不太满意,发现如果程序全屏遮盖任务的情况下,弹框只会出现在任务栏,而不会在页面上显示。造成阻塞,在页面上无法做其他的操作。
[Winform]Cefsharp重写alert与confirm弹窗的更多相关文章
- Cef 重写alert与confirm弹窗
在使用form内嵌cef浏览本地页面的时候,如果出现alert弹窗,会在标题栏显示页面所在目录.所以想起来重写alert的样式,通过MessageBox进行提示,或者自己写一个弹窗. 以下代码基于 3 ...
- JS重写alert,保证弹窗错误的友好性
// ------------------------------------------------------------- // 重写alert,保证弹窗错误的友好性 var j_oldAler ...
- phantomjs处理alert、confirm弹窗
一:phantomjs处理alert弹窗 脚本实现功能为:点击click me按钮弹出弹窗消息为cheese,点击确定按钮,弹窗关闭 脚本代码为:注意的是phantomjs处理alert弹窗需要将ph ...
- 重写Alert和confirm方法去除地址显示
//重写alert方法,去掉地址显示window.alert = function(name){var iframe = document.createElement("IFRAME&quo ...
- js重写alert()弹窗
//重写alertwindow.alert = function(str){ var alertFram = document.getElementById('alertFram'); var shi ...
- java+selenium自动化遇到confirm弹窗,出现NoAlertPresentException: no alert open
//操作js的confirm弹窗,bool控制是否点击确定,true为点击确定,false为点击取消 public static void OperaterJSOfConfirm(WebDriver ...
- jQuery插件css3动画模拟confirm弹窗
相比浏览器自带的alert.confirm,能力所及,我更喜欢所有的东西都是自定义:首先在head标签(当然喜欢其他地方自己看着办)内引入插件样式表和js.<link rel="sty ...
- 重写alert方法,去掉地址显示
//重写alert方法,去掉地址显示window.alert = function(name){ var iframe = document.createElement("IFRAME&qu ...
- selenium+Python(alert 、confirm 、prompt 的处理)
alert\confirm\prompt 弹出框操作主要方法有: text 返回 alert/confirm/prompt 中的文字信息 accept 点击确认按钮 dismiss 点击取消按钮, ...
随机推荐
- ocky勒索软件恶意样本分析1
locky勒索软件恶意样本分析1 1 locky勒索软件构成概述 前些时期爆发的Locky勒索软件病毒这边也拿到了一个样本,简要做如下分析.样本主要包含三个程序: A xx.js文件:Jscript脚 ...
- Number of Airplanes in the Sky
Given an interval list which are flying and landing time of the flight. How many airplanes are on th ...
- HTML播放FLASH(SWF)神器-SWFObject
环境 必须有 swfobject.js和 expressInstall.swf js: http://pan.baidu.com/share/link?shareid=2536087943& ...
- Python_oldboy_常用模块(九)
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & pickle shelve xml处理 yaml处理 configpar ...
- [USACO14MAR]破坏Sabotage
还是二分答案,发现我的$check$函数不太一样,来水一发题解 列一下式子 $$\frac{sum-sum[l,r]}{n-(r-l+1)}<=ans$$ 乘过去 $$sum-sum[l,r]& ...
- ***Linux系统下如何查看及修改文件读写权限
查看文件权限的语句: 在终端输入:ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些:-rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表的是 ...
- Using MongoDB in C#
In order to use MongoDB in C#, you can import MongoDB C# Driver to your project. It's best to create ...
- Ubuntu 下 vi 输入方向键会变成 ABCD 的解决方法
Ubuntu 下 vi 输入方向键会变成 ABCD,这是 Ubuntu 预装的是 vim tiny 版本,安装 vim full 版本即可解决. 先卸载vim-tiny: $ sudo apt-get ...
- T-SQL语句4
一.插入数据 1.insert语句介绍 insert into table_name(column1,column2……column)values(value1,value2,……valueN)//c ...
- 基于nopCommerce的开发框架(附源码)
.NET的开发人员应该都知道这个大名鼎鼎的高质量b2c开源项目-nopCommerce,基于EntityFramework和MVC开发,拥有透明且结构良好的解决方案,同时结合了开源和商业软件的最佳特性 ...