關於MFC項目中使用CDHtmlDialog禁止指令碼錯誤的方法

來源:互聯網
上載者:User

當WebBrowser控制項(CDHtmlDialog自動建立了WebBrowser控制項)載入的網頁中含有錯誤Javascript代碼時預設情況下控制項會彈出錯誤資訊提示對話方塊,相對於使用者體驗來說這樣的提示完全不是開發人員想要的,針對這個問題有兩個解決方案,一是完全屏蔽掉錯誤提示,二是控制錯誤的提示並且記錄錯誤資訊同時也可以控制出現錯誤後Javascript是否繼續執行。

1、屏蔽錯誤資訊提示

  ? view plain m_pBrowserApp->put_Silent(VARIANT_TRUE);//禁止指令碼錯誤提示  

在CDHtmlDialog::OnInitDialog()的代碼中首先了建立WebBrowser控制項,然後把控制項的Browser對象賦值給m_pBrowserApp(這是CDHtmlDialog完成的不需要自己處理)。WebBrowser的put_Silent函數在官方給出的說明是禁用所有的對話方塊,但例外情況是它不會影響SSL安全認證需要的進示對話方塊。絕大多數情況下這就可以解決問題了,記得很久以前我遇到過一種情況就是雖然調用了put_Silent但是還是有極個別的js錯誤是無法屏蔽掉的依然會顯示出來(在網頁含有嵌套頁面時會錯誤無法屏蔽,不知道是否還有其它情況),現在找不到這樣的網頁了,如果誰遇到這種情況了建議給我發上個URL讓我也重溫一下當年陽光燦爛的時刻。

2、控制錯誤提示並進行記錄

  這要比第一種方法複雜上許多,簡短的來說就是自訂COleControlSite類並實現IOleCommandTarget介面,IOleCommandTarget介面是錯誤控制的關健,錯誤發生時會觸發此介面的Exec函數並為nCmdID參數賦值為OLECMDID_SHOWSCRIPTERROR,這樣就可以得到錯誤資訊了。

  ?

1 2 3 4 5 6 7

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.