WebBrowser控件不能与某些javascript结构一起工作



我发现WebBrowser控件(包括Winforms和WPF)有某些javascript结构不支持,特别是当它们使用showModalDialog/showModelessDialog调用....

这很容易复制…

1)创建一个测试的html页面,如C:TempTest.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浏览器中,如果你点击"Show Me as Modal Page."按钮,同样的页面会以MSHTML对话框打开,并且两个超链接都可以工作。

这是预期的。

2)现在创建一个WPFWinForm应用程序托管WebBrowser控制源为"C:TempTest.htm"

    <WebBrowser Source="C:TempTest.htm" Height="500" Width="500"/>

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

但是如果您使用"Show Me as modal Page."按钮加载模态窗口,则模态窗口失败使用第一个超链接发出警报,即 I should work using href. 不出现。

第二个超链接工作正常

你们认为第一个超链接工作有一个解决方案吗?

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

编辑

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

默认情况下,此功能在Internet Explorer中是启用的,禁用的用于承载WebBrowser控件的应用程序。它必须手动启用 webBrowser

如何为web浏览器控件启用这个?

MSDN:

这个特性不支持对于托管WebBrowser的应用程序控制 .

最新更新