Вызвать метод Silverlight из Javascript, когда он будет готов - PullRequest
1 голос
/ 05 августа 2011

У меня есть страница, которая загружает другое окно при нажатии кнопки. Загруженная страница имеет управление Silverlight, поэтому для ее загрузки и подготовки требуется некоторое время, прежде чем она сможет принимать вызовы JavaScript.

Что мне нужно сделать, это вызвать определенный метод объекта silverlight сразу после того, как плагин silverlight загружен и готов взаимодействовать со мной.

Теперь, если всплывающая страница уже открыта, код будет выглядеть так:

var slWin = window.open('PopupPage.html', 'WindowName');
var elem = slWin.document.getElementById('slControl');
elem.Content.SlObject.MethodA();

Это работает, когда окно уже открыто, потому что элемент управления уже загружен и готов. Мне нужно изменить этот код, чтобы справиться с ситуацией, когда elem нужно время для подготовки.

Я пытался использовать методы jQuery ready и load для добавления обработчиков к соответствующим событиям, но без особого недостатка. Вот полный фрагмент:

var slWin = window.open('', 'WindowName');

var elem = slWin.document.getElementById('slControl');
if (elem == null) {
    slWin.location.href = 'PopupPage.aspx';

    // this branch doesn't work
    $(slWin).load(function () {

        elem = slWin.document.getElementById('slControl');
        elem.Content.SlObject.MethodA();
    });
}
else {
    // this branch works fine
    elem.Content.SlObject.MethodA();
}

Как мне решить эту проблему? Я не против решений jQuery.

1 Ответ

0 голосов
/ 18 сентября 2013

Эта ошибка возникает из-за того, что объект Silverlight загружается не полностью при попытке доступа к нему.

Попробуйте использовать событие onload объекта silverlight, чтобы определить, когда он будет готов к использованию. Здесь у вас есть ссылка на документацию MSDN:

http://msdn.microsoft.com/en-us/library/cc838107(v=vs.95).aspx

Надеюсь, это поможет. :)

...