порты = уши, рот, глазное яблоко, касание
протоколы = английский, испанский, язык жестов, Шрифт Брайля
Проблема в том, что WPF WebBrowser
не реализовал это свойство, как в элементе управления 2.0.
Лучше всего использовать WindowsFormsHost
в приложении WPF и используйте свойство 2.0 WebBrowser
: SuppressScriptErrors
. Даже в этом случае для этого вам понадобится приложение, которое будет полностью доверять.
Не то, что можно было бы назвать идеальным, но в настоящее время это практически единственный вариант.
Вот решение, которое я только что сделал с помощью отражения. Решает проблему :) Я запускаю его при событии Navigated, поскольку, похоже, объект activeX недоступен до этого момента.
Что он делает, так это устанавливает свойство .Silent на базовом объекте activeX. Это то же самое, что и свойство .ScriptErrorsSuppressed, которое является эквивалентом Windows forms.
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 });
}
Лучшая версия, которая может быть запущена в любое время, а не после события .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 });
}
Если возникли проблемы со вторым примером, попробуйте поменять wb.Loaded на wb.Navigated.
У меня была эта проблема в прошлом, и, наконец, я решил ее с помощью внедрения сценария Javascript, подавляющего обработку ошибок. Надеюсь, это поможет и вам.