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 ...
随机推荐
- iOS开发之网络数据解析--中文输出
对于服务器返回的数据,解析之后直接打印,如果数据中原本有中文,可能会出现中文乱码的结果: 为了避免这个问题,可以通过类别来重写系统和打印相关的方法. 步骤: 1.新建文件名:Foundation+Lo ...
- GCD编程 之 略微提高篇
额外任务:学习YouXianMing封装好的GCD源码 1.GCD串行队列与并发队列 串行队列一次只执行一个线程,按照添加到队列的顺序依次执行 并发队列一次可以执行多个线程,线程的执行没有先后 ...
- SQL Server 查看存储过程执行次数的方法
今天老大提出一个需求,想查看数据库存储过程执行的次数,以前没有接触过,于是网上找了下,发现还真有! 不废话,贴出来sql语句,直接执行即可看到结果: use master select text,ex ...
- Android四大组件之BroadCast(续)
1.哪一个方法可以发送广播? activity.sendbroadcast or context.sentbroadcast or service.sendbroadcast 2.创建广播接受程序必须 ...
- Oracle查看所有用户
1.查看所有用户:select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统 ...
- ADO.NET Entity Framework,Code First简单示例
一.安装EntityFramework: 在vs里打开NuGet,在命令行里输入:Install-Package EntityFramework. 二.基本使用方法 1.建立数据模型 class St ...
- Java锁(一)之内存模型
想要了解Java锁机制.引发的线程安全问题以及数据一致性问题,有必要了解内存模型,机理机制了解清楚了,这些问题也就应声而解了. 一.主内存和工作内存 Java内存模型分为主内存和工作内存,所有的变量都 ...
- Tomcat报java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler
最近在生产环境部署Tomcat的时候,在启动的时候,在控制台报"java.lang.ClassNotFoundException: 1catalina.org.apache.juli.Fil ...
- cd dirname $0
这个命令的功能是返回脚本正在执行的目录. 可以根据这个目录来定位运行的程序的相对位置. 这样,对shell脚本里面的相对目录的路径代码就比较安全了.在任何一台服务器上面都可以安全执行.
- [转]Linux下权限掩码umask
本文转自:http://www.cnblogs.com/123-/p/4188942.html ---------------------------------------------------- ...