Сделать HtmlWindow, возвращенный из HtmlPage.PopupWindow, можно .Invoke или .Eval javascript - PullRequest
1 голос
/ 11 мая 2010

Создание отдельного PopupWindow, открывающего другой веб-браузер, дает мне в качестве возвращаемого значения объект HtmlWindow, который имеет тот же тип объекта, что и статический «HtmlPage.Window» проекта silverlight.Этот тип объекта предоставляет методы «Invoke» и «Eval».

Я хочу оценить javascript, который может быть расположен в моем коде Silverlight в строковом значении (Eval) или внутри uri, который я выскочил(Invoke).

Nomather метод выполнения сценария, который я использую, не удается.Для eval это дает мне InvalidOperationException с "Eval fail."сообщение.Для Invoke, это дает мне InvalidOperationException с «Не удалось вызвать: TalkToJavaScript».message.

Есть ли способ выполнить javascript в PopupWindow.

Код здесь представляет собой простой тест.Когда я нажимаю кнопку в первый раз, всплывающее окно URI появляется в новом экземпляре веб-браузера.Во второй раз, когда я нажимаю, он пытается выполнить JavaScript в окне назначения URI.Сбой при ** "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 Code

    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\");");
        }
    }

1 Ответ

0 голосов
/ 12 мая 2010

Ваш XAP также не обслуживается с "http://www.visionwww.com/". Следовательно, когда вы пытаетесь манипулировать им с Invoke, эта попытка блокируется по соображениям безопасности.

...