首页 文章

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

提问于
浏览
4

我发现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 控件加载测试页,则两个超链接都将在加载的页面上运行 .

But 如果使用"Show Me as Modal Page."按钮加载模态窗口,则模式窗口 fails 将使用第一个超链接警告,即 I should work using href. 不会出现 .

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

你们是否认为第一个超链接的解决方法是什么?

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

EDIT

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

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

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

1 回答

  • 1

    MSDN

    托管WebBrowser控件的应用程序不支持此功能 .

相关问题