新手第一次用winform。遇到的js脚本错误跟证书弹框两者不可兼得的问题。以下是网上搜索遇到的坑跟最终的解决方案
坑一:将ScriptErrorsSuppressed设置为true。就是这个导致证书无法弹出来。进不了一些需要证书的网站。
private void browser_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
((WebBrowser)sender).Document.Window.Error
+= new HtmlElementErrorEventHandler(Window_Error);
}
private void Window_Error(object sender, HtmlElementErrorEventArgs
e)
{
// Ignore the error and suppress the error dialog box.
e.Handled = true;
}
网上给出的上面这段代码。不设置true然后加上这段代码。我觉得是能屏蔽掉一些脚本错误的。但是大部分的js报错还是无法屏蔽。
坑二:引入SHDocVw。可以屏蔽脚本错误。但是证书弹不出来
实际解决方案:
1、添加类NativeMethods
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace AuthClient
{
public static class NativeMethods
{
public enum OLECMDF
{
// Fields
OLECMDF_DEFHIDEONCTXTMENU = 0x20,
OLECMDF_ENABLED = 2,
OLECMDF_INVISIBLE = 0x10,
OLECMDF_LATCHED = 4,
OLECMDF_NINCHED = 8,
OLECMDF_SUPPORTED = 1
}
public enum OLECMDID
{
// Fields
OLECMDID_PAGESETUP = 8,
OLECMDID_PRINT = 6,
OLECMDID_PRINTPREVIEW = 7,
OLECMDID_PROPERTIES = 10,
OLECMDID_SAVEAS = 4,
OLECMDID_SHOWSCRIPTERROR = 40
}
public enum OLECMDEXECOPT
{
// Fields
OLECMDEXECOPT_DODEFAULT = 0,
OL