2009-10-28 39 views
1

我已經使用對象標籤來加載我的Silverlight控件,因爲我希望能夠使用富文本編輯器將HTML輸入到Sharepoint頁面。它看起來像這樣:當Silverlight使用對象標籤實例化Javascript時Silverlight使用對象標記

<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> 

我已經用在其他Silverlight應用程序的JavaScript的橋樑,它的網頁和Silverlight控件之間的雙向通信的偉大工程。

但 - 似乎爲了這個工作,我必須instanciate我的Silverlight控件使用.NET Silverlight控件。

我無法在我的Silverlight控件中使用對象標記時發出JavaScript調用以使其工作。我的設置與我在其他應用程序中的工作方式完全相同 - 唯一的區別是該控件未在html中以同樣的方式嵌入。

有沒有人有我的任何提示?

回答

1

除了Kelsey答案中提到的信息外,在對象定義中包含無窗口參數也很關鍵。沒有窗戶= TRUE,則調用內容將始終返回未定義....

樣本對象的定義:

<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 

公用Sub sayHi的() MessageBox.Show( 「HI !!!!!」) 結束子

末級

以及JavaScript函數,registerSilverlight

var charts = { 
registerSilverlight: function() { 

    var func = document.getElementById('silverlightObject'); 
    var content1 = func.Content; 
    content1.MainPage.SayHi(); 


} 

}

0

你可能想看看這個線程:

How to call javascript function on a Silverlight 3 object?

我有問題,以及和把一切都可以使用對象標記工作。

+0

感謝您的鏈接,我感謝您的幫助。但是在其他線程中提出的這些東西已經是我的應用程序的一部分。它仍然不適合我。我不得不讓我的應用程序工作,因此找到了進行溝通的另一種方式。 – bperreault