0

我有一个 OOB silverlight 应用程序。我安装了 Silverlight 5 开发者运行时和所有的 Silverlight 5 开发者工具。OOB 应用程序有一个silverlight 视图,上面有一个WebBrowser 控件。webBrowser 控件的 Source 是这个 aspx 页面:

<head>
    <title></title>
    <script type="text/javascript" language="javascript">

        function test() {
            if (hiddenDiv.style.display == "none")
                hiddenDiv.style.display = "block";
            else
                hiddenDiv.style.display = "none";
        }

        function handCursor() {
            clickTest.style.cursor = "hand";
        }
        function defaultCursor() {
            clickTest.style.cursor = "default";
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <%--This Link Doesn't Work--%>
        <a href="javascript: test()">Javascript Href test</a></br>


        <%--This Link Works--%>
        <a id="clickTest" onclick="test()" onmouseover="handCursor()" onmouseout="defaultCursor()" style="text-decoration: underline; color:Blue">OnClick Test</a>

            <div id="hiddenDiv" style="display:none; background-color:Black">
                <span style="color:White; display:inherit">Look at me!</span>
            </div>
    </div>
    </form></body>

(注意:是的,我知道上面的代码不是完整的 HTML。我无法让编辑器正确显示整个页面。我切断了 html 标签。另外请注意,这只是一个测试页面,而不是我想要的真实页面显示在我的应用程序中。我只是想找出问题)。

当上面的代码在 IE9 中运行时,它工作得很好。这些链接使名为“hiddenDiv”的 Div 隐藏和显示。当它显示在 Silverlight 应用程序的 WebBrowser 控件中时,它在另一个开发人员的机器上运行良好,但在我的机器上却不行。我点击链接,没有任何反应。看来javascript根本不执行。使用 href=javascript 方法似乎只有这个问题。onclick 效果很好。不幸的是,我不拥有我想在我的应用程序中显示的页面,也无法更改代码。

我的一位同事认为,这个问题可能是由于我在意识到自己的错误并安装开发人员运行时之前错误地安装了标准 Silverlight 5 运行时。尽管我已经删除了有问题的文件并重新安装了 Silverlight5 Tools.exe。事实上,我卸载并重新安装了所有与 Silverlight 相关的产品(VS 2010 除外)并卸载了 IE 9。一切都无济于事。

如果有人对此问题有任何其他信息,请告诉我。我们需要一个不涉及修改 html 的解决方案。我不控制那个html。我希望通过简单地将外部 Web 应用程序显示在我的应用程序内的 Web 浏览器控件中,将其嵌入到我的 OOB SL 应用程序中。

4

1 回答 1

0

我在这个线程上发现了这个问题的答案:

FEATURE_SCRIPTURL_MITIGATION

问题是一个注册表设置,它可以打开和关闭 javascript 执行的元素。此 MSDN 文章中也对此进行了描述:

于 2012-04-26T20:13:01.640 回答