Создание отдельного 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\");");
}
}