2

別の Web ブラウザーを開く別の PopupWindow を作成すると、戻り値として、Silverlight プロジェクトの静的な "HtmlPage.Window" と同じオブジェクト タイプである HtmlWindow オブジェクトが返されます。そのオブジェクト タイプは、「Invoke」および「Eval」メソッドを提供します。

Silverlight コードの文字列値 (Eval) またはポップアップした URI 内 (Invoke) に配置できる JavaScript を評価したいと考えています。

私が使用する別のスクリプト実行方法, 失敗します. eval の場合、「Eval failed.」という InvalidOperationException が返されます。メッセージ。Invoke の場合、「Failed to Invoke: TalkToJavaScript.」という InvalidOperationException が返されます。メッセージ。

PopupWindow で JavaScript を実行する方法はありますか。

ここのコードは簡単なテストです。ボタンを初めて押すと、新しい webbrowser インスタンスで uri がポップアップします。2 回目にクリックすると、宛先 uri ウィンドウで JavaScript を実行しようとします。** "m_window.Invoke("TalkToJavaScript", "pute");" で失敗します

HTML コード

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
    function TalkToJavaScript(data) {
        alert("Message received from Silverlight: " + data);
    }  

</script>
</head>
<body>
    <div id="content" />
</body>
</html>

Silverlight コード

    private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        if (m_window == null)
        {
            HtmlPopupWindowOptions options = new HtmlPopupWindowOptions();

            options.Left = 0;
            options.Top = 0;
            options.Width = 800;
            options.Height = 600;
            m_window = HtmlPage.PopupWindow(new Uri("http://www.visionwww.com/tests/ContentInjectionTest.html"),
                                            "new", options);
        }
        else
        {
            m_window.Invoke("TalkToJavaScript", "test");
            //m_window.Eval("alert(\"Message received from Silverlight\");");
        }
    }
4

1 に答える 1

0

「 http://www.visionwww.com/ 」からも提供されている XAP ではありません。したがって、Invokeセキュリティ上の理由から、その試みはブロックされます。

于 2010-05-11T20:02:29.023 に答える