emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks
          if (window.Event){ // ?修正Event的DOM
          ???? /*
          ????????????????????????????????IE5????????MacIE5????????Mozilla????????Konqueror2.2????????Opera5
          ????event????????????????????????yes????????yes????????????yes????????????yes????????????????????yes
          ????event.returnValue????????????yes????????yes????????????no????????????no????????????????????no
          ????event.cancelBubble????????????yes????????yes????????????no????????????no????????????????????no
          ????event.srcElement????????????yes????????yes????????????no????????????no????????????????????no
          ????event.fromElement????????????yes????????yes????????????no????????????no????????????????????no
          ????
          ????
          */
          ????Event.prototype.__defineSetter__(
          " returnValue " , function (b){ // ?
          ???????? if ( ! b) this .preventDefault();
          ????????
          return ?b;
          ????????});
          ????Event.prototype.__defineSetter__(
          " cancelBubble " , function (b){ // ?設(shè)置或者檢索當(dāng)前事件句柄的層次冒泡
          ???????? if (b) this .stopPropagation();
          ????????
          return ?b;
          ????????});
          ????Event.prototype.__defineGetter__(
          " srcElement " , function (){
          ????????
          var ?node = this .target;
          ????????
          while (node.nodeType != 1 )node = node.parentNode;
          ????????
          return ?node;
          ????????});
          ????Event.prototype.__defineGetter__(
          " fromElement " , function (){ // ?返回鼠標(biāo)移出的源節(jié)點(diǎn)
          ???????? 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;
          ????????});
          ????Event.prototype.__defineGetter__(
          " toElement " , function (){ // ?返回鼠標(biāo)移入的源節(jié)點(diǎn)
          ???????? 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;
          ????????});
          ????Event.prototype.__defineGetter__(
          " offsetX " , function (){
          ????????
          return ? this .layerX;
          ????????});
          ????Event.prototype.__defineGetter__(
          " offsetY " , function (){
          ????????
          return ? this .layerY;
          ????????});
          ????}
          if (window.Document){ // ?修正Document的DOM
          ???? /*
          ????????????????????????????????IE5????????MacIE5????????Mozilla????????Konqueror2.2????????Opera5
          ????document.documentElement????yes????????yes????????????yes????????????yes????????????????????no
          ????document.activeElement????????yes????????null????????no????????????no????????????????????no
          ????
          ????
          */
          ????}
          if (window.Node){ // ?修正Node的DOM
          ???? /*
          ????????????????????????????????IE5????????MacIE5????????Mozilla????????Konqueror2.2????????Opera5
          ????Node.contains????????????????yes????????yes????????????no????????????no????????????????????yes
          ????Node.replaceNode????????????yes????????no????????????no????????????no????????????????????no
          ????Node.removeNode????????????????yes????????no????????????no????????????no????????????????????no
          ????Node.children????????????????yes????????yes????????????no????????????no????????????????????no
          ????Node.hasChildNodes????????????yes????????yes????????????yes????????????yes????????????????????no
          ????Node.childNodes????????????????yes????????yes????????????yes????????????yes????????????????????no
          ????Node.swapNode????????????????yes????????no????????????no????????????no????????????????????no
          ????Node.currentStyle????????????yes????????yes????????????no????????????no????????????????????no
          ????
          ????
          */
          ????Node.prototype.replaceNode
          = function (Node){ // ?替換指定節(jié)點(diǎn)
          ???????? this .parentNode.replaceChild(Node, this );
          ????????}
          ????Node.prototype.removeNode
          = function (removeChildren){ // ?刪除指定節(jié)點(diǎn)
          ???????? if (removeChildren)
          ????????????
          return ? this .parentNode.removeChild( this );
          ????????
          else {
          ????????????
          var ?range = document.createRange();
          ????????????range.selectNodeContents(
          this );
          ????????????
          return ? this .parentNode.replaceChild(range.extractContents(), this );
          ????????????}
          ????????}
          ????Node.prototype.swapNode
          = function (Node){ // ?交換節(jié)點(diǎn)
          ???????? var ?nextSibling = this .nextSibling;
          ????????
          var ?parentNode = this .parentNode;
          ????????node.parentNode.replaceChild(
          this ,Node);
          ????????parentNode.insertBefore(node,nextSibling);
          ????????}
          ????}
          if (window.HTMLElement){
          ????HTMLElement.prototype.__defineGetter__(
          " all " , function (){
          ????????
          var ?a = this .getElementsByTagName( " * " );
          ????????
          var ?node = this ;
          ????????a.tags
          = function (sTagName){
          ????????????
          return ?node.getElementsByTagName(sTagName);
          ????????????}
          ????????
          return ?a;
          ????????});
          ????HTMLElement.prototype.__defineGetter__(
          " parentElement " , function (){
          ????????
          if ( this .parentNode == this .ownerDocument) return ? null ;
          ????????
          return ? this .parentNode;
          ????????});
          ????HTMLElement.prototype.__defineGetter__(
          " children " , function (){
          ????????
          var ?tmp = [];
          ????????
          var ?j = 0 ;
          ????????
          var ?n;
          ????????
          for ( var ?i = 0 ;i < this .childNodes.length;i ++ ){
          ????????????n
          = this .childNodes[i];
          ????????????
          if (n.nodeType == 1 ){
          ????????????????tmp[j
          ++ ] = n;
          ????????????????
          if (n.name){
          ????????????????????
          if ( ! tmp[n.name])
          ????????????????????????tmp[n.name]
          = [];
          ????????????????????tmp[n.name][tmp[n.name].length]
          = n;
          ????????????????????}
          ????????????????
          if (n.id)
          ????????????????????tmp[n.id]
          = n;
          ????????????????}
          ????????????}
          ????????
          return ?tmp;
          ????????});
          ????HTMLElement.prototype.__defineGetter__(
          " currentStyle " ,? function (){
          ????????
          return ? this .ownerDocument.defaultView.getComputedStyle( this , null );
          ????????});
          ????HTMLElement.prototype.__defineSetter__(
          " outerHTML " , function (sHTML){
          ????????
          var ?r = this .ownerDocument.createRange();
          ????????r.setStartBefore(
          this );
          ????????
          var ?df = r.createContextualFragment(sHTML);
          ????????
          this .parentNode.replaceChild(df, this );
          ????????
          return ?sHTML;
          ????????});
          ????HTMLElement.prototype.__defineGetter__(
          " outerHTML " , function (){
          ????????
          var ?attr;
          ????????
          var ?attrs = this .attributes;
          ????????
          var ?str = " < " + this .tagName;
          ????????
          for ( var ?i = 0 ;i < attrs.length;i ++ ){
          ????????????attr
          = attrs[i];
          ????????????
          if (attr.specified)
          ????????????????str
          += " ? " + attr.name + ' = " '+attr.value+' " ';
          ????????????}
          ????????
          if ( ! this .canHaveChildren)
          ????????????
          return ?str + " > " ;
          ????????
          return ?str + " > " + this .innerHTML + " </ " + this .tagName + " > " ;
          ????????});
          ????HTMLElement.prototype.__defineGetter__(
          " canHaveChildren " , function (){
          ????????
          switch ( this .tagName.toLowerCase()){
          ????????????
          case ? " area " :
          ????????????
          case ? " base " :
          ????????????
          case ? " basefont " :
          ????????????
          case ? " col " :
          ????????????
          case ? " frame " :
          ????????????
          case ? " hr " :
          ????????????
          case ? " img " :
          ????????????
          case ? " br " :
          ????????????
          case ? " input " :
          ????????????
          case ? " isindex " :
          ????????????
          case ? " link " :
          ????????????
          case ? " meta " :
          ????????????
          case ? " param " :
          ????????????????
          return ? false ;
          ????????????}
          ????????
          return ? true ;
          ????????});
          ?
          ????HTMLElement.prototype.__defineSetter__(
          " innerText " , function (sText){
          ????????
          var ?parsedText = document.createTextNode(sText);
          ????????
          this .innerHTML = parsedText;
          ????????
          return ?parsedText;
          ????????});
          ????HTMLElement.prototype.__defineGetter__(
          " innerText " , function (){
          ????????
          var ?r = this .ownerDocument.createRange();
          ????????r.selectNodeContents(
          this );
          ????????
          return ?r.toString();
          ????????});
          ????HTMLElement.prototype.__defineSetter__(
          " outerText " , function (sText){
          ????????
          var ?parsedText = document.createTextNode(sText);
          ????????
          this .outerHTML = parsedText;
          ????????
          return ?parsedText;
          ????????});
          ????HTMLElement.prototype.__defineGetter__(
          " outerText " , function (){
          ????????
          var ?r = this .ownerDocument.createRange();
          ????????r.selectNodeContents(
          this );
          ????????
          return ?r.toString();
          ????????});
          ????HTMLElement.prototype.attachEvent
          = function (sType,fHandler){
          ????????
          var ?shortTypeName = sType.replace( / on / , "" );
          ????????fHandler._ieEmuEventHandler
          = function (e){
          ????????????window.event
          = e;
          ????????????
          return ?fHandler();
          ????????????}
          ????????
          this .addEventListener(shortTypeName,fHandler._ieEmuEventHandler, false );
          ????????}
          ????HTMLElement.prototype.detachEvent
          = function (sType,fHandler){
          ????????
          var ?shortTypeName = sType.replace( / on / , "" );
          ????????
          if ( typeof (fHandler._ieEmuEventHandler) == " function " )
          ????????????
          this .removeEventListener(shortTypeName,fHandler._ieEmuEventHandler, false );
          ????????
          else
          ????????????
          this .removeEventListener(shortTypeName,fHandler, true );
          ????????}
          ????HTMLElement.prototype.contains
          = function (Node){ // ?是否包含某節(jié)點(diǎn)
          ???????? do ? if (Node == this ) return ? true ;
          ????????
          while (Node = Node.parentNode);
          ????????
          return ? false ;
          ????????}
          ????HTMLElement.prototype.insertAdjacentElement
          = function (where,parsedNode){
          ????????
          switch (where){
          ????????????
          case ? " beforeBegin " :
          ????????????????
          this .parentNode.insertBefore(parsedNode, this );
          ????????????????
          break ;
          ????????????
          case ? " afterBegin " :
          ????????????????
          this .insertBefore(parsedNode, this .firstChild);
          ????????????????
          break ;
          ????????????
          case ? " beforeEnd " :
          ????????????????
          this .appendChild(parsedNode);
          ????????????????
          break ;
          ????????????
          case ? " afterEnd " :
          ????????????????
          if ( this .nextSibling)
          ????????????????????
          this .parentNode.insertBefore(parsedNode, this .nextSibling);
          ????????????????
          else
          ????????????????????
          this .parentNode.appendChild(parsedNode);
          ????????????????
          break ;
          ????????????}
          ????????}
          ????HTMLElement.prototype.insertAdjacentHTML
          = function (where,htmlStr){
          ????????
          var ?r = this .ownerDocument.createRange();
          ????????r.setStartBefore(
          this );
          ????????
          var ?parsedHTML = r.createContextualFragment(htmlStr);
          ????????
          this .insertAdjacentElement(where,parsedHTML);
          ????????}
          ????HTMLElement.prototype.insertAdjacentText
          = function (where,txtStr){
          ????????
          var ?parsedText = document.createTextNode(txtStr);
          ????????
          this .insertAdjacentElement(where,parsedText);
          ????????}
          ????HTMLElement.prototype.attachEvent
          = function (sType,fHandler){
          ????????
          var ?shortTypeName = sType.replace( / on / , "" );
          ????????fHandler._ieEmuEventHandler
          = function (e){
          ????????????window.event
          = e;
          ????????????
          return ?fHandler();
          ????????????}
          ????????
          this .addEventListener(shortTypeName,fHandler._ieEmuEventHandler, false );
          ????????}
          ????HTMLElement.prototype.detachEvent
          = function (sType,fHandler){
          ????????
          var ?shortTypeName = sType.replace( / on / , "" );
          ????????
          if ( typeof (fHandler._ieEmuEventHandler) == " function " )
          ????????????
          this .removeEventListener(shortTypeName,fHandler._ieEmuEventHandler, false );
          ????????
          else
          ????????????
          this .removeEventListener(shortTypeName,fHandler, true );
          ????????}
          ????}
          posted on 2006-09-12 21:23 emu 閱讀(799) 評論(0)  編輯  收藏 所屬分類: DHTML和JAVASCRIPT 技術(shù)
          主站蜘蛛池模板: 香格里拉县| 区。| 陵川县| 济宁市| 剑阁县| 汝南县| 玉环县| 永川市| 巴里| 晋城| 高唐县| 彝良县| 渝北区| 黄大仙区| 潮安县| 南阳市| 婺源县| 莱州市| 太仓市| 阳原县| 堆龙德庆县| 西青区| 马尔康县| 惠来县| 宝清县| 肃宁县| 维西| 郸城县| 吉木萨尔县| 密云县| 偃师市| 游戏| 潍坊市| 嘉峪关市| 芜湖市| 灵宝市| 昭觉县| 子洲县| 吐鲁番市| 开封县| 宜丰县|