Проблема не в (* .js), она завершается ошибкой при вызове методов, не связанных напрямую с экземпляром окна.
Обходной путь - зарегистрировать ваши методы для объекта окна. Чтобы упростить это, я создал помощник JavaScript следующим образом:
<script type="text/javascript">
function createDelegate(instance, method) {
return function () {
return method.apply(instance, arguments);
}
}
function registerBroker(prefix, brokerInstance) {
for (var prop in brokerInstance)
//uncomment the IF statement to only include properties
//starting with upper case letter.
//if (prop.charAt(0) >= 'A' && prop.charAt(0) <= 'Z')
eval("window."+prefix+"_" + prop + "= createDelegate(brokerInstance, brokerInstance[prop]);");
}
</script>
Затем вы просто вызываете методы брокера как:
HtmlPage.Window.Invoke(
string.Format("{0}_{1}", PREFIX, METHOD_NAME), Args);
Вот и все.
Пример:
<script type="text/javascript">
var broker = new FrameworkEventBroker();
registerBroker("FrameworkEventBroker",broker);
</script>
и от серебряного света:
HtmlPage.Window.Invoke("FrameworkEventBroker_publishFrameworkEvent", topic, jsonObject);
ОБНОВЛЕНИЕ
Я добавил помощник createDelegate для поддержки ссылки на экземпляр посредника при вызове объекта window.