Đây là giải pháp tôi vừa tạo với sự phản chiếu. Giải quyết vấn đề :) Tôi chạy nó tại sự kiện điều hướng, vì có vẻ như đối tượng activeX không có sẵn cho đến lúc đó.
Điều bạn làm là đặt thuộc tính .Silent trên đối tượng activeX bên dưới. Tương tự như thuộc tính .ScriptErrorsSuppressed tương ứng với các biểu mẫu Windows.
public void HideScriptErrors(WebBrowser wb, bool Hide) {
FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if (fiComWebBrowser == null) return;
object objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null) return;
objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });
}
Một phiên bản tốt hơn mà có thể chạy bất cứ lúc nào và không sau sự kiện .Navigated:
public void HideScriptErrors(WebBrowser wb, bool hide) {
var fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if (fiComWebBrowser == null) return;
var objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null) {
wb.Loaded += (o, s) => HideScriptErrors(wb, hide); //In case we are to early
return;
}
objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { hide });
}
Nếu bất kỳ vấn đề với mẫu thứ hai, hãy thử trao đổi với wb.Loaded wb.Navigated.
Tuy nhiên, một giải pháp hai dòng là ở đây: http://stackoverflow.com/a/18289217/1768303 – Noseratio