随着计算机、网络技术的迅猛发展,新型的高科技含量的电子产品层出不穷,遍及家电、生产、军事等各个领域。嵌入式系统因其体积小,速度快而受到重视。
在掌上电脑、手机、导航设备、信息家电领域嵌入式系统被广泛采用,其中,嵌入式桌面浏览器作为重要的嵌入式系统应用软件,是不可或缺的。
娱乐消费类电子产品对成本非常敏感,这就造成了嵌入式浏览器必须满足特定的要求,嵌入式桌面浏览器的主要开发难点:
对CPU的开销要低。
消费类电子产品CPU能力弱,功耗低,种类繁多,大多数处理器的运算能力远远比不上PC的CPU,因此桌面浏览器一定要能在100MHz以下的主频上可以运行。
内存占用要尽量小。
一般来说,要求嵌入式桌面浏览器运行期间占用内存小于6M,代码小于1M。
开发设计要合理。
消费类电子产品一般是通过遥控器或触控来操作的,遥控器不可能跟键盘一样复杂。对于使用嵌入式桌面浏览器来说,主要通过方向键、确认键和返回键来完成。基于这个特点,要求网页中焦点不能过多,另外焦点之间的跳动必须合理。当网页超出电视显示范围的时候,用户可以通过方向键移动,这要求桌面浏览器必须把网页排版在合理的宽度内,用户可以上下方向移动察看网页内容。
Windows Embedded Compact 7是WinCE的最新版本,推出了一个全新的浏览器组件。不仅支持多点触摸的体验,用户可以通过不同的手势将网页进行放大、缩小和上下滑动。而且能够利用Silverlight技术修改不同设备上浏览器的动画效果、页面结构、颜色;以及浏览器的布局等,完全可以解决嵌入式浏览器开发的难点。
用Windows Embedded Compact 7进行桌面浏览器的开发,有很多的优势:
首先,嵌入式桌面浏览器对多种网络的支持是一个必不可少的要求。这样才能充分利用已有的数据资源,建立业务。用Windows Embedded Compact 7能应用在数字电视终端中,让浏览器支持相应的数字电视数据广播协议。
Windows Embedded Compact 7可以让桌面浏览器要做到对HTTP协议的完整支持,可以实现与Internet的互联,提供对FTP等协议的支持,使专业设备对网络的文件传输、下载更加方便快捷。
实现对JavaScript的支持。JavaScript作为一种脚本语言,本身可以提供良好的网络交互性,还可以用来开发一些小游戏。
对CSS的支持为业务的应用开发提供了极大便利,也成为了嵌入式浏览器基本的支撑技术。HTML与CSS在浏览器中的运用最直接体现在电视中的界面美观性,可以动态更新界面,增强了收视效果,并体现了互联网电视个性化发展趋势。
#p#
使用IE内核的桌面浏览器,使用了多页面多线程的方式,降低了系统资源的耗费,方便了浏览,开发容易便捷,使用常用的工具就可以开发出来;如果不要求特别完善强大的功能,只需简单拖一个IE控件就行了,这绝对体现了微软技术的强大性。
Windows Embedded Compact 7具有很多新功能和新特性,Silverlight技术是一亮点。
利用Silverlight可构建整页WPF式的Web应用程序,也可借助其他一些功能(如动画、广告等特定小程序)来丰富基于HTML的页面。
桌面浏览器并不直接处理构成Silverlight应用程序的XAML(可扩展应用程序标记语言)内容。实际上,在HTML页面中,会有一个<object>标记指向Silverlight插件,并且其参数中会包含用于下载所有必需XAML资源的URL。
Silverlight 带有一个浏览器互操作性层,它允许托管代码访问基础页面的文档对象模型,并允许注册页面级事件的托管处理程序。同时,页面中运行的所有JavaScript代码均可获得对插件的XAML内容的访问权限,甚至可以进行修改。
Silverlight应用程序可被承载在某个页面当中,该页面又承载在其本机域以外的某个帧中。在这种情况下,Silverlight托管代码将能够以跨域的方式访问宿主页面的DOM。桌面浏览器可使用自己的屏障来阻止跨域脚本,但它们对于阻止Silverlight插件中的托管代码也无能为力,大家可以利用HtmlAccess来控制跨域访问。
一经授予对基础页面 DOM 的访问权限,Silverlight应用程序即可使用静态类HtmlPage的成员来完成自己的任务。完整的浏览器信息可通过BrowserInformation特性来获取,这种情况下,特性属于托管类型,可封装在浏览器级别可用的所有用户代理信息。
访问用户代理数据可以这么写:
string info = HtmlPage.BrowserInformation.UserAgent;
HtmlElement lab1 = HtmlPage.Document.GetElementById("lab1");
lab1.SetProperty("innerHTML", "Dino");
Silverlight 与 DOM 实现交互带来的一个极大好处是能够运行托管代码来响应DOM事件。例如,当单击某个按钮时,可执行C#代码而非JavaScript。
实现方式如下:
HtmlElement butn1;
butn1 = HtmlPage.Document.GetElementById("butn1");
butn1.AttachEvent("click",
new System.EventHandler(butn1_Click));
void butn1_Click(object sender, EventArgs e)
{
Guid g = Guid.NewGuid();
HtmlElement label1 = HtmlPage.Document.GetElementById("lab1");
lab1.SetProperty("innerHTML", g.ToString());
}
那么会有人问,有没有更直接的方法从一个Silverlight插件调用另一个呢?当然有,如下:
HtmlElement plugin = HtmlPage.Document.GetElementById("Silverlight2");
var content = (ScriptObject) plugin.GetProperty("content");
var action = (ScriptObject) content.GetProperty("Action");
action.Invoke("GetRandomNumber");
浏览器互操作性层、包含多种功能,实现Silverlight托管领域和JavaScript解释领域之间的通信。
从用户体验的角度来看,Windows Embedded Compact 7不仅仅满足了用户对于桌面浏览器的认知体验,好玩够用,还提升了用户的操作体验,耐玩易用。