Ну, до сих пор я не смог отследить точную разницу между рабочей и нерабочей версиями.Но я нашел обходной путь, которого достаточно для моих нужд.Оказывается, только функциональность JS-> SL была нарушена;любые звонки из SL-> JS все еще работали.Так что я сделал, чтобы зарегистрировать скриптовые объекты SL из Silverlight.В своем управляющем классе JavaScript я создал функцию с уникальным именем и зарегистрировал ее в объекте window:
var mLoadingController;
var mAppId = 'alantaClient_' + Alanta.makeId();
var mSetLoadingControllerId = mAppId + '_SetLoadingController';
window[mSetLoadingControllerId] = function (value) {
mLoadingController = value;
onLoad();
};
И затем я передаю имя функции как часть InitParams приложения Silverlight.:
var initParams = 'setLoadingControllerId=' + mSetLoadingControllerId;
Silverlight.createObject(mSource, mAppHost, mAppId, params, events, initParams);
И затем я вызываю эту функцию регистрации из Silverlight, например:
// Do everything necessary to make the LoadingController scriptable.
HtmlPage.RegisterScriptableObject("LoadingController", LoadingController.Instance);
string setLoadingControllerId;
if (e.InitParams.TryGetValue(LoaderConstants.SetLoadingControllerIdReference, out setLoadingControllerId))
{
HtmlPage.Window.Invoke(setLoadingControllerId, LoadingController.Instance);
}
И затем я могу вызвать ее из JS, например:
mLoadingController.GoToRoom();
Вроде хак, но это работает.Пока достаточно близко.