`

prototype库与flashget冲突问题

阅读更多

/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn
电邮:wallimn@sohu.com
博客:http://wallimn.bokee.com
   http://blog.csdn.net/wallimn
时间:2006-11-15
/***********本人原创,欢迎转载,转载请保留本人信息*************/
  
  最近使用Ajax技术做一个东东, 发现使用prototype库后,会导致flashget使用浏览器中的上下文菜单时,弹出个异常(异常的具体内容忘记了,意思好象是不支持指定的事件,而这个事件是个标准的事件)而无法正常下载。
  分析了一下,可能是由于prototype库对大量系统的函数进行了扩展、改写,导致这个情况发生。我自己写了一个简单的对于xmlhttp的封装,进行了一下测试,发现就没有这个问题了。
  由此我觉得,使用prototype到底有没有必要。对我而言,我使用这个库,基本上只用到了$()函数、Ajax.Request()两个东西,对于几个常用的功能,如:切换元素的使能状态、切换可见状态等我都自己写了几个相应的函数,简单而有效。由于prototype对系统函数的扩展和改写,不但影响了系统中其发JS代码的运行效率,也增加了出错了可能。因此,我觉得,如果没有使用prototype进行非常复杂的运用,还是不用的好。
  下面贴出我封装的xmlhttp函数。虽然功能不是很强大,但是够用了。

//var myAjax = new Ajax.Request("<%=path%>/MvMgr.do?method=mvvote&id=<%=mid%>", {method:'get',parameters:"score="+myscoreval, onComplete:mvvoteover});

 function AjaxRequest(asyn){
  if(typeof asyn=="undefined")this.asyn=true;
  else this.asyn=asyn;
  this.xmlDoc=null;
  this.dealxml=null;
  this.onloadAction=null;
 }
 AjaxRequest.prototype.loadurlover=function(myxmldoc){
   this.check=function(){
    if(myxmldoc.onloadAction!=null){
     if((!myxmldoc.xmlDoc.readyState)||(myxmldoc.xmlDoc.readyState == 4)){
      if(myxmldoc.onloadAction!=null)
       myxmldoc.onloadAction(myxmldoc.xmlDoc);
     myxmldoc=null;
    }
   }
  };
  return this.check;
 }
 AjaxRequest.prototype.submit=function(filePath,onloadfunc,postMode,postVars){
  this.onloadAction = onloadfunc;
   try{
    if(this.xmlDoc==null)
     this.xmlDoc = new XMLHttpRequest();
    this.xmlDoc.open(postMode?"POST":"GET",filePath,this.asyn);
    if(postMode)
    this.xmlDoc.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    this.xmlDoc.onreadystatechange=new this.loadurlover(this);
    this.xmlDoc.send(null||postVars);
  }
   catch(e){
    if(this.xmlDoc==null)
     this.xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
    this.xmlDoc.open(postMode?"POST":"GET",filePath,this.asyn);
    if(postMode)this.xmlDoc.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    this.xmlDoc.onreadystatechange= new this.loadurlover(this);
    this.xmlDoc.send(null||postVars);
  }
 }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics