silverLight 嵌入 网页 解决方案
2011-11-28 11:31
309 查看
1.在silverlight调用javascript函数
用System.Windows.Brower命名空间下的某些silverlight类,你可以调用一段脚本写的javascript函数。这样就给你的silverlight代码一个很有规律的方式来和页面交互。
比如:你在HTML页面中有下边一段javascript函数
调用这个函数,首先用HtmlWindow.GetProperty()方法并把javascript的名字传进去来得到一个ScriptObjcet对象,然后在调用ScriptObjcet对象的InvokeSelf()方法。调用InvokeSelf方法时,可以把javascript函数的所有参数都传进去。
效果
2.在javascript中调用silverlight方法
在javascript中调用silverlight方法,主要有以下步骤:
1.在silverlight程序中创建一个公开的方法来暴露你想在web页面中用的函数。
2.在方法上边添加一个ScriptableMember属性。
3.在包含这个方法的类上添加ScriptableType属性。
4.调用HtmlPage.RegisterScriptableObject()将这个方法暴露给javascript。
注册一个脚本化类型时需要指定一个名称并传递一个合适对象的引用,上边例子中InvokeMethod被注册时的名称为page.这样就告诉silverlight在web页面的silverlight控件中创建了另一个叫page的属性。想调用这个方法,javascript需要找到silverlight控件,获取到它的内容然后调用它的page.ChangeText()方法。
默认情况下,VS会自动添加一个测试页面,并给包含<object>元素的DIV一个名称,但是并没有给包含在里边的<object>对象名称。你需要自己添加一个名称以方便获取<object>对象,上边例子中的<object>对象名字为myEle。
调用javascript函数
效果调用前
调用后
3.浏览器中实例化silverlight对象
和上边一样需要创建一个包含ScriptableMember方法的ScriptableType的类
同样也需要将这个类注册一下,这次需要HtmlPage.RegisterCreateableType()方法
创建一个注册类的实例,需要找到silverlight控件并调用它的ele.content.services.createObject()方法。这个例子中在javascript中调用此方法
调用javascript
效果
用System.Windows.Brower命名空间下的某些silverlight类,你可以调用一段脚本写的javascript函数。这样就给你的silverlight代码一个很有规律的方式来和页面交互。
比如:你在HTML页面中有下边一段javascript函数
1 2 3 4 | function createText(message,user) { var el = document.getElementById("myElement"); el.innerHTML = user+" "+message; } |
1 2 | ScriptObject scriptObjcet=(ScriptObject)HtmlPage.Window.GetProperty("createText"); scriptObjcet.InvokeSelf("Jerry", "Hello Wolrd"); |
2.在javascript中调用silverlight方法
在javascript中调用silverlight方法,主要有以下步骤:
1.在silverlight程序中创建一个公开的方法来暴露你想在web页面中用的函数。
2.在方法上边添加一个ScriptableMember属性。
3.在包含这个方法的类上添加ScriptableType属性。
4.调用HtmlPage.RegisterScriptableObject()将这个方法暴露给javascript。
1 2 3 4 | [ScriptableType()] public partial class InvokeMethod : UserControl { public InvokeMethod() { InitializeComponent(); HtmlPage.RegisterScriptableObject("page", this); } [ScriptableMember] public void ChangeText(string newText) { txbTest.Text="It's invoking by JavaScript "+newText; } } |
1 2 3 4 | function updateSilverlightText() { var ele = document.getElementById("myEle"); ele.content.page.ChangeText("This text has been changed"); } |
调用javascript函数
1 | <p onclick="updateSilverlightText()" >Click here to change the text in silverlight</p> |
调用后
3.浏览器中实例化silverlight对象
和上边一样需要创建一个包含ScriptableMember方法的ScriptableType的类
1 2 3 4 | [ScriptableType] public class GetRandom { private Random rdm = new Random(); [ScriptableMember] public int GetRandomNumber(int from,int end) { return rdm.Next(from,end); } } |
1 | HtmlPage.RegisterCreateableType("random", typeof(GetRandom)); |
1 2 3 4 | function getRandom() { var ele = document.getElementById("myEle"); var r = ele.content.services.createObject("random"); alert("Your number is " + r.GetRandomNumber(1, 56)); } |
1 | <input type="button" onclick="getRandom()" value="Click here to get number"/> |
相关文章推荐
- [转]在网页中嵌入任意字体的解决方案
- 在网页中嵌入任意字体的解决方案
- 解决方案:silverlight嵌入到aspx页面中后,该页面中弹出层被silverlight所在的层遮盖了
- Helloj2ee学Silverlight之三--SL的程序组成和如何在HTML网页里嵌入SL程序
- 如何将Silverlight程序嵌入网页
- Helloj2ee学Silverlight之四——如何通过JavaScript在HTML网页里嵌入SL程序
- 在网页中嵌入任意字体的解决方案
- flash嵌入html 在html网页代码中嵌入Flash文件的解决方案(上)
- Silverlight中嵌入网页
- flash嵌入html 在html网页代码中嵌入Flash文件的解决方案(下)
- woff, 在网页中嵌入任意字体的解决方案
- 在网页中嵌入任意字体的解决方案---google在线字体库应用
- 在网页中嵌入任意字体的解决方案
- 将Silverlight控件嵌入到ASP.Net网页出错解决
- 如何:在网页中嵌入Silverlight视频
- 在网页中嵌入任意字体的解决方案
- 在网页中嵌入任意字体的解决方案
- 在网页中嵌入任意字体的解决方案
- 网页中嵌入任意web字体解决方案
- 在网页中嵌入任意字体的解决方案