zoukankan      html  css  js  c++  java
  • javascript 简单的实现消息机制

    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>

    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;
        }
  • 相关阅读:
    英语语法总结---二、英语中的从句是怎么回事
    【Cocos得知】技术要点通常的积累
    政府采购清单应包括“问题” 积
    Ubuntu通过使用PyCharm 进行调试 Odoo 8.0 可能出现的问题
    Android自己定义组件系列【8】——面膜文字动画
    手机新闻网站,手持移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发
    OS和android游戏纹理优化和内存优化(cocos2d-x)
    删除重复数据
    MyEclipse2014 设备 checkstyle、PMD、findbugs 最简单的方法 详细说明
    hdu5044 Tree 树链拆分,点细分,刚,非递归版本
  • 原文地址:https://www.cnblogs.com/jifeng/p/2001608.html
Copyright © 2011-2022 走看看