JS调用Silverlight方法拾遗
在最近做的物联网项目中,需要利用封装过的Silverlight刻度控件显示温度,湿度,二氧化碳浓度等值。由于最新的数据是通过js ajax获取的,所以需要把这些数据传递给silverlight显示,这就涉及到js和silverlgiht交互的问题。由于这里我们需要通过js来调用silverlight方法,这里我就做一下调用说明。
首先,在Silverlight项目中,我们把需要被JS调用的方法置为public类型,以便于公布方法。
然后,在被调用方法上加上[ScriptableMember]属性说明,以便于让此方法支持外部调用。
[ScriptableMember]
public void InitTemperature(string airte="0",string airhi="0",string earthte="0",string earthhi="0",string ph="0")
{
var data = new DataNotify();
data.MaxData = 30;
data.MinData = -15;
data.MinRange = -15;
data.MaxRange = 75;
data.CurrentData = double.Parse(airte);
data.Title = "空气温度";
data.Unit = "℃";
data.ThemeSet = Theme.Red; var uc = new TemperatureControl(data);
uc.Margin = new Thickness(-980, 0, 10, 10);
Test.Children.Add(uc); //...........中间省略代码.......... var data4 = new DataNotify();
data4.MaxData = 10;
data4.MinData = 0;
data4.MinRange = 0;
data4.MaxRange = 10;
data4.CurrentData = double.Parse(ph);
data4.Title = "酸碱度";
data4.Unit = "PH";
data4.ThemeSet = Theme.Yellow; var uc4 = new TemperatureControl(data4);
uc4.Margin = new Thickness(683, 0, 10, 10);
Test.Children.Add(uc4);
}
之后,在App.xaml中,需要对被调用的方法赋予对外公布的方法调用别名:
private void Application_Startup(object sender, StartupEventArgs e)
{
var dict = e.InitParams;
this.RootVisual = new MainPage(dict); HtmlPage.RegisterScriptableObject("LoadLatest",this.RootVisual);
}
从这里我们看出,我定义了一个别名为”LoadLastest”的方法名称,JS如果进行调用的时候,就会通过调用LoadLastest来触发InitTemperature方法。
这样,我们的Silverlight端就配置完毕了,下面来看看网页端设置:
首先,定义js方法:
var slCtl = null;
function pluginLoaded(sender, args) {
slCtl = sender.getHost();
}
function CallSilverlight() {
slCtl.Content.LoadLatest.InitTemperature(lineAirTeGO, lineAirHiGO, lineEarthTeGO, lineEarthHiGO, linePHGO);
}
然后,在需要调用的地方,调用CallSilverlight即可。
======================================
加一点不相干的东西。
如果在页面上使用了easyui的combobox,如果silverlight和其挨得太近,那么当点击下拉列表的时候,列表会被silverlght给遮挡住,解决这个问题的方法就是在网页端加上这么一句:
<!--解决菜单被silverlight盖住问题-->
<param name="background" value="transparent" />
JS调用Silverlight方法拾遗的更多相关文章
- JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz
iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...
- [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...
- UIWebView中Html中用JS调用OC方法及OC执行JS代码
HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...
- js调用后台方法(如果你能容忍执行的后台方法变成一个常量)
最近一直在做一个电话拨号的系统,系统不大,但是做的时间有点长了.其中用到了一个技术:js调用后台方法.解决这个问题花了不少时间,现如今仍然还有些不明白的地方,今天跟大家分享一下.真正明白的同学欢迎指正 ...
- c# js调用AjaxPro方法出错解析
公司的项目的框架中有一部分用到了AjaxPro这个方法,看到这个方法的我一脸懵逼,老老实实去百度了一下. AjaxPro是.NET平台下的一个回调式AJAX框架,使用简单,功能强大.顾名思义ajax, ...
- Xilium.CefGlue利用XHR实现Js调用c#方法
防外链 博客园原文地址在这里http://www.cnblogs.com/shen6041/p/3442499.html 引 Xilium CefGlue是个不错的cef扩展工程,托管地址在这里 ht ...
- 在WebBrowser控件使用js调用C#方法
有时我们需要在WebBrowser控件中嵌入了网页,然后通过html页面调用后台方法,如何实现呢?其实很简单,主要有三步: 在被调用方法所属的类上加上[ComVisible(true)]标签,意思就是 ...
- JS调用App方法及App调用JS方法
做App内嵌H5项目时,经常会遇到js与App的交互,最普遍的就是方法的互相调用,那么如何实现方法的互相调用呢? 写在前面: 如果只是小项目且后期扩大的可能性不大的时候,可以忽略,可如果是长期项目的话 ...
- .NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法
系列目录 [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...
随机推荐
- JSP入门&会话技术
一.JSP 1.jsp技术 jsp是sun提供动态web资源开发技术.为了解决在Servlet中拼写html内容css.js内容十分不方便的问题,sun提供了这样一门技术.如果说S ...
- 转 自定义View之onMeasure()
可以说重载onMeasure(),onLayout(),onDraw()三个函数构建了自定义View的外观形象.再加上onTouchEvent()等重载视图的行为,可以构建任何我们需要的可感知到的自定 ...
- Spring、SpringMVC、Mybaitis框架配置
给大家推荐2个网址,介绍的非常详细 SSM环境搭建 http://blog.csdn.net/zhshulin/article/details/37956105 SSM代码生成工具介绍 http:// ...
- Chrome 控制台 console
前言 Chrome浏览器我想是每一个前端er必用工具之一吧,一部分原因是它速度快,体积不大,支持的新特性也比其它浏览器多,还有一部分我想就是因为它的控制台功能强大了吧,说它是神器一点也不过分,很方便. ...
- easyui的datagrid实例实现
功能要求如图所示: function Loading() { var editRow = undefined;//保存行的索引 var query= $("#myform").se ...
- Centos Ping不通外网
安装完成Vm,Centos6.5,设置了网络: 1.VM虚拟网络,采用桥接模式. 2.Centos里各种 设置ifcfg-eth0中的GETWAY,ADDIP等等 vim /etc/sysconfig ...
- leetcode抽风的解决办法
添加hosts: 173.230.148.103 oj.leetcode.com173.230.148.103 leetcode.com
- 如何快速开发出一个高质量的APP——创业谈
[起] 今早,一个技术群里有人想快速做出一个app,然后询问技术方案,大概是这样, 拿到了200w投资,期望花20w两个月先做出一个app,包括iOS,Android, 先,呵呵,一下, 大概预估了一 ...
- Eclipse中修改SVN用户名和密码方法(转)
由于在svn 的界面中并没有为我们提供直接更换用户名密码的地方,所以一旦我们需要更换用户名的就需要自己想一些办法. 解决方案: 在Eclipse 使用SVN 的过程中大多数人往往习惯把访问SVN 的用 ...
- 怎样用好ZBrush中的PaintStop插件
PaintStop是ZBrush®3.1的手绘插件,可以比较真实的模拟手绘风格,尤其是用水彩笔刷画水墨风格画.PaintStop插件可供用户免费使用. PaintStop是一款功能强大的插件,已经被添 ...