Получать обратные вызовы от хоста HtmlPage в Silverlight - PullRequest
1 голос
/ 21 сентября 2010

Я хотел бы получать обратные вызовы из кода Javascript на мой хост Silverlight без с использованием ScriptableAttribute.Я видел, как это было сделано раньше, но я не мог понять, как они это сделали.У кого-нибудь есть идеи?Спасибо

Ответы [ 2 ]

3 голосов
/ 21 сентября 2010

Достаточно простое использование: -

 HtmlPage.Window.Invoke("someJavascriptFunc", "Hello", "World");

В javascript на странице хостинга Silverlight есть: -

 function someJavascriptFunc(p1, p2)
 {
     alert(p1 + ' ' + p2);
 }

Редактировать : Кен прав, вышесказанное неверно.

Допустим, у вас есть эта функция в Silverlight: -

string GetStuff(string name)
{
     return "Hello " + name;
}

Теперь вы можете сделать эту функцию доступной для JavaScript следующим образом: -

HtmlPage.Window.SetProperty("sayHello", new Func<string, string>(GetStuff));    

Теперь код в javascript может просто сделать что-то вроде этого: -

alert(sayHello("Fred"));
0 голосов
/ 21 сентября 2010

Если вы используете события, теоретически вы можете использовать AttachEvent для подписки на события.Это не совсем то же самое, что обратные вызовы, но это близко.

Предостережения: я не тестировал AttachEvent в браузерах на основе Mozilla (где соответствующей командой JS является "addEventListener ()", а не "attachEvent ()"), и у меня возникли проблемы с получением AttachEvent ()надежно работать даже в IE.Поэтому я всегда просто использовал атрибут [ScriptableMember] и вызывал его из JS.Есть ли причина, по которой вы не хотите этим пользоваться?(Мне было бы интересно узнать, есть ли у кого-нибудь идеи получше.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...