Элемент управления WebBrowser не работает с некоторыми конструкциями JavaScript - PullRequest
4 голосов
/ 10 октября 2011

Я обнаружил, что элемент управления 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.

Как включить это для управления через веб-браузер?

1 Ответ

1 голос
/ 16 октября 2011

MSDN :

Эта функция не поддерживается для приложений, размещающих элемент управления WebBrowser .

...