Я обнаружил, что элемент управления WebBrowser (как Winforms, так и WPF) имеет определенные конструкции javascript, которые не поддерживаются, особенно когда они отображаются с помощью вызовов showModalDialog / showModelessDialog ....
Это легко воспроизводимо ...
1) Создайте тестовую HTML-страницу, например C:\Temp\Test.htm
, с этим кодом.
<input type=button
onclick="showModalDialog('C:\\Temp\\Test.htm');"
value="Show Me as Modal Page." />
<BR />
<a href="javascript:alert('I am shown.')">
I should work using href.
</a>
<BR />
<a href="#"
onclick="javascript:alert('I am shown.')">
I should work using onclick.
</a>
Если вы загрузите страницу выше с помощью браузера IE, обе гиперссылки должны работать. Теперь в браузере IE, если вы нажмете «Показать меня как модальную страницу». Кнопка, та же страница открывается как диалоговое окно MSHTML и снова, что обе гиперссылки работают.
Это ожидается.
2) Теперь создайте WPF
или WinForm
приложение, в котором размещен WebBrowser
элемент управления из "C: \ Temp \ Test.htm"
<WebBrowser Source="C:\Temp\Test.htm" Height="500" Width="500"/>
Если вы запустите приложение и загрузите тестовую страницу с помощью элемента управления WebBrowser
, обе гиперссылки будут работать на загруженной странице.
Но , если вы загружаете модальное окно, используя «Показать меня как модальную страницу». затем модальное окно не может выдать предупреждение с использованием первой гиперссылки, т. е. I should work using href.
не отображается.
Вторая гиперссылка работает как положено.
Ребята, вы считаете, есть ли обходной путь для первой гиперссылки?
В моем случае у меня нет доступа к содержимому страницы, которое я загружаю с помощью вызова javascript:showModalDialog()
, поэтому решение проблемы предназначено с точки зрения веб-браузера.
EDIT
Говорят, для этого нужно включить FEATURE_SCRIPTURL_MITIGATION
. Но это уже включено в моем реестре. MSDN продолжает говорить ...
По умолчанию эта функция включена для Internet Explorer и отключена
для приложений, в которых размещается WebBrowser Control. Это должно быть включено вручную для
webBrowser control.
Как включить это для управления через веб-браузер?