cefsharp wpf
github
安装 PM> Install-Package CefSharp.Wpf
解决方案->属性->配置属性->活动解决方案平台—新建-x64
在需要使用的窗体上引用xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
重新生成解决方案
引用
<cefSharp:ChromiumWebBrowser Name="browser" Grid.Row="0" Address="http://www.baidu.com" Margin="10,43,10,10"/>
加载页面
var value="http://cnglogs.com/ives";
browser.Load(value);
获取IBrowser对象,对页面的前进、后退操作需要此对象
private IBrowser IBrowser
{
get
{
return browser.GetBrowser();
}
}
IBrowser.GoForward();//前进
IBrowser.Reload();//重载
IBrowser.StopLoad();//停止
IBrowser.GoBack();//后退
加载svg
安装:Install-Package SharpVectors -Version 1.0.0
添加引用xmlns:svgc="http://sharpvectors.codeplex.com/svgc/"
<Button x:Name="btnPrev" HorizontalAlignment="Left" Width="32" Height="32" Margin="29,10,0,10" Click="btnPrev_Click_1" VerticalAlignment="Top">
<svgc:SvgViewbox IsHitTestVisible="False" Source="pack://application:,,,/resources/svg/arrow-left-2.svg"/>
</Button>
需要注意引用方式 Source="pack://application:,,,/1.svg" ,这样才能正确的引用资源。
svg 文件的属性默认是内容,务必改为 Resource
在同一个页面中打开链接
CefSharp中控制弹窗的接口是 ILifeSpanHandler,对OnBeforePopup进行重写
首先定义操作类
public class OpenPage : ILifeSpanHandler
{
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
{
return false;
}
public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
{
}
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
{
}
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl,
string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures,
IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
newBrowser = null;
var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
chromiumWebBrowser.Load(targetUrl);
return true; //Return true to cancel the popup creation copyright by codebye.com.
}
}
然后添加处理事件 browser.LifeSpanHandler = new OpenPage();
wpf与js互相调用、传值
首先创建测试类来处理前台js请求
public class TestClass
{
public int testFunc(string msg="test")
{
MessageBox.Show($"Get msg:{msg}");
return 1;
}
}
将处理方法注入容器
private void Window_Loaded(object sender, RoutedEventArgs e)
{
InjectMessages();
}
/// <summary>
/// 注入事件消息
/// </summary>
public void InjectMessages()
{
browser.JavascriptObjectRepository.ResolveObject += (s, eve) =>
{
var repo = eve.ObjectRepository;
if (eve.ObjectName == "TestObj")
{
repo.Register("TestObj", new TestClass(), isAsync: true, options: BindingOptions.DefaultBinder);
}
};
}
在前台绑定
<script>
// 注入
CefSharp.BindObjectAsync("TestObj");
function callBackEnd(msg) {
TestObj.testFunc(msg).then((r) => {
alert("Get result:"+r);
})
}
</script>
cefsharp wpf的更多相关文章
- 解决 CefSharp WPF控件不能使用输入法输入中文的问题(代码已提交到 github)
首先,本文所有 代码已经提交到github,需要的可以直接从github获取:https://github.com/starts2000/CefSharp,希望可以帮助到有需要的朋友们. CEF 简介 ...
- cefsharp wpf 中文输入问题解决方法
摘要 最近在搞一个客户端的项目,考虑使用wpf,内嵌webView的方式,访问h5页面.所以使用了CefSharp组件,但发现一个问题,就是在输入中文的时候,无法输入. 解决办法 去官方github的 ...
- Display HTML in WPF and CefSharp
https://www.codeproject.com/articles/881315/display-html-in-wpf-and-cefsharp-tutorial-part Download ...
- 在WPF中使用CefSharp嵌入浏览器
日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中.下面我们使用CefSharp嵌入浏览器来实现. 首先先介绍一下CefSharp嵌入式浏览器,它是基于Google浏览器的一个组件,我们可以在 ...
- WPF使用cefsharp
最近在公司项目上会用到cefsharp.wpf,不知道为什么按照网上的配置一直无法运行成功,怎么配置可以参考以下这篇博文: http://www.cnblogs.com/TianFang/p/4573 ...
- WPF使用CefSharp嵌入网页
1.点击项目应用下的管理NuGet程序包 2.在浏览中输入cefsharp-->查找 CefSharp.Wpf-->点击安装,等待安装完成 3.如果遇到一下问题将解决方案和项目都改成64位 ...
- WPF 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项
1.检查代码不存在问题,最后找到问题,Nut管理包没有安装CefSharp.wpf. 2.安装对应的版本即可.
- 【WPF】使用CefSharp嵌入HTML网页
需求:WPF项目中要做用户的商铺主页,由于考虑到每个商家的主页布局各不相同,不能用XAML写死布局.最好的办法是WPF这边XAML写好一个容器,用户使用HTML可视化编辑器(比如这个)来准备好网页,输 ...
- 在WPF中使用CefSharp嵌入浏览器(转)
在WPF中使用CefSharp嵌入浏览器 日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中.下面我们使用CefSharp嵌入浏览器来实现. 首先先介绍一下CefSharp嵌入式浏览器,它 ...
随机推荐
- 手写走通HTTP server 第三版本
后台 后端 服务端 功能:逻辑处理 算法处理 磁盘交互(数据库 静态文件处理) 要求:健壮性,安全性 并发性能和处理速度 架构合理便于维护扩展 网站后端 httpserver + WebFr ...
- cent os 7.0 出现的问题解决方法
https://www.jb51.net/article/34012.htm python重编译,并进行安装 https://www.jb51.net/os/RedHat/211444.h ...
- 交换机配置-----monitor session
目录 交换机配置-----monitor 1.前言 2.monitor session的作用 3.配置命令 4.使用 交换机配置-----monitor 1.前言 本文章适用于Dell Network ...
- 谷歌浏览器安装xpath使用
一.Xpath-helper插件说明 谷歌浏览的插件,目的是可以定位到具体的元素中,实时验证xpath是不是正确 谷歌插件下载位置:https://chrome.google.com/webstore ...
- 《Linux就该这么学》day4-6
继续学习打卡,这几天有事所以看视频补上了这几天的学习进度. day4:主要重点 tar打包和解压命令 tar -zxvf xxx.tar.gz 解压xxx.tar.gz (将xxx.tar.gz ...
- java面试知识记录
1.数据库 (1)数据库优化 面试求职:数据库常见面试题(数据库优化思路) 数据库优化方案整理 (2)数据库的事务 MySQL——事务(Transaction)详解 MySQL 事务 2.设 ...
- BZOJ5093 图的价值——推式子+第二类斯特林数
原题链接 题解 题目等价于求这个式子 \[ans=n2^{\frac{(n-1)(n-2)}{2}}\sum\limits_{i=0}^{n-1}\binom{n-1}{i}i^k\] 有这么一个式子 ...
- 2018-2019 ACM-ICPC Brazil Subregional Programming Contest B. Marbles(博弈)
题目链接:https://codeforc.es/gym/101908/problem/B 题意:两个人玩游戏,有 n 块石头,初始坐标为(x,y),一次操作可以将一块石头移动到(x - u,y),( ...
- 设置springboot、mysql、nginx,tomcat文件大小(大集合)
1.springboot设置文件大小 第一种: application.properties中添加 spring.http.multipart.maxFileSize=10MBspring.http. ...
- 智能指针weak_ptr记录
智能指针weak_ptr为弱共享指针,实际上是share_ptr的辅助指针,不具备指针的功能.主要是为了协助 shared_ptr 工作,可用来观测资源的使用情况.weak_ptr 只对 shared ...