日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebBrowser脚本错误的完美解决方案

發布時間:2024/9/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebBrowser脚本错误的完美解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當IE瀏覽器遇到腳本錯誤時瀏覽器,左下角會出現一個黃色圖標,點擊可以查看腳本錯誤的詳細信息,并不會有彈出的錯誤信息框。當我們使用WebBrowser控件時有錯誤信息框彈出,這樣程序顯的很不友好,而且會讓一些自動執行的程序暫停。我看到有人采取的解決方案是做一個窗體殺手程序來關閉彈出的窗體。今天探討的方法是從控件解決問題。


1、SHDocVw.dll

在COM時代我們使用的WebBrowser控件是SHDocVw.dll。屏蔽錯誤信息的方法很簡單使用下面的一句就可以搞定。?
WebBrowser1.Silent = true;
2、.Net中

在.Net中提供了托管的WebBrowser可供我們使用,當然我們仍然可以在.Net中使用COM組建SHDocVw.dll,如果使用SHDocVw.dll
處理錯誤方式和上面的方法一樣。但如果我們是使用.Net組件如何解決這個問題呢?

這個組件給我們提供了一個方法ScriptErrorsSuppressed?。但是在.net?framework2.0中他是不起作用的,據說在低版本中使用如下的方式解決

webBrowser1.ScriptErrorsSuppressed = true;
(據說在.net?framework2.0以前是這樣,我沒有使用過)

那么在.net?framework2.0中如何解決這個問題呢?

有一種方法不能徹底解決,可以部分解決問題這里也介紹給大家。?
//捕獲控件的錯誤
?this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error);
//對錯誤進行處理
void Window_Error(object sender, HtmlElementErrorEventArgs e)
{
???? // 自己的處理代碼
??? e.Handled = true;
}

3、上面的方法對于多個框架嵌套等等的情形還是不能很好的解決。

為了徹底解決這個問題,我們借助AxWebBrowser來解決WebBrowser的問題。

我們定義一個自己的類,他的父類是WebBrowser,以后使用這個類就可以了。在這個類的定義中需要引用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();
??? }
}?
---------------------
作者:jxufewbt
來源:CSDN
原文:https://blog.csdn.net/jxufewbt/article/details/1758405
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的WebBrowser脚本错误的完美解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。