WebBrowser控件不适用于某些javascript构造

时间:2011-10-10 09:25:11

标签: javascript wpf winforms hyperlink webbrowser-control

我发现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)现在创建一个WPFWinForm个应用主机WebBrowser来自“C:\ Temp \ Test.htm”的控件

    <WebBrowser Source="C:\Temp\Test.htm" Height="500" Width="500"/>

如果您运行应用程序并使用WebBrowser控件加载测试页,则两个超链接都将在加载的页面上运行。

但是如果使用“将我显示为模态页面”加载模态窗口。按钮,然后模式窗口失败使用第一个超链接提醒,即 I should work using href. 不会出现。

第二个超链接按预期工作。

你们觉得第一个超链接的解决方法是什么?

在我的情况下,我无法访问我使用javascript:showModalDialog()调用加载的页面内容,因此问题修复的目的是从Web浏览器的角度出发。

修改

他们说必须为此启用 FEATURE_SCRIPTURL_MITIGATION 。但它已在我的注册表中启用。 MSDN继续说......

  

默认情况下,为Internet Explorer启用此功能并禁用此功能   对于托管 WebBrowser 控件的应用程序。必须手动启用它    webBrowser 控制。

如何为网络浏览器控件启用此功能?

1 个答案:

答案 0 :(得分:1)

MSDN

  

对于托管 WebBrowser的应用程序,此功能不受支持   控制