当前位置:编程学习 > C#/ASP.NET >>

悬赏100RMB 的问题

 axwebBrowser 禁止脚本错误 

 AxWebBrowser webBrowser = new AxWebBrowser();
 webBrowser.Silent = true;  

没有办法解决!!

安全控件不可以禁止!!


请给出相应的代码!并且留下你的联络方式 最好是QQ 
问题解决 立即付款 

我的QQ: 271398601

诚心邀请各位大侠分析解决 

--------------------编程问答-------------------- 请给出相应的c#代码!并且留下你的联络方式 最好是QQ  
问题解决 立即付款  

--------------------编程问答-------------------- http://topic.okbase.net/200701/2007013109/2876124.html --------------------编程问答-------------------- 不是很明白,请大侠给出相应的C # 代码!!

谢谢 --------------------编程问答-------------------- 没有人知道吗? --------------------编程问答-------------------- 提问方式不是很喜欢  论坛是大家共享的  何必搞得这么商业化 --------------------编程问答-------------------- 没有人知道吗?没有人知道吗?没有人知道吗? --------------------编程问答-------------------- 没有人知道吗?没有人知道吗?没有人知道吗? --------------------编程问答-------------------- 没有人知道吗?没有人知道吗?没有人知道吗? --------------------编程问答-------------------- C#Webbrowser中屏蔽弹出窗口及脚本错误提示

简介摘要:一、屏蔽脚本错误提示 (转)c# webbrowser 加载网页出错解决方法 2009-03-25 19:42 当IE浏览器遇到脚本错误时浏览器,左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框。当我们使用WebBrowser控件时有错误信

 

一、屏蔽[ping bi]脚本[jiao ben]错误[cuo wu]提示[ti shi]

 (转)c# webbrowser 加载网页[wang ye]出错解决方法[fang fa]   2009-03-25 19:42           当IE浏览[liu lan]器[liu lan qi]遇到脚本[jiao ben]错误[cuo wu]时浏览[liu lan]器[liu lan qi],左下角会出现一个黄色图标[tu biao],点击可以查看脚本[jiao ben]错误[cuo wu]的详细信息[xin xi],并不会有弹出的错误[cuo wu]信息[xin xi]框。当我们使用WebBrowser控件时有错误[cuo wu]信息[xin xi]框弹出,这样程序显的很不友好,而且会让一些自动执行[zhi hang]的程序暂停[zan ting][cheng xu zan ting]。我看到有人采取的解决方案[jie jue fang an]是做一个窗体[chuang ti]杀手程序来关闭弹出的窗体[chuang ti]。今天探讨的方法[fang fa]是从控件解决问题[wen ti]。


 1、SHDocVw.dll 

在COM时代我们使用的WebBrowser控件是SHDocVw.dll。屏蔽[ping bi]错误[cuo wu]信息[xin xi]的方法[fang fa]很简单使用下面的一句就可以搞定。

WebBrowser1.Silent =  true ;

 2、.Net中 

在.Net中提供了托管的WebBrowser可供我们使用,当然我们仍然可以在.Net中使用COM组建SHDocVw.dll,如果使用SHDocVw.dll
处理错误[cuo wu]方式和上面的方法[fang fa]一样。但如果我们是使用.Net组件[zu jian]如何解决这个问题[wen ti]呢?

这个组件[zu jian]给我们提供了一个方法[fang fa]ScriptErrorsSuppressed 。但是在.net framework2.0中他是不起作用[zuo yong]的,据说在低版本中使用如下的方式解决

webBrowser1.ScriptErrorsSuppressed =  true ;

(据说在.net framework2.0以前是这样,我没有使用过)

那么在.net framework2.0中如何解决这个问题[wen ti]呢?

有一种方法[fang fa]不能彻底解决,可以部分解[fen jie]决问题[wen ti]这里也介绍给大家。
//捕获[bu huo]控件的错误[cuo wu]
this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error);
//对错误[cuo wu]进行处理
void Window_Error(object sender, HtmlElementErrorEventArgs e)
{
     // 自己的处理代码[dai ma]
    e.Handled = true;
}

 3、上面的方法[fang fa]对于多个框架[kuang jia]嵌套[qian tao]等等的情形还是不能很好的解决。 

为了彻底解决这个问题[wen ti],我们借助AxWebBrowser来解决WebBrowser的问题[wen ti]。

我们定义一个自己的类,他的父类[fu lei]是WebBrowser,以后使用这个类就可以了。在这个类的定义中需要引用[yin yong]SHDocVw。
class EWebBrowser : System.Windows.Forms.WebBrowser
{
    SHDocVw.IWebBrowser2 Iwb2;

    protected override void AttachInterfaces(object nativeActiveXObject)
    {
        Iwb2 = (SHDocVw.IWebBrowser2) nativeActiveXObject;
        Iwb2.Silent = true;
        base.AttachInterfaces(nativeActiveXObject);
    }

    protected override void DetachInterfaces()
    {
        Iwb2 = null;
        base.DetachInterfaces();
    }
}

//项目[xiang mu]中添加Micrsoft.mshtml引用[yin yong]
using mshtml;

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
    IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
    vDocument.parentWindow.execScript(
        "function alert(str){if(str=='zswang')confirm(str);}", "javaScript");
}

//frame结构[jie gou]

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
    IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
    foreach (IHTMLElement vElement in vDocument.all)
        if (vElement.tagName.ToUpper() == "FRAME")
        {
            IHTMLFrameBase2 vFrameBase2 = vElement as IHTMLFrameBase2;
            vFrameBase2.contentWindow.execScript(
                "function alert(str){confirm('[' + str + ']');}", "javaScript");
        }
}
二、屏蔽[ping bi]其它窗口[chuang kou]
            (wb.ActiveXInstance as SHDocVw.WebBrowser).NavigateComplete2 += new DWebBrowserEvents2_NavigateComplete2EventHandler(wb_NavigateComplete2);//wb是一个Webbrowser控件

        //屏蔽[ping bi]一些弹出窗口[chuang kou]
        void wb_NavigateComplete2(object pDisp, ref object URL)
        {
            mshtml.IHTMLDocument2 doc = (wb.ActiveXInstance as SHDocVw.WebBrowser).Document as mshtml.IHTMLDocument2;
            doc.parentWindow.execScript("window.alert=null", "javascript");
            doc.parentWindow.execScript("window.confirm=null", "javascript");
            doc.parentWindow.execScript("window.open=null", "javascript");
            doc.parentWindow.execScript("window.showModalDialog=null", "javascript");
            doc.parentWindow.execScript("window.close=null", "javascript");

三、自动确定弹出对话框[dui hua kuang]

Q:winform中如何实现自动点击webbrowser弹出对话框[dui hua kuang]中的确定按钮

A:

//using mshtml;
        //using SHDocVw;
        private void Form1_Load(object sender, EventArgs e)
        ...{
            this.webBrowser1.Navigate("  http://localhost:28512/WebSite2/Default.aspx  ");
            SHDocVw.WebBrowser wb = this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser;
            wb.NavigateComplete2 += new SHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(wb_NavigateComplete2);
            
        }

        void wb_NavigateComplete2(object pDisp, ref object URL)
        ...{
            mshtml.IHTMLDocument2 doc = (this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).Document as mshtml.IHTMLDocument2;
            doc.parentWindow.execScript("function alert(str){return ''}", "javascript");
        }

--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------  没人联系你QQ的。
 
 在这个地方,是一个开放平台。大家倡导共享,互相学习 。  --------------------编程问答-------------------- 以后有可能会用上,学习先。 --------------------编程问答-------------------- 对不起,我说的是:AxWebBrowser --------------------编程问答-------------------- 自己顶一下,让更多的朋友看到 --------------------编程问答-------------------- 你把全部代码放上来分析一下

光两句不明白你的意思 --------------------编程问答-------------------- --------------------编程问答--------------------  3、上面的方法[fang fa]对于多个框架[kuang jia]嵌套[qian tao]等等的情形还是不能很好的解决。 

为了彻底解决这个问题[wen ti],我们借助AxWebBrowser来解决WebBrowser的问题[wen ti]。

我们定义一个自己的类,他的父类[fu lei]是WebBrowser,以后使用这个类就可以了。在这个类的定义中需要引用[yin yong]SHDocVw。
class EWebBrowser : System.Windows.Forms.WebBrowser
{
  SHDocVw.IWebBrowser2 Iwb2;

  protected override void AttachInterfaces(object nativeActiveXObject)
  {
  Iwb2 = (SHDocVw.IWebBrowser2) nativeActiveXObject;
  Iwb2.Silent = true;
  base.AttachInterfaces(nativeActiveXObject);
  }

  protected override void DetachInterfaces()
  {
  Iwb2 = null;
  base.DetachInterfaces();
  }
}

//项目[xiang mu]中添加Micrsoft.mshtml引用[yin yong]
using mshtml;

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
  IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
  vDocument.parentWindow.execScript(
  "function alert(str){if(str=='zswang')confirm(str);}", "javaScript");
}

//frame结构[jie gou]

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
  IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
  foreach (IHTMLElement vElement in vDocument.all)
  if (vElement.tagName.ToUpper() == "FRAME")
  {
  IHTMLFrameBase2 vFrameBase2 = vElement as IHTMLFrameBase2;
  vFrameBase2.contentWindow.execScript(
  "function alert(str){confirm('[' + str + ']');}", "javaScript");
  }
}
二、屏蔽[ping bi]其它窗口[chuang kou]
  (wb.ActiveXInstance as SHDocVw.WebBrowser).NavigateComplete2 += new DWebBrowserEvents2_NavigateComplete2EventHandler(wb_NavigateComplete2);//wb是一个Webbrowser控件

  //屏蔽[ping bi]一些弹出窗口[chuang kou]
  void wb_NavigateComplete2(object pDisp, ref object URL)
  {
  mshtml.IHTMLDocument2 doc = (wb.ActiveXInstance as SHDocVw.WebBrowser).Document as mshtml.IHTMLDocument2;
  doc.parentWindow.execScript("window.alert=null", "javascript");
  doc.parentWindow.execScript("window.confirm=null", "javascript");
  doc.parentWindow.execScript("window.open=null", "javascript");
  doc.parentWindow.execScript("window.showModalDialog=null", "javascript");
  doc.parentWindow.execScript("window.close=null", "javascript");

三、自动确定弹出对话框[dui hua kuang]

Q:winform中如何实现自动点击webbrowser弹出对话框[dui hua kuang]中的确定按钮

A:

//using mshtml;
  //using SHDocVw;
  private void Form1_Load(object sender, EventArgs e)
  ...{
  this.webBrowser1.Navigate(" http://localhost:28512/WebSite2/Default.aspx ");
  SHDocVw.WebBrowser wb = this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser;
  wb.NavigateComplete2 += new SHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(wb_NavigateComplete2);
   
  }

  void wb_NavigateComplete2(object pDisp, ref object URL)
  ...{
  mshtml.IHTMLDocument2 doc = (this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).Document as mshtml.IHTMLDocument2;
  doc.parentWindow.execScript("function alert(str){return ''}", "javascript");
  } --------------------编程问答-------------------- --------------------编程问答-------------------- 我通过QQ联系给楼主解决了脚本错误的问题,但是楼主没有兑现100块钱的报酬,我给楼主解决问题后他玩失踪了,好在项目不是很大对我造成的损失不大。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 20 楼 cmangrove 的回复:
我通过QQ联系给楼主解决了脚本错误的问题,但是楼主没有兑现100块钱的报酬,我给楼主解决问题后他玩失踪了,好在项目不是很大对我造成的损失不大。


这你也信? --------------------编程问答--------------------
引用 20 楼 cmangrove 的回复:
我通过QQ联系给楼主解决了脚本错误的问题,但是楼主没有兑现100块钱的报酬,我给楼主解决问题后他玩失踪了,好在项目不是很大对我造成的损失不大。


这个地方骗子很多很多很多很多

你太单纯了
--------------------编程问答-------------------- 这里谁需要楼主给的源码的在这里留下邮箱,我把给楼主解决问题的源码发给大家,源码是C#.NET做的网页浏览器。 --------------------编程问答--------------------
引用 25 楼 cmangrove 的回复:
这里谁需要楼主给的源码的在这里留下邮箱,我把给楼主解决问题的源码发给大家,源码是C#.NET做的网页浏览器。

鄙视骗子.
792911084@qq.com谢谢了. --------------------编程问答-------------------- 以后交易建议用支付宝担保交易.
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,