JS技术

Javascript教程_遨游下oncontextmenu事件问题教程_Javascript教程

字号+ 作者:H5之家 来源:H5之家 2015-09-29 14:17 我要评论( )

Javascript教程_遨游下oncontextmenu事件问题教程,学习Javascript教程_遨游下oncontextmenu事件问题教程,Javascript教程_遨游下oncontextmenu事件问题教程,查看J

遨游下oncontextmenu事件问题教程

我要把右键菜单屏蔽,然后右键的时候触发自己的事件。
        obj.oncontextmenu = function(){alert("")};
       在IE及FF下都没有问题,但是在遨游下,就是不行,这个要怎么解决呢?
       先谢谢了~~

教程网

(containers, options) {
    




    
    

    
    
this._setOptions(options);
    
.options;
    
    
 opt.menu;
    
    
 opt.css;
    
 opt.hover;
    
 opt.active;
    
 opt.tag;
    
 opt.html;
    
 opt.relContainer;
    
 opt.relative;
    
 opt.attribute;
    
 opt.property;
    
    
 opt.onBeforeShow;
    
    
;
    
    
//修正自定义容器
(o, i){
        
//自定义容器 id:定位元素 menu:插入菜单元素
        var pos, menu;
        
if ( o.id ) {
            pos 
 o.menu : pos;
        } 
else {
            pos 
 o;
        };
        pos 
 $$(menu);
        
//容器对象 pos:定位元素 menu:插入菜单元素
: menu } );
    }, 
this);
    
    
//初始化程序
    this._iniMenu();
};
FixedMenu.prototype 
= {
  
//设置默认属性
  _setOptions: function(options) {
    













    };
    $$.extend( 
 {} );
  },
  
//程序初始化
  _iniMenu: function() {
    




  },
  
//根据自定义菜单对象生成程序菜单对象
  _buildMenu: function() {
    
//清除旧菜单dom(包括自定义的)
(o){
        
 o._elem;
        
if ( elem ) {
            
//防止dom内存泄漏
, o._event );
            elem.parentNode.removeChild(elem);
            o._elem 
;
        };
    });
    
//设置菜单默认值
 {
        id:                



        tag:            this.tag,
        css:            
this.css,
        hover:            
this.hover,
        active:            
this.active,
        html:            
this.html,
        relContainer:    
!!this.relContainer,
        relative:        
this.relative,
        attribute:        
this.attribute,
        property:        
this.property
    };
    
//先定义"0"顶级菜单
: [] } };
    
//整理自定义菜单并插入到程序菜单对象
(o) {
        
//生成菜单对象(由于包含对象,要用深度扩展)
 {} );
        
//去掉相同id菜单,同时排除了id为"0"的菜单
; };
        
//重置属性
;
        
 menu;
    }, 
this);
    
//建立树形结构
( o, id, menus ) {
        

._menus[o.parent];
        
//父级菜单不存在或者父级是自己的话,当成一级菜单
]; };
        
//插入到父级菜单对象的_children中
        parent._children.push(o);
    });
    
//整理菜单对象
(o) {
        
//如果有自定义元素的话先放到碎片文档中
._frag.appendChild(o.elem);
        
//修正样式,优先使用自定义元素的class
 o.elem.className ) {
            o.css 
= o.elem.className;
        } 
; };
        
 o.css; };
        
 o.hover; };
        
//对菜单对象的_children集合排序(先按rank再按id排序)
 y.id; });
    });
  },
  
//插入菜单
  _insertMenu: function(index, parent) {
    
._containers[index];
    
//如果是同一个父级菜单不用重复插入
; };
    container._parent 
= parent;
    
//把原有容器内菜单移到碎片对象中
 );
    
//重置子菜单对象集合
    container._menus = [];
    
//把从父级菜单元素的子菜单对象集合获取的元素插入到容器
( menu, i ){
        



    }, this);
  },
  
//检查菜单
  _checkMenu: function(menu, index) {
    
//索引保存到菜单对象属性中,方便调用
    menu._index = index;
    
//如果菜单对象没有元素
menu._elem ) {
        
 menu.elem;
        
//如果没有自定义元素的话创建一个
 menu.html; };
        
//设置property
        $$.extend( elem, menu.property );
        
//设置attribute
 menu.attribute;
        
 attribute) { elem.setAttribute( att, attribute[att] ); };
        
//设置样式
        elem.className = menu.css;
        
//设置事件

, menu._event );
        
//保存到菜单对象
        menu._elem = elem;
    };
  },
  
//触发菜单
  _hoverMenu: function(e, menu) {
    
 menu._elem;
    
//如果是内部元素触发直接返回
; };
    clearTimeout(
this._timerMenu);
    
//可能在多个容器间移动,所以全部容器都重新设置样式
(o, i){
        
; };
        
this._resetCss(o);
        
//设置当前菜单为active样式
 o._active;
        
 menu.active; };
    });
    
//设置当前菜单为触发样式
 menu.hover; };
    
//触发显示菜单
.delay );
  },
  
//显示菜单
  _showMenu: function(menu) {
    
menu._children.length;
    
//隐藏不需要的容器
._hideContainer(o); } );
    
//重置当前容器_active
;
    
//如果有子级菜单
    if ( child ) {
        
//设置当前容器_active
        container._active = menu;
        
//显示下一级容器




    };
    
//重置当前容器的css
    this._resetCss(container);
    
//设置当前菜单样式
 menu.active : menu.hover;
  },
  
//初始化容器(索引, 容器元素)
  _iniContainer: function(index, container) {
    
 container.pos;
    
//重置属性
    this._resetContainer(container);
    
//添加事件
));
    $$E.addEvent(oContainer, 
(e){
        
//先判断是否移出到所有容器之外
 e.relatedTarget,
            isOut 
($$D.contains(o.pos, elem)); });
        
if ( isOut ) {
            
//清除定时器并隐藏
._timerMenu);
            
.delay );
        };
    }, 
this));
    
//除了第一个容器外设置浮动样式
    if ( index ) {
        $$D.setStyle(container.pos, {
            position: 
,
            zIndex: 

        });
    };
    
//ie6处理select
    if ( $$B.ie6 ) {
        
);
        document.body.insertBefore(iframe, document.body.childNodes[
0]);
        container._iframe 
= iframe;
    };
    
//记录索引,方便调用
    container._index = index;
    
//插入到容器集合
 container;
  },
  
//检查容器
  _checkContainer: function(index) {
    
._containers[index] ) {
        
//如果容器不存在,根据前一个容器复制成新容器,第一个容器必须自定义
].pos
        
//用了新的添加事件方式,没有ie的cloneNode的bug
), pre );
        
//清除id防止冲突
;
        
//初始化容器
: container } );
    };
  },
  
//显示容器
  _showContainer: function(menu) {
    
 menu._index
        ,container 
].pos
        ,elem 
._containers[index].pos : menu._elem
        ,pos 
= RelativePosition( elem, container, menu.relative );
    
//执行显示前事件
    this.onBeforeShow(container, menu);
    
//定位并显示容器
    $$D.setStyle(container, {
        left: pos.Left 

    });
    
//ie6处理select
    if ( $$B.ie6 ) {
        $$D.setStyle(
]._iframe, {
            width: container.offsetWidth 
,
            height: container.offsetHeight 
,
            left: pos.Left 
,
            display: 
""
        });
    };
  },
  
//隐藏容器
  _hideContainer: function(container) {
    
//设置隐藏
 } );
    
//重置上一个菜单的触发菜单对象
;
    
//ie6处理select
; };
  },
  
//重置容器对象属性
  _resetContainer: function(container) {
    container._active 



  },
  
//隐藏菜单
  hide: function() {
    
(o, i){
        
 ) {
            
//如果是第一个重设样式和_active
            this._resetCss(o);
        } 

            this._hideContainer(o);
        };
    });
  },
  
//重设容器菜单样式
  _resetCss: function(container) {
    $$A.forEach( container._menus, 
 );
  },
  
//历遍菜单对象集合
  _forEachMenu: function(callback) {
    
._menus ); };
  },
  
//历遍容器对象集合
  _forEachContainer: function(callback) {
    $$A.forEach( 
 );
  },
  
//添加自定义菜单
  add: function(menu) {
    
._custommenu.concat(menu);
    
this._iniMenu();
  },
  
//修改自定义菜单
  edit: function(menu) {
    $$A.forEach( $$A.isArray( menu ) 
(o){
        
//如果对应id的菜单存在
._menus[o.id] ) {
            
//从自定义菜单中找出对应菜单,并修改
(m, i){
                
 o.id ) {
                    
;
                };
                
;
                
//用every可以跳出循环
            }, this );
        };
    }, 
this );
    
this._iniMenu();
  },
  
//删除自定义菜单
  del: function() {
    
 Array.prototype.slice.call(arguments);
    
(o){
        
;
    });
    
this._iniMenu();
  }
};

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评