Из приложения Silverlight
public MainPage()
{
InitializeComponent();
HtmlPage.RegisterScriptableObject("MainPage", this);
}
[ScriptableMember]
public void StartEditLocation(string name, int? top, int? left)
{
MapTitle.Text = "Set Contract Location - " + name;
LocationEllipse.SetValue(Canvas.LeftProperty, left ?? 30);
LocationEllipse.SetValue(Canvas.TopProperty, top ?? 30);
}
И из JavaScript
<object data="data:application/x-silverlight-2," id="admin_map" type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="/ClientBin/AdminMap.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
function show_map(top, left) {
var control = document.getElementById("admin_map");
var values = new Array();
values[0] = $('#Name').val();
values[1] = top;
values[2] = left;
if (control)
control.Content.MainPage.StartEditLocation(values);
else
alert('Error loading map');
}
Кажется, проблема в вызове метода, потому что он проходит проверку if, чтобы убедиться, что элемент управления существует. Я думаю, что это должна быть какая-то синтаксическая ошибка или что-то простое.