- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个只加载一个网页的程序。用户无法访问任何其他网页,并且此窗口窗体是全屏的,没有边框。
我设法使用 Windows 窗体和 cefsharp 制作了一个,但现在我遇到了不同的问题。当我尝试登录时,这个特定网站会显示新的弹出窗口。通常在 chrome 上,它只是为此打开另一个选项卡,但在这里,它不会创建新选项卡,而是打开新的弹出窗口。所以我编写了代码将弹出窗口定向到 newtab,如下所示,但它只为第一个标签页的第一个弹出窗口创建新标签。
例如,第 1 页打开弹出窗口,然后此代码采用该弹出窗口并创建 tabPage 2。到那时它工作正常,但如果 tabPage2 中有弹出窗口,它只会打开弹出窗口而不是创建新选项卡。
我该如何解决这个问题?请帮忙.. 我认为它正在创建新选项卡,仅用于从 tabPage1 弹出以及从 tabPage2 获得的任何弹出窗口,它不会打开新选项卡。有没有办法解决这个问题并修复它?
我在 visual studio 2017 winform,cefsharp ver 67.0.0 上做这个
主类
private void initialize_browser()
{
try
{
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
//main browser
chromeBrowser = new ChromiumWebBrowser("url");
LifespanHandler life = new LifespanHandler();
chromeBrowser.LifeSpanHandler = life;
life.popup_request += life_popup_request;
this.tabPage1.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill;
}
catch (Exception ex)
{
MessageBox.Show("Error in initializing the browser. Error: " + ex.Message);
}
}
private void life_popup_request(string popup_request)
{
this.Invoke((MethodInvoker)delegate ()
{
string title = "TabPage " + (tabControl1.TabCount + 1).ToString();
TabPage myTabPage = new TabPage(title);
tabControl1.TabPages.Add(myTabPage);
tabControl1.SelectTab(tabControl1.TabCount - 1);
ChromiumWebBrowser chromeBrowser = new ChromiumWebBrowser(popup_request);
chromeBrowser.Parent = myTabPage;
chromeBrowser.Dock = DockStyle.Fill;
});
}
LifespanHandler 类
public class LifespanHandler : ILifeSpanHandler
{
//event that receive url popup
public event Action<string> popup_request;
bool ILifeSpanHandler.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)
{
//get url popup
if (this.popup_request != null)
this.popup_request(targetUrl);
//stop open popup
newBrowser = null;
return true;
}
bool ILifeSpanHandler.DoClose(IWebBrowser browserControl, IBrowser browser)
{ return false; }
void ILifeSpanHandler.OnBeforeClose(IWebBrowser browserControl, IBrowser browser) { }
void ILifeSpanHandler.OnAfterCreated(IWebBrowser browserControl, IBrowser browser) { }
}
最佳答案
我遇到了同样的问题,所以我解决了它。
您应该将变量 Life 声明为全局变量LifespanHandler life = new LifespanHandler();
在 life_popup_request 函数中添加:chromeBrowser.LifeSpanHandler = life;
private void life_popup_request(string popup_request){这个。调用((MethodInvoker)委托(delegate)(){字符串标题 = "TabPage "+ (tabControl1.TabCount + 1).ToString();
TabPage myTabPage = new TabPage(title);
tabControl1.TabPages.Add(myTabPage);
tabControl1.SelectTab(tabControl1.TabCount - 1);
ChromiumWebBrowser chromeBrowser = new ChromiumWebBrowser(popup_request);
chromeBrowser.LifeSpanHandler = life;
chromeBrowser.Parent = myTabPage;
chromeBrowser.Dock = DockStyle.Fill;
});
祝你好运!
关于c# - cefsharp 弹出到 newtab。二级弹出窗口的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53040021/
在我的网站上 https://example.com ,我允许用户设置他们网站首选项的 cookie,其中包括让他们打开或关闭夜间模式。 我为 https://example.com 创建了一个 ch
我正在制作一个只加载一个网页的程序。用户无法访问任何其他网页,并且此窗口窗体是全屏的,没有边框。 我设法使用 Windows 窗体和 cefsharp 制作了一个,但现在我遇到了不同的问题。当我尝试登
我无法在新标签页上运行我的内容脚本(它没有分配给任何 url)。 我查看了有关该主题的各种帖子,即 Does content script have access to newtab page? 和
我有一个要在每个页面上运行的脚本。要做到这一点非常简单,我只需设置 @include * 即可完成。它显示在每个页面上,由我在代码中分配给它的热键组合激活。它按预期工作,没有问题。 但是,我希望它也可
我尝试编写一个 Google Chrome 扩展程序,当我在短时间内左右单击时,它只会打开一个新选项卡。 JavaScript 没有问题,但我将其实现为“content_scripts”脚本。 在其他
下面的代码是通过 POST 将值传递到新选项卡。 我的问题是需要验证下拉列表中选择的值。 因为“选择”值是默认值。如果选择默认值,则必须显示一些警报,否则其余行为与下面的代码相同。 Select
我正在使用 ubuntu 11.04,我正在尝试编写一个 bash 脚本,该脚本在一个新选项卡中打开一个文件的 url,休眠时间为 15 秒左右,文件长 198 行,每个文件都有一个 url线。我有两
我是 Android 开发新手,正在实现一些基本程序。我的最低 SDK 是 KitKat。 我想创建一个有多个标签页的应用程序。我正在使用以下方法: ActionBar actionBar = get
这个问题在这里已经有了答案: How do I return the response from an asynchronous call? (41 个回答) Why is my variable
这是我的脚本: jQuery('#textfield').keydown(function (e){ var text = document.getElementById('textfield
这里的问题是,我无法同时关注新选项卡/窗口,而是将焦点保留在第一个选项卡/窗口中。请帮忙。 driver=new InternetExplorerDriver(); driver.findElemen
我有一个包含 HTML 表单和一些基本 jQuery/AJAX 的页面。没有警告,没有错误,一切正常。但是,当我打开选项卡时,随着时间的推移,我会收到很多这样的错误: VM15 newtab-serv
问题 这是浏览器的预期行为吗? 相关的 Chromium 错误 https://code.google.com/p/chromium/issues/detail?id=492761 脚步 为 Chro
切换到 native 弹出窗口后,单击“允许”后,它将不会切换到 Web View ,并且控件不会转到下一个选项卡。我正在获取 Native、Webview_4、Webview_5 等。 错误堆栈跟踪
我有 Firefox 69, 激活暗模式时,newtab 页面保持亮起。 我通过 about:config?filter=browser.in-content.dark-mode 激活了暗模式(改为
我是一名优秀的程序员,十分优秀!