SilverLight瀏覽器互動之:Html頁面通過Javascript調用SilverLight程式內方法(附源碼)

來源:互聯網
上載者:User

概述:

SilverLight運行瀏覽器時,像Ajax一樣可以在Html頁面通過Javascript調用SilverLight程式內方法。

效果:

[ScriptableMember]

指示可由 JavaScript 調用方訪問的特定屬性、方法或事件。

為了調用SilverLight項目中的方法,我們必須指定該方法能否被Javascript調用

HtmlPage.RegisterScriptableObject 方法
註冊託管對象以便用於通過 JavaScript 代碼的可指令碼化訪問。

為了使瀏覽能夠通過Javascript訪問SilverLight程式,必須先聲明該SilverLight程式能被Javascript調用。

Xaml代碼:

    <Grid x:Name="LayoutRoot"  Background="YellowGreen">

</Grid>

SilverLight CS代碼:

    public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();

//HtmlPage.RegisterScriptableObject 方法
//註冊託管對象以便用於通過 JavaScript 代碼的可指令碼化訪問。
HtmlPage.RegisterScriptableObject("Button", this);
}

/// <summary>
/// 執行網路服務
/// [ScriptableMember]指示可由 JavaScript 調用方訪問的特定屬性、方法或事件。
/// </summary>
[ScriptableMember]
public void ExecuteWebService()
{
MessageBox.Show("我是SilverLight項目中的MessageBox","o(∩_∩)o 哈哈",MessageBoxButton.OK);
}

}

好現在我們看看怎麼在Html頁面調用SilverLight 代碼:

建立一個SilverLight外掛程式,使Javascript可以調用外掛程式裡面註冊的方法。

<!-- 
通常會使用這個對象標籤方法 創造Silverlight外掛程式
-->
<body style="height: 100%;">
<div id="mySilverlightHost" style="height: 100%;">
<script type="text/javascript">
var host = document.getElementById("mySilverlightHost");

//建立一個指定的對象並返回對它的引用。
Silverlight.createObjectEx({
//設定建立對象的資料來源
source: "ClientBin/ReferencingFromScript.xap",
//設定對象層次的父物件
parentElement: host,
//設定唯一標識id
id: "mySilverlightControl",
//設定屬性
properties: {
height: "100%",
width: "100%",
version: "2.0"
},
events: {}
});
</script>
</div>
<input type="button" onclick="buttonClick();" value="調用SilverLight方法" />
</body>

寫Javascript類來調用方法:

<head>
<title>Silverlight Project Test Page </title>
<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript">
function buttonClick() {
//擷取SilverLight外掛程式中 以建立的對象
var plugin = document.getElementById("mySilverlightControl");
//執行SilverLight項目中已經註冊的可被Javascript調用的方法
plugin.content.Button.ExecuteWebService();
}
</script>
</head>

大功告成!!!

源碼下載

作者:記憶逝去的青春
出處:http://www.cnblogs.com/lukun/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,如有問題,可以通過http://www.cnblogs.com/lukun/  聯絡我,非常感謝。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.