firefox获取事件源以及swapNode兼容处理

function  FixPrototypeForGecko(){
	window.navigate=function(url){
		location.href=url;
	};
	
      HTMLElement.prototype.__defineGetter__("runtimeStyle",element_prototype_get_runtimeStyle);
      HTMLTableElement.prototype.__defineGetter__("cells",function(){
    	  if(this._cells==null){
    		  this._cells=Esc.getTableCells(this);
    	  }
    	  return this._cells;
      });   
      //*************begin********************//
      /**
      HTMLElement.prototype.__defineGetter__("firstChild", element_prototype_get_firstChild);
      HTMLElement.prototype.__defineGetter__("lastChild", element_prototype_get_lastChild);
   	  HTMLElement.prototype.__defineGetter__("nextSibling", element_prototype_get_nextSibling);
      HTMLElement.prototype.__defineGetter__("previousSibling", element_prototype_get_previousSibling);
       */
	//判断是否是firefox
      if(navigator.userAgent.indexOf("Firefox")>0){
    	  window.constructor.prototype.__defineGetter__("event",window_prototype_get_event);
      }
      //**************end*******************//
 
      Event.prototype.__defineGetter__("srcElement",event_prototype_get_srcElement);			//得event事件源
      Event.prototype.__defineGetter__("fromElement",  element_prototype_get_fromElement);
      Event.prototype.__defineGetter__("toElement", element_prototype_get_toElement);
      
      //**********begin***************//
//      Event.prototype.__defineGetter__("parentElement", element_prototype_get_parentElement);
  	  //**********end***************//
      HTMLElement.prototype.fireEvent=function(type,data){
    	  var evt = document.createEvent('Event'); 
    	  type.replace(/^on/g,type);
    	  evt.initEvent(type,true,true); 
    	  evt.data=data;
    	  this.dispatchEvent(evt);
      };
      
      
}
function  element_prototype_get_runtimeStyle() { return  this.style; }
function  event_prototype_get_srcElement() { return  this.target; }  				//event事件源
function  window_prototype_get_event() {
	return  searchEvent();
}

function element_prototype_get_fromElement() {
      var node;
      if(this.type == "mouseover") node = this.relatedTarget;
      else if (this.type == "mouseout") node = this.target;
      if(!node) return;
      while (node.nodeType != 1)
          node = node.parentNode;
      return node;
  }

function  element_prototype_get_toElement() {
          var node;
          if(this.type == "mouseout")  node = this.relatedTarget;
          else if (this.type == "mouseover") node = this.target;
          if(!node) return;
          while (node.nodeType != 1)
             node = node.parentNode;
          return node;
}

function  searchEvent()
  {
      if(window.ActiveXObject) return  window.event;  

      func = searchEvent.caller;  

      while(func!=null){
          var  arg0=func.arguments[0];  

          if(arg0 instanceof Event) {
              return  arg0;
          }
         func=func.caller;
      }
      return   null;
  }
	/**
	 * 交换方法
	 */
	function swapNode(node1,node2)
	{
		var parent = node1.parentNode;		//父节点
		var t1 = node1.nextSibling;			//两节点的相对位置
		var t2 = node2.nextSibling;
		if(t1){
			parent.insertBefore(node2,t1);
		}else{
			parent.appendChild(node2);
		}
		if(t2){
			parent.insertBefore(node1,t2);
		}else{
			parent.appendChild(node1);
		}
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值