Windows Mobile Widget Emulator

今天Vimpyboy 在codeplex发布了Windows Mobile Widget Emulator。这是一个用来调试Windows Mobile 6.5 Widget的工具,我在做Windows Mobile 6.5 新功能widget开发 的时候就发现调试Widget很麻烦。也有想法做一个Emulator,其实这个Emulator目标很明显,第一个目标就是实现MS Widget提供的javascript的menu对象。下面代码来自于Windows Mobile Widget Emulator。实现menu对象。

    var widget = {
menu: {
createMenuItem: function(id) {
this.id = id;
this.text = '';
this.onSelect = function() { };

return this;
},
setSoftKey: function(menuItem, idx) {
var menuItemCopy = menuItem.Copy();

if (idx == 1) {
var el = window.parent.document.getElementById('leftMenu');

var newItem = window.parent.document.createElement('li');
var newLink = window.parent.document.createElement('a');

newLink.onclick = function() {
menuItemCopy.onSelect()
};
newLink.href = '#';
newLink.innerHTML = menuItemCopy.text;

newItem.appendChild(newLink);
el.insertBefore(newItem, el.firstChild);

return this;
}
else {
var el = window.parent.document.getElementById('rightMenu');
var arrlength = widget.menu.menuItems.length;

var newItem = window.parent.document.createElement('li');
var newLink = window.parent.document.createElement('a');

newLink.onclick = function() {
menuItemCopy.onSelect()
};

newLink.setAttribute('id', 'widgetmenu-' + arrlength);
newLink.href = '#';
newLink.innerHTML = menuItemCopy.text;

widget.menu.menuItems[arrlength] = menuItemCopy;

newItem.appendChild(newLink);
el.insertBefore(newItem, el.firstChild);

return this;
}
},
append: function(menuItem) {
widget.menu.setSoftKey(menuItem);
},
clear: function() {
var el = window.parent.document.getElementById('rightMenu');
el.innerHTML = '';
},
leftSoftKeyIndex: 1,
menuItems: []
},
preferenceForKey: function(key) {
if (document.cookie.length > 0) {
idx = document.cookie.indexOf(key + '=');
if (idx != -1) {
idx = idx + key.length + 1;
idxlast = document.cookie.indexOf(';', idx);

if (idxlast == -1) idxlast = document.cookie.length;

return unescape(document.cookie.substring(idx, idxlast));
}
}
return '';
},
setPreferenceForKey: function(value, key) {

if (!key) return;

if (!value && key) {
var d = new Date();
var c = document.cookie.split(";");

for (var i = 0; i < c.length; i++) {
document.cookie = c[i] + "; expires =" + d.toGMTString();
}

return;
}

var saveValue = value;

if (value.text) saveValue = value.text;

if (value.value) saveValue = value.value;

if (saveValue.length == undefined || saveValue.length < 1) return;
if (saveValue.length == undefined || saveValue < 1) return;

var exdate = new Date();
exdate.setFullYear(2020, 12, 31);

document.cookie = key + '=' + escape(saveValue) + ';expires=' + exdate.toGMTString();
},
authorEmail: 'Placeholder: E-mail address of author.',
authorName: 'Placeholder: Name of author.',
authorURL: 'Placeholder: Web site URL for author.',
currentIcon: {
height: 100,
src: 'icon.png',
width: 100
},
description: 'Placeholder: Description of widget.',
height: 'Placeholder: Height of widget.',
identifier: 'Placeholder: A unique identifier for the widget.',
locale: 'Placeholder: Locale of widget.',
name: 'Placeholder: Name of widget.',
version: 'Placeholder: Version of widget.',
width: 'Placeholder: Width of widget.'
};

 

第二个目标是可以动态调整resolution。Windows Mobile Widget Emulator也实现了,和我想法是一样的。

 widget1

widget2

 

 

我当初的想法是直接使用MS 的emulator的图片,这些图片保存在C:\Program Files\Windows Mobile 6 SDK\PocketPC\DeviceemulationV650下,而且每个emulator都有XML定义文件,可以直接取出这些定义文件和图片进行resolution的选择。

 

第三个要实现的目标是,不需要修改开发中的widget的源代码,直接可以调试。这个我想比较难实现,我开始想用firefox的addon来实现,可是firefox的javascript和ie有区别,在ff调试通过不一定在ie能用,可能做ie的addon可以解决这个问题。

Windows Mobile Widget Emulator也没有解决这个问题,需要修改iframe和增加一个javascript的引用。原文如下

How to use

Put your widget in a new folder in the widgets folder.
Modify the iframe in index.html to show your widget.
Add this code to the html file used by your widget:
<script src="http://www.cnblogs.com/assets/Widget.js" type="text/javascript"></script>

Anyway,很高兴Windows Mobile Widget Emulator的发布。以后开发widget我会使用他进行调试。


转载于:https://www.cnblogs.com/procoder/archive/2009/08/07/1540967.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

忘记网址了…… 问题&#xff1a; 分析思路与解决方法&#xff1a; 转载于:https://www.cnblogs.com/bravesunforever/p/11247988.html

Java生鲜电商平台-促销架构以及秒杀解决方案实战

Java生鲜电商平台-促销架构以及秒杀解决方案实战 背景:随着这几年的电商的大热,我们经常看到一些商家为了促销和快速收益,纷纷推出了秒杀活动.不管是日常的超市里面的促销,明星演唱会门票售卖,还是春节订阅火车票,等等我们都能看到秒杀活动的影子. 1. 构建秒杀活动架构 1.1 说明…

PHP Cookie处理

Cookie 是什么&#xff1f; cookie是保存在客户端的信息包&#xff08;一个文件&#xff09; cookie 常用于识别用户。 cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时&#xff0c;这台计算机将会发送 cookie。通过 PHP&#xff0c;您能…

PHP-连接数据库

1.2 连接数据库 通过PHP做MySQL的客户端 1.2.1 开启mysqli扩展 在php.ini中开启mysqli扩展 extensionphp_mysqli.dll开启扩展后重启服务器&#xff0c;就可以使用mysqli_函数了&#xff0c;1.2.2 连接数据库 创建news数据库 -- 创建表 drop table if exists news; create …

python模块初始与time、datetime及random

模块初始与time、datetime及random 模块初始 模块的概念&#xff08;本质为一个py文件&#xff09; python模块可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段&#xff0c;这些自我包含的有组织 的代码段就是模块&#xff0c;模块在物理形式上表…

PHP-面向对象编程教程

1.2 面向对象介绍 1.2.1 介绍 面向对象是一个编程思想。编程思想有面向过程和面向对象 面向过程&#xff1a;编程思路集中的是过程上 面向对象&#xff1a;编程思路集中在参与的对象 以去饭馆吃饭为例&#xff1a; ​ 面向过程&#xff1a;点菜——做菜——上菜——吃饭—…

Java生鲜电商平台-统一异常处理及架构实战

Java生鲜电商平台-统一异常处理及架构实战 补充说明&#xff1a;本文讲得比较细&#xff0c;所以篇幅较长。 请认真读完&#xff0c;希望读完后能对统一异常处理有一个清晰的认识。 背景 软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&…

VScode新建自定义模板快捷方式

VS新建vue文件的自定义模板 在使用vscode开发的时候&#xff0c;新建vue文件是不可或缺的&#xff0c;但是VSCode并没有vue文件的初始化模板&#xff0c;这个需要自定义模板。 我们可以使用vscode的snippets在新建.vue 文件后轻松获得一套模板。 具体步骤 打开VSCode -> …

cookbook_数据结构和算法

1.1将数据分解为单独的变量list_a [1,2,3,4,5,6,7,8,9] a,b,c,d,e,f,g,h,i list_a print(a,b,c,d,e,f,g,h,i) #使用相等数量的参数来接收_,b,c,d,e,f,g,h,_ list_a print(b,c,d,e,f,g,h) #不要的数据使用一个没有用的变量接收 View Code1.2从任意长度的可迭代对象中分解元素…

机器学习概览

什么是机器学习&#xff1f; 广义概念&#xff1a; 机器学习是让计算机具有学习的能力&#xff0c;无需明确的编程 —— 亚瑟萨缪尔&#xff0c;1959 工程概念&#xff1a; 计算机程序利用经验 E 学习任务 T&#xff0c;性能是 P&#xff0c;如果针对任务 T 的性能 P 随着经验 …

SQL on and 和 on where 的区别

on and 和 on where 的 区别 在使用 left join 时, on and 和 on where 会有区别&#xff1b;1. on的条件是在连接生成临时表时使用的条件,以左表为基准 ,不管on中的条件真否,都会返回左表中的记录  on 后面 and 都是对右表进行筛选 2.where是全部连接完后&#xff0c;对临时…

Java生鲜电商平台-缓存架构实战

Java生鲜电商平台-缓存架构实战 说明&#xff1a;在Java生鲜电商中&#xff0c;缓存起到了非常重要的作用&#xff0c;目前整个项目中才用的是redis做分布式缓存. 缓存集群 缓存集群存在的问题 1.热key 缓存集群中的某个key瞬间被数万甚至十万的并发请求打爆。 2.大value 某个k…

Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构

Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构 概述 毫无疑问&#xff0c;Spring Cloud是目前微服务架构领域的翘楚&#xff0c;无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面&#xff0c;其底层的很多原理&#xf…

aspx,ascx和ashx使用小结

做asp.net开发的对.aspx,.ascx和.ashx都不会陌生。关于它们&#xff0c;网上有很多文章介绍。“纸上得来终觉浅&#xff0c;绝知此事要躬行”&#xff0c;下面自己总结一下做个笔记。 1、.aspx Web窗体设计页面。Web窗体页由两部分组成&#xff1a;视觉元素&#xff08;html、服…

css3 卡片hover3D效果

鼠标hover卡片 向上翻转&#xff0c;看简易代码 <!DOCTYPE html> <html> <head><title>3D Flip Card hover effects</title><style type"text/css">* {margin: 0;padding: 0;font-family: consolas;box-sizing: border-box;}bo…

Java生鲜电商平台-商城后台架构与原型图实战

Java生鲜电商平台-商城后台架构与原型图实战 说明&#xff1a;生鲜电商平台的运营平台&#xff0c;其中需要很多的功能进行管理。目前把架构与原型图实战分享给大家&#xff0c;希望对大家有用. 仪表盘/首页&#xff0c;简单统计&#xff0c;报表页&#xff0c;运营快捷口。实际…

python软件开发规范

软件开发规范 什么是软件开发规范&#xff1f; 好的设计项目目录结构&#xff0c;就和编码风格一样&#xff0c;是每个程序员都有的风格&#xff0c;但是在流水化标准化作业过程中&#xff0c;个性和风格是 不被鼓励的。如果你去维护一个非常不好读的项目&#xff0c;虽然实现逻…

vue3 echarts5 graph关系图谱 点击图例节点消失线不消失重复生成问题

const myChart ref(null);const myCharts ref(null);onMounted(() > {// 这种会导致线仍然存在 重复生成myCharts.value echarts.init(myChart.value);myCharts.value.setOption(option);});return {myChart,myCharts,}; 现象&#xff1a;如下图1 点击图例类目2&#xf…

Vue3 VSCode新建项目报错The template root requires exactly one element.

1.首先我们点击左侧第四个图标插件2.输入框搜索vetur插件3.点击设置图标&#xff0c;再点击扩展设置4.搜素vetur>validation>template&#xff0c;取消vetur>validation>template的勾选 然后就不会报错了

Java生鲜电商平台-电商支付流程架构实战

Java生鲜电商平台-电商支付流程架构实战 说明&#xff1a;我一直秉承的就是接地气的业务架构实战。我的文章都有一个这样的核心。 1. 业务场景 2. 解决问题。 3.代码实现。 4.代码重构。 5.总结与复盘。 6.缺点与防范 一、场景描述 想必大家都曾遇到过这个问题&#xff0c;在电…