Также важно включить параметр без окон в определение вашего объекта в дополнение к информации, вызванной в ответе Келси. Без windowless = true вызов Content всегда будет возвращать undefined ....
Пример определения объекта:
<div id="silverlightControlHost">
<object id="silverlightObject" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/LabsCharts.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="windowless" value="true" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
Класс VB.Net для регистрации скриптового объекта:
Imports System.Windows.Browser
_
Частично открытый класс MainPage
Наследует UserControl
Public Sub New()
' Required to initialize variables
InitializeComponent()
AddHandler Loaded, AddressOf MainPage_Loaded
End Sub
Protected Sub MainPage_Loaded(ByVal sender As Object, ByVal e As EventArgs)
HtmlPage.RegisterScriptableObject("MainPage", Me) 'not working!
Dim so As ScriptObject = TryCast(HtmlPage.Window.Eval("charts"), ScriptObject)
so.Invoke("registerSilverlight")
End Sub
Public Sub SayHi ()
MessageBox.Show ( "HI !!!!!")
Конец Sub
Конечный класс
И функция javascript, registerSilverlight
var charts = {
registerSilverlight: function() {
var func = document.getElementById('silverlightObject');
var content1 = func.Content;
content1.MainPage.SayHi();
}
}