- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 CEFSharp 的屏幕抓取应用程序,在我将 CEFSharp 更新到最新版本之前,该应用程序运行良好。看来我注册 javascript 扩展函数的方式不再有效。这是我的启动代码:
[STAThread]
public static void Main()
{
try
{
CefSettings settings = new CefSettings();
settings.RegisterExtension(new CefExtension("showModalDialog", Resources.showModalDialog));
//Perform dependency check to make sure all relevant resources are in our output directory.
Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
ProcessCommandLine();
var browser = new BrowserForm("https://www.google.com");
Application.Run(browser);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
如果我注释掉 settings.RegisterExtension 行,它运行正常。它曾经有效。这是我的扩展的代码:
(function () {
absolutePath = function (href) {
var link = document.createElement("a");
link.href = href;
return (link.protocol + "//" + link.host + link.pathname + link.search + link.hash);
}
showModalDialog = function (url, arg, opt) {
url = url || ''; //URL of a dialog
arg = arg || null; //arguments to a dialog
opt = opt || 'dialogWidth:300px;dialogHeight:200px'; //options: dialogTop;dialogLeft;dialogWidth;dialogHeight or CSS styles
var caller = showModalDialog.caller.toString();
var dialog = document.body.appendChild(document.createElement('dialog'));
dialog.setAttribute('style', opt.replace(/dialog/gi, ''));
dialog.innerHTML = '<a href="#" id="dialog-close" style="position: absolute; top: 0; right: 4px; font-size: 20px; color: #000; text-decoration: none; outline: none;">×</a><iframe id="dialog-body" name="dialog-body" src="' + absolutePath(url) + '" style="border: 0; width: 100%; height: 100%;"></iframe>';
//document.getElementById('dialog-body').contentWindow.dialogArguments = arg;
document.getElementById('dialog-close').addEventListener('click', function (e) {
e.preventDefault();
dialog.close();
});
document.getElementById('dialog-body').addEventListener('load', function (e) {
this.style.height = this.contentWindow.document.body.scrollHeight + 'px';
this.style.width = this.contentWindow.document.body.scrollWidth + 'px';
this.contentWindow.close = function () {
dialog.close();
};
this.contentWindow.dialogArguments = arg;
this.window = this.contentWindow;
});
dialog.showModal();
//if using yield
if (caller.indexOf('yield') >= 0) {
return new Promise(function (resolve, reject) {
dialog.addEventListener('close', function () {
var returnValue = document.getElementById('dialog- body').contentWindow.returnValue;
document.body.removeChild(dialog);
resolve(returnValue);
});
});
}
//if using eval
var isNext = false;
var nextStmts = caller.split('\n').filter(function (stmt) {
if (isNext || stmt.indexOf('showModalDialog(') >= 0)
return isNext = true;
return false;
});
dialog.addEventListener('close', function () {
var returnValue = document.getElementById('dialog-body').contentWindow.returnValue;
document.body.removeChild(dialog);
//nextStmts[0] = nextStmts[0].replace(/(window\.)?showModalDialog\(.*\)/g, JSON.stringify(returnValue));
//eval('{\n' + nextStmts.join('\n'));
});
throw 'Execution stopped until showModalDialog is closed';
};
})();
扩展的语法是否发生了变化?
最佳答案
https://bugs.chromium.org/p/chromium/issues/detail?id=665391
这是 Chrome 的问题,看起来他们不会修复它。
关于javascript - CEFSharp RegisterExtension 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43353445/
CefSharp 有许多运行所需的依赖项和库。构建文件夹很困惑。如何将所需的 .dll 和 .pak 依赖项移至子文件夹? 最佳答案 首先,为了让一切变得更容易,我建议向 Visual Studios
我正在考虑将项目移动到 WinForm 应用程序中的嵌入式 WebView 类型体系结构中,并且正在考虑 DotNetBrowser 和 CefSharp。 经过多次搜索,我似乎找不到免费 CefSh
我正在尝试使用 CefSharp 访问 URL 并捕获在加载给定页面期间检索到的特定资源。大概作为每个资源的流或字节数组。 CefSharp 提供接口(interface) IRequestHandl
为了使用 WebClient 而不是 Chrome 进行下载,我截获了一个下载 URL。然后我在使用 获取 cookie 时遇到了问题。访客 .我陷入的陷阱是我不明白访问者是异步运行的,因此只有 30
使用 CEFSharp 浏览器构建应用程序,在我的机器上运行良好,但在服务器上崩溃并出现以下错误: System.IO.FileLoadException:无法加载由“CefSharp.Core.dl
我已经在 CefSharp WinForms 应用程序上工作了几个星期,并且没有遇到任何问题。今天早上,在向应用程序添加一些东西时,我试图运行它来测试一些东西并得到以下错误: System.IO.Fi
使用 XMLHttpRequest which is the subject of my previous question使用自定义方案我正在加载本地文件。为了测试,我使用了 disable-web
我关注了这个link实现 CefSharp 应用程序。 但是我在编写 MainWindow.xaml 时卡住了。 Blend for VS 2015 说, The name ChromiumWebBr
我收到消息命名空间“clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf 中不存在名称 ChromiumWebBrowser 当我运行这个
是否可以使用 CefSharp 获取网页的屏幕截图?我找到了关于GetImage()的信息方法,但它似乎不再受支持。有没有其他办法?我需要从屏幕外浏览器获取屏幕截图,因此使用显示浏览器的屏幕截图不是解
我正在使用 CEFsharp 浏览器并通过 LoadingStateChanged 事件确定页面已完成加载,但它会触发多次。 我需要它只在页面完全加载后触发,这怎么办? private async v
我需要在 Wpf 应用程序中使用 Web 浏览器,我尝试使用工具箱中的浏览器,但遇到一些问题并转到 CefSharp。 public MainWindow() { InitializeCompone
如何使用CefSharp获取HTML元素的值? 我知道如何使用此默认WebBrowser控件: Dim Elem As HtmlElement = WebBrowser1.Document.GetEl
我们希望在 wpf 应用程序中的基于 chromium 的浏览器中显示网页。在浏览器中显示的网站也应该显示在另一个屏幕上,但没有交互。我想将cefsharp wpf浏览器控件和cefsharp离屏渲染
有人可以帮助我了解如何在使用 CefSharp winforms 控件时捕获鼠标事件吗? 最佳答案 我没有详细检查以下示例链接,但搜索“global mouse hook”应该会带您到正确的方向。 示
我使用 64 位版本的 CefSharp 3 创建了一个示例应用程序。当所有必需的库与主应用程序可执行文件位于同一文件夹时,它工作正常。我想知道是否有办法从另一个路径读取 CefSharp 所需的 d
我正在开发一个项目,我希望使用 Chromium Web 浏览器并能够读取通常通过 DevTools“网络”选项卡获取的数据。所以基本上我真正需要的是 URL 和状态代码(404、200、50x 等)
在我的项目中加载 CefSharp 程序集时出现错误。 CefSharp 和 CefSharp.WinForms 都没有强命名。有什么办法解决这个问题吗? 错误: Referenced assembl
我已经成功地将 WebView 添加到 WPF 中的窗口。如何向浏览器添加选项卡?我用谷歌搜索但没有找到任何关于在 CefSharp 中制作标签式浏览器的好文档。 var settings = new
我正在使用 CefSharp Winforms x86 构建。我想播放此链接中的视频: http://developers.canal-plus.com/rx-player/ 在 google chr
我是一名优秀的程序员,十分优秀!