event.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1"></div>
<input id="test" value="test" onclick="messageActivxEvent()" type="button"/>
</body>
</html>
<script language="javascript" src="applicationMessage.js"></script>
<script language="javascript">
//注册捕获消息
regeditLocalMessageMap(new appMsgObject("a1_name",A1));
//注册捕获消息
regeditLocalMessageMap(new appMsgObject("a2_name",A2));
//消息处理
function A1(param){
G("d1").innerHTML=G("d1").innerHTML+"A1"+param+"<br/>";
}
//消息处理
function A2(param){
G("d1").innerHTML=G("d1").innerHTML+"A2"+param+"<br/>";
}
//响应控件消息
function messageActivxEvent(){
//抛出消息
throwLocalMessage("a1_name","sssssssss");
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1"></div>
<input id="test" value="test" onclick="messageActivxEvent()" type="button"/>
</body>
</html>
<script language="javascript" src="applicationMessage.js"></script>
<script language="javascript">
//注册捕获消息
regeditLocalMessageMap(new appMsgObject("a1_name",A1));
//注册捕获消息
regeditLocalMessageMap(new appMsgObject("a2_name",A2));
//消息处理
function A1(param){
G("d1").innerHTML=G("d1").innerHTML+"A1"+param+"<br/>";
}
//消息处理
function A2(param){
G("d1").innerHTML=G("d1").innerHTML+"A2"+param+"<br/>";
}
//响应控件消息
function messageActivxEvent(){
//抛出消息
throwLocalMessage("a1_name","sssssssss");
}
</script>
applicationMessage.js:
// JavaScript Document
// JavaScript Document
Array.prototype.remove = function(s) {
for (var i = 0; i < this.length; i++) {
if (s == this[i])
this.splice(i, 1);
}
}
/**
* Simple Map
*
*
* var m = new Map();
* m.put('key','value');
* ...
* var s = "";
* m.each(function(key,value,index){
* s += index+":"+ key+"="+value+"\n";
* });
* alert(s);
*
* @author jif
* @date 2010-12-24
*/
function Map() {
/** 存放键的数组(遍历用到) */
this.keys = new Array();
/** 存放数据 */
this.data = new Object();
/**
* 放入一个键值对
* @param {String} key
* @param {Object} value
*/
this.put = function(key, value) {
if(this.data[key] == null){
this.keys.push(key);
}
this.data[key] = value;
};
/**
* 获取某键对应的值
* @param {String} key
* @return {Object} value
*/
this.get = function(key) {
return this.data[key];
};
/**
* 删除一个键值对
* @param {String} key
*/
this.remove = function(key) {
this.keys.remove(key);
this.data[key] = null;
};
/**
* 遍历Map,执行处理函数
*
* @param {Function} 回调函数 function(key,value,index){..}
*/
this.each = function(fn){
if(typeof fn != 'function'){
return;
}
var len = this.keys.length;
for(var i=0;i<len;i++){
var k = this.keys[i];
fn(k,this.data[k],i);
}
};
/**
* 获取键值数组(类似Java的entrySet())
* @return 键值对象{key,value}的数组
*/
this.entrys = function() {
var len = this.keys.length;
var entrys = new Array(len);
for (var i = 0; i < len; i++) {
entrys[i] = {
key : this.keys[i],
value : this.data[i]
};
}
return entrys;
};
/**
* 判断Map是否为空
*/
this.isEmpty = function() {
return this.keys.length == 0;
};
/**
* 获取键值对数量
*/
this.size = function(){
return this.keys.length;
};
/**
* 重写toString
*/
this.toString = function(){
var s = "{";
for(var i=0;i<this.keys.length;i++,s+=','){
var k = this.keys[i];
s += k+"="+this.data[k];
}
s+="}";
return s;
};
}
function G(_S){
return document.getElementById(_S);
}
var m_LocalMessageMap = new Map();
//增加消息
function regeditLocalMessageMap(msg){
m_LocalMessageMap.put(msg.messageId,msg.fun);
}
//抛出一个消息
function throwLocalMessage(msgid,param){
var _fn=m_LocalMessageMap.get(msgid);
if(typeof _fn != 'function'){
return;
}
_fn(param);
}
//消息对象
var appMsgObject=function(_id,_fun){
this.messageId=_id;
this.fun=_fun;
}
// JavaScript Document
Array.prototype.remove = function(s) {
for (var i = 0; i < this.length; i++) {
if (s == this[i])
this.splice(i, 1);
}
}
/**
* Simple Map
*
*
* var m = new Map();
* m.put('key','value');
* ...
* var s = "";
* m.each(function(key,value,index){
* s += index+":"+ key+"="+value+"\n";
* });
* alert(s);
*
* @author jif
* @date 2010-12-24
*/
function Map() {
/** 存放键的数组(遍历用到) */
this.keys = new Array();
/** 存放数据 */
this.data = new Object();
/**
* 放入一个键值对
* @param {String} key
* @param {Object} value
*/
this.put = function(key, value) {
if(this.data[key] == null){
this.keys.push(key);
}
this.data[key] = value;
};
/**
* 获取某键对应的值
* @param {String} key
* @return {Object} value
*/
this.get = function(key) {
return this.data[key];
};
/**
* 删除一个键值对
* @param {String} key
*/
this.remove = function(key) {
this.keys.remove(key);
this.data[key] = null;
};
/**
* 遍历Map,执行处理函数
*
* @param {Function} 回调函数 function(key,value,index){..}
*/
this.each = function(fn){
if(typeof fn != 'function'){
return;
}
var len = this.keys.length;
for(var i=0;i<len;i++){
var k = this.keys[i];
fn(k,this.data[k],i);
}
};
/**
* 获取键值数组(类似Java的entrySet())
* @return 键值对象{key,value}的数组
*/
this.entrys = function() {
var len = this.keys.length;
var entrys = new Array(len);
for (var i = 0; i < len; i++) {
entrys[i] = {
key : this.keys[i],
value : this.data[i]
};
}
return entrys;
};
/**
* 判断Map是否为空
*/
this.isEmpty = function() {
return this.keys.length == 0;
};
/**
* 获取键值对数量
*/
this.size = function(){
return this.keys.length;
};
/**
* 重写toString
*/
this.toString = function(){
var s = "{";
for(var i=0;i<this.keys.length;i++,s+=','){
var k = this.keys[i];
s += k+"="+this.data[k];
}
s+="}";
return s;
};
}
function G(_S){
return document.getElementById(_S);
}
var m_LocalMessageMap = new Map();
//增加消息
function regeditLocalMessageMap(msg){
m_LocalMessageMap.put(msg.messageId,msg.fun);
}
//抛出一个消息
function throwLocalMessage(msgid,param){
var _fn=m_LocalMessageMap.get(msgid);
if(typeof _fn != 'function'){
return;
}
_fn(param);
}
//消息对象
var appMsgObject=function(_id,_fun){
this.messageId=_id;
this.fun=_fun;
}