摘要

在使用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弹窗的更多相关文章

  1. Cef 重写alert与confirm弹窗

    在使用form内嵌cef浏览本地页面的时候,如果出现alert弹窗,会在标题栏显示页面所在目录.所以想起来重写alert的样式,通过MessageBox进行提示,或者自己写一个弹窗. 以下代码基于 3 ...

  2. JS重写alert,保证弹窗错误的友好性

    // ------------------------------------------------------------- // 重写alert,保证弹窗错误的友好性 var j_oldAler ...

  3. phantomjs处理alert、confirm弹窗

    一:phantomjs处理alert弹窗 脚本实现功能为:点击click me按钮弹出弹窗消息为cheese,点击确定按钮,弹窗关闭 脚本代码为:注意的是phantomjs处理alert弹窗需要将ph ...

  4. 重写Alert和confirm方法去除地址显示

    //重写alert方法,去掉地址显示window.alert = function(name){var iframe = document.createElement("IFRAME&quo ...

  5. js重写alert()弹窗

    //重写alertwindow.alert = function(str){ var alertFram = document.getElementById('alertFram'); var shi ...

  6. java+selenium自动化遇到confirm弹窗,出现NoAlertPresentException: no alert open

    //操作js的confirm弹窗,bool控制是否点击确定,true为点击确定,false为点击取消 public static void OperaterJSOfConfirm(WebDriver ...

  7. jQuery插件css3动画模拟confirm弹窗

    相比浏览器自带的alert.confirm,能力所及,我更喜欢所有的东西都是自定义:首先在head标签(当然喜欢其他地方自己看着办)内引入插件样式表和js.<link rel="sty ...

  8. 重写alert方法,去掉地址显示

    //重写alert方法,去掉地址显示window.alert = function(name){ var iframe = document.createElement("IFRAME&qu ...

  9. selenium+Python(alert 、confirm 、prompt 的处理)

    alert\confirm\prompt 弹出框操作主要方法有: text  返回 alert/confirm/prompt 中的文字信息 accept  点击确认按钮 dismiss 点击取消按钮, ...

随机推荐

  1. order by 字段自动填写脚本

    新版 firefox 中的 hackbar 没有 order by 字段填写, 所以就有了这个: =begin pod sql注入中自动输出order by 的位数 =end pod sub MAIN ...

  2. python里面的引用

    1 对象及其引用 python中,引用是用命名空间来实现的,命名空间维护了变量和对象之间的引用关系. myInt = 27 yourInt = myInt #change the value of y ...

  3. org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from URL

    [报错] org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XM ...

  4. libsvm的使用

    参考:http://www.cnblogs.com/GuoJiaSheng/p/4480497.html http://www.cnblogs.com/tornadomeet/archive/2012 ...

  5. GET和POST两种基本请求方法的区别(转载)

    get与post请求的区别: 通常回答: GET在浏览器回退时是无害的,而POST会再次提交请求. GET产生的URL地址可以被Bookmark,而POST不可以. GET请求会被浏览器主动cache ...

  6. linux开启远程访问端口

    开启3306端口的tcp访问权限 /sbin/iptables -I INPUT -p tcp -dport 3306 -j ACCEPT 保存防火墙信息 /etc/rc.d/init.d/iptab ...

  7. Android应用--QR的生成(二维码)

    二维码的定义: 二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常用的码制 ...

  8. HTML布局思路

    1.DIV+CSS布局 (1)按照由上到下,由里到外的方式 (2)样式由CSS去改变 代码: <style type="text/css"> * { margin:0p ...

  9. 动态SQL与模糊查询

    一: 1.需求 实现多条件查询用户(姓名模糊查询,年龄在指定的最小值与最大值之间) 2.结构目录 3.准备数据与建表 CREATE TABLE d_user( id int PRIMARY KEY A ...

  10. 常用的服务发现对比(Consul、zookeeper、etcd、eureka)

    这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论:   Feature Consul Zookeeper Etcd Eureka 服务健康检查  服务状态,内存,硬盘等  (弱)长连接 ...