Javascript для Silverlight при создании экземпляра Silverlight с тегом объекта - PullRequest
1 голос
/ 28 октября 2009

Я использовал тег объекта, чтобы загрузить свой элемент управления Silverlight, потому что я хочу иметь возможность вводить html на страницу Sharepoint, используя Rich Text Editor. Это выглядит так:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="SilverlightObject"
    width="850" height="600">
      <param name="source" value="ClientBin/LabsSurvey.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="minRuntimeVersion" value="3.0.40624.0" />
      <param name="autoUpgrade" value="true" />
      <img src="ClientBin/InstallSilverlightLabsBanner.jpg" alt="Please Install Silverlight" />
      <br />
      <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>

Я использую мост Javascript в других приложениях Silverlight, и он отлично работает для двусторонней связи между веб-страницей и элементом управления Silverlight.

НО - кажется, что для того, чтобы это работало, мне нужно создать экземпляр моего элемента управления Silverlight с помощью элемента управления .NET Silverlight.

Я не могу получить вызов javascript для метода в моем элементе управления Silverlight, чтобы он работал, когда я использовал тег объекта. Я настроил его точно так же, как и в других моих приложениях, где он работает - единственное отличие состоит в том, что элемент управления не был встроен в HTML таким же образом.

У кого-нибудь есть советы для меня?

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Также важно включить параметр без окон в определение вашего объекта в дополнение к информации, вызванной в ответе Келси. Без 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();


}

}

0 голосов
/ 13 января 2010

Возможно, вы захотите проверить эту тему:

Как вызвать функцию javascript для объекта Silverlight 3?

У меня тоже были проблемы, и я все заработал, используя тег объекта.

...