我看了很多人用c#写的浏览器,大部分都用的webbrowser 控件,这个倒也无所谓。运行后基本功能都没有问题。
但是都有一个共同的问题:
就是当链接是“弹出新窗口显示”时候,然后程序就会调用本地默认浏览器弹出新的页面了。这个问题不知道各位有没有解决办法?
我突然想到也许多标签页的可以解决,大家有没有这方面的范例?
如果还用原窗口显示的话,大家有什么办法呢?
但是都有一个共同的问题:
就是当链接是“弹出新窗口显示”时候,然后程序就会调用本地默认浏览器弹出新的页面了。这个问题不知道各位有没有解决办法?
我突然想到也许多标签页的可以解决,大家有没有这方面的范例?
如果还用原窗口显示的话,大家有什么办法呢?
{
e.Cancel = true;
webBrowser1.Navigate(webBrowser1.StatusText);
}
只提供有限的能力,
基本显示还可以,
若要深入客制化,
还需了解 IHostDialogHelper, IDocHostUIHandler 等接口..net 这边不多见, vc 版那边多.
Variant,] [PostData As Variant,] [Headers As Variant])参数TagetFrameName主要用于带框架的URL在浏览器窗口中的显示,其可能的选项为:
Blank(在新的空白窗口中显示)、
PARENT(在当前窗口的父窗口显示)、
SELF(在当前窗口显示)、
TOP(在当前窗口主体装载链接)等;
{
e.Cancel = true;
try
{
string url = this.wB_MainBrowser.Document.ActiveElement.GetAttribute("href");
this.wB_MainBrowser.Url = new Uri(url);
}
catch
{
}
}参考
{
//将所有的链接的目标,指向本窗体
foreach (HtmlElement archor in this.webBrowser1.Document.Links)
{
archor.SetAttribute("target", "_self");
}
//将所有的FORM的提交目标,指向本窗体
foreach (HtmlElement form in this.webBrowser1.Document.Forms)
{
form.SetAttribute("target", "_self");
}
}
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
e.Cancel = true;
}
WebBrowser1.AllowWebBrowserDrop=false;
WebBrowser1.WebBrowserShortcutsEnabled=false;
WebBrowser1.IsWebBrowserContextMenuEnabled=false
修改newWindow事件是一个简单的方法,比较好的是派生一个新类。