通常使用本地程序来进行HTM5的开发时并不会采用自己实现浏览器的来承载HTML5页面的做法,因为成本和效率得不到保证。

在Microsoft.Phone.Controls程序集里微软提供了WebBrowser控件,可以通过设置WebBrowser控件的URI属性或使用nanvigate方法来导航到URI来显示HTML5页面。

示例:

IsScriptEnabled属性标明了当前浏览器控件是否支持脚本。

如图在assets文件夹中有三项 一是JQUERY的js框架,sandcu.html是一个HTML5页面,采用15个canvas来画出scene中的15个块作为一个简单的拼图。

在 Mainpage的后台代码中

public MainPage()

{

InitializeComponent();

using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())

{

if (!store.FileExists("sandcu.html"))

{

CreateFile(store, "sandcu.html", Application.GetResourceStream(new Uri("Assets/sandcu.html", UriKind.Relative)).Stream);

}

if (!store.FileExists("jquery.js"))

{

CreateFile(store, "jquery.js", Application.GetResourceStream(new Uri("Assets/jquery.js", UriKind.Relative)).Stream);

}

if (!store.FileExists("scene.jpg"))

{

CreateFile(store, "scene.jpg", Application.GetResourceStream(new Uri("Assets/scene.jpg", UriKind.Relative)).Stream);

}

}

Browser.Loaded += (s, e) => Browser.Source = new Uri("sandcu.html", UriKind.Relative);

}

由于在资源文件中得不到相对路径的URI,所以普遍做法是将所需资源拷到独立存储里,其中的CreateFile函数是用来以指定名称将资源文件写入独立存储里,此处不详细说明。

将程序run起来后可以看到sandcu.html已经展示在webbrowser里了。

目前已有的跨平台开发框架有phoneGap,但是执行效率较低可自己进行简单移植

通过WebBrowser自带的InvokeScript可直接调用。

从HTML5代码调用Native方法

从JS中可以向承载浏览器抛出参数,浏览器接到抛出的参数后做相应的流程处理。

将sandcu.html改写如图 在DIV的onclick事件里像外部容器即webbrowser抛出参数“sandcu”

在浏览器的ScriptNotify事件加入处理函数Browser_ScriptNotify()

Windows Phone Game(XNA)与HTML5的交互

2.4 PhoneGap框架分析

http://www.phonegap.cn/

PhoneGap是再IOS和Android上应用比较广泛的一个跨平台应用框架,在近日已经移植到了windows phone 7上,现在支持mango以上版本(含mango)

结构构成:

由三方库,主题程序框架和web框架构成,

三方类库主要用的是newtonsoft的json库

主体程序框架由本地调用和终端中间层构成

其中的NaticeExecution.tt为模板文件,可忽略

Plugin文件夹地下的均为本地API调用中间层,异步command为HTML页面调用命令,以参数形式传递,使用PhoneGap框架后,默认的起始页为index.html,以下以弹出messagebox来显示设备信息为例简述PhoneGap执行流程。

在li标签里的onclick事件绑定navigator.notification.alert()函数,并标明需要弹出的信息内容。

在Phonegap.js(位于WWW文件夹下)中由相应的函数来执行外部调用。

PhoneGap.exec = function(nativeMethodAndArgs)

{

window.external.Notify(nativeMethodAndArgs);

};

而EXEC函数则统一进行外部浏览器通知,并将函数名和参数以字符串参数的形式传递回去。

在mainpage的后台代码里用BrowserScriptNotify来处理

在ProcessJavascript函数里来分析回传的参数,对于本地调用都异步回调,当调用完成时使用InvokeScript方法来调用JS里的callback。

转载请保留本文网址: http://www.shaoqun.com/a/21999.html

phone html5,[操作系统]HTML5 On Windows Phone (2) windows phone mango上使用HTML5并与HTML5交互...相关推荐

  1. xps in html5,XPS and OXPS file support in Windows 7 and Windows 8

    XPS and OXPS file support in Windows 7 and Windows 8 09/25/2012 2 分钟可看完 本文内容 The XMLPaper Specificat ...

  2. 大视频上传服务器,支持HTML5断点续传,支持4GB以上大视频文件上传

    当前,我们正处于一个视频爆炸的时代,高清智能手机人人都有,各种场景下的视频应用越来越多,4K高清视频正在普及,视频文件尺寸动辄几个GB.当我们需要和他人分享这些大视频时,视频的上传和断点续传文件立马出 ...

  3. C# 获取并判断操作系统版本,解决Win10、 Windows Server 2012 R2 读取失败的方案

    Windows 8.1, Win10之后,通过GetVersion and GetVersionEx 方法获取WIndows操作系统版本号的功能需要添加manifest文件后才能查找到,不然的话会查找 ...

  4. InstallShield 2012 Spring评估试用(1): 支持Windows 8和Windows Server 2012操作系统

    今天正式开始InstallShield 2012 Spring的试用评估,首先评估的是InstallShield 2012 Spring版本对于Windows 8和Windows Server 201 ...

  5. [html] html5点击返回键怎样不让它返回上一页?

    [html] html5点击返回键怎样不让它返回上一页? $(function() {if (window.history && window.history.pushState) { ...

  6. [html] html5点击返回键怎样不让它返回上一页

    [html] html5点击返回键怎样不让它返回上一页 $(function() {if (window.history && window.history.pushState) {$ ...

  7. Windows 3.1 往事:历史上第一个真正占据主导地位的操作系统

    曾经在 Windows 系统上发生过诸多怪异之事,而其中当属 Windows 3.1 为胜,这是第一个真正占主导地位的操作系统版本.伴随着 Windows 3.1 的出现,整个 20 世纪 90 年代 ...

  8. php一次上传多张图片,html5 multiple的使用。

    本文为博主原创,转载请声明. 这是我在这里的第一篇博客,之所以在这里写博,是因为这个网站的好多技术博客帮助了我,谢谢.那么cnblog不支持markdown吗?好像"那么"这个关联 ...

  9. Ubuntu操作系统是什么?它和windows有什么区别呢?

    Ubuntu操作系统 文章目录 Ubuntu操作系统 1. Ubuntu操作系统的介绍 2. Ubuntu图形界面的介绍 3. 与Windows目录结构对比 4. 与Windows窗口对比 5. 小结 ...

  10. HTML5学堂,感谢您一年的陪伴(上)

    在HTML学堂将满一周岁之际,感谢再过去的一年里支持和关注它的每一个小伙伴.有了你们的支持,HTML5学堂才能更好的走下去.我们将会把这一年的积累重新体现在HTML5学堂的官网上.HTML5学堂将会全 ...

最新文章

  1. 广东省卫生2021副高考试成绩查询,中国卫生人才网:广东2021卫生资格考试成绩查询入口 -中国卫生人...
  2. 网站不同优化不同时期,如何更“因时制宜”?
  3. JS中location对象使用
  4. Isilon三款新品构建数据湖2.0策略
  5. java方法能不能继承方法_关于java:方法链接+继承不能很好地一起玩吗?
  6. apache-ab并发负载压力测试(转)
  7. python mvc框架django搭建项目_Django笔记1:基础:创建虚拟主机和新项目
  8. ios共享账号公众号_我的世界 minecraft 国际版 非网易版 ios下载账号分享 公众号 iphone ipad...
  9. 注册测绘师学习笔记7
  10. 安徽大学计算机基础知识答案,安徽大学大学计算机基础选择题
  11. 两个人相处久了会越来越像吗? | 无意识模仿的秘密
  12. linux 查看gc情况
  13. 小记 xian80 坐标转换 wgs84
  14. 2021-2026年中国畜牧业发展环境分析及投资前景预测报告
  15. 上个月一位朋友买到翻新N80手机 淘宝充斥奸商假货 【该奸商为四钻】
  16. 真无线蓝牙耳机哪个品牌好?2023年真无线降噪耳机盘点
  17. 求问ps如何导出单个切片及PS导出所有的切片图像
  18. beaglebone black下接nrf24l01与RFID标签的通信(基于EZSDK linux平台)
  19. iOS即时通讯从入门到“放弃”?
  20. oracle中的open,oracle最常见的三个参数:open_cursors、sessions、processes

热门文章

  1. [编程题]vivo智能手机产能
  2. SQL Server-【知识与实战VIII】触发器(下)
  3. RK3288_Android7.1平台基于DRM框架的LCD开发
  4. 解读I2C协议和读写流程
  5. TimeUnit类中的sleep() 和Thread.sleep()
  6. vscode添加vue文件模板
  7. Spring框架学习之SpringAOP(二)
  8. mysql order by 自定义
  9. hadoop搭建部署
  10. 树形DP+二分(Information Disturbing HDU3586)