论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Javascript教程
Tag:验证,特效,入门,实例,验证,表单,特效,正则表达式,跑马灯,document,函数,代码,getElementByID,菜单,图片,视频教程

利用JavaScript恶整浏览器源码

文章类别:Javascript | 发表日期:2010-3-28 9:45:51

21视频教程网3月28日整理

<!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=gb2312" />
<title>拖动_轨迹运行</title>
<style type="text/css">
*   {margin:0px;padding:0px;}
#div1  {position:relative;left:200px;top:200px;width:100px; height:100px; background-color:#f60;cursor:move;}
</style>
<script type="text/javascript">
var isIE = (document.all)?true:false;
var $ID = function(id){
 return "string"==typeof id?document.getElementById(id):id;
}
var Class = {
 create:function(){
  return function(){
   this.initilize.apply(this,arguments);
  }
 }
}
var Extend = function(destination, source){
 for(var property in source){
  destination[property] = source[property];
 }
}
var Bind = function(object,fun){
 var args = Array.prototype.slice.call(arguments).slice(2);
 return function(){
  return fun.apply(object,args);
 }
}
var BindAsEventListener = function(object,fun){
 var args = Array.prototype.slice.call(arguments).slice(2);
 return function(event){
  return fun.apply(object,[event||window.event].concat(args));
 }
}
function addEventHandler(oTarget, sEventType, fnHandler) {
 if (oTarget.addEventListener) {
  oTarget.addEventListener(sEventType, fnHandler, false);
 } else if (oTarget.attachEvent) {
  oTarget.attachEvent("on" + sEventType, fnHandler);
 } else {
  oTarget["on" + sEventType] = fnHandler;
 }
};
function removeEventHandler(oTarget, sEventType, fnHandler) {
    if (oTarget.removeEventListener) {
        oTarget.removeEventListener(sEventType, fnHandler, false);
    } else if (oTarget.detachEvent) {
        oTarget.detachEvent("on" + sEventType, fnHandler);
    } else {
        oTarget["on" + sEventType] = null;
    }
};
function getNodePosition(node,type){//type="left"or"top"
 var nodeTemp = node;
    var l = 0;
 var t = 0;
    while(nodeTemp!=document.body&&nodeTemp!=null){
     l += nodeTemp.offsetLeft;
  t += nodeTemp.offsetTop;
     nodeTemp = nodeTemp.offsetParent;
 }
 if(type.toLowerCase()=="left") return l;
 else return t;
}
//前面通常都用一个base.js封装
</script>
<script type="text/javascript">
var MyDrag = Class.create();
MyDrag.prototype = {
 initilize:function(obj){
  this.Obj = $ID(obj);
  this._x = this._y = 0;
  this._xx = this._yy = 0;//Move记录坐标
  this.Obj.style.position = "absolute";
  this._pos = [];
  this._ifSavePos = true;
  this._t = null;
  this._speed = 10;
  this._indexMove = 0;//全局的MoveIndex
  this._fnStart = BindAsEventListener(this,this.Start);
  this._fnMove = BindAsEventListener(this,this.Move);
  this._fnStop = Bind(this,this.Stop);
  addEventHandler(this.Obj,"mousedown",this._fnStart);
 },
 Start:function(oEvent){
  if(!this._ifSavePos)
   this._pos = [];
  this.Drag = this.Obj.cloneNode(true);
  if(isIE) this.Drag.style.filter = "alpha(opacity=50)";
  else this.Drag.style.opacity = "0.5";
  this.Obj.parentNode.appendChild(this.Drag);
  
  this._left1 = this._xx = getNodePosition(this.Obj,"left");
  this._top1 = this._yy = getNodePosition(this.Obj,"top");
  this._x = oEvent.clientX - this.Obj.offsetLeft;
  this._y = oEvent.clientY - this.Obj.offsetTop;
  addEventHandler(document,"mousemove",this._fnMove);
  addEventHandler(document,"mouseup",this._fnStop);
  this._t = setInterval(Bind(this,this.SavePos),10);
 },
 SavePos:function(){//记录坐标点
  this._pos.push(this._xx + "_" + this._yy);
 },
 Move:function(oEvent){
  if(isIE) oEvent.returnValue = false;
  this._xx = oEvent.clientX - this._x;
  this._yy = oEvent.clientY - this._y;
  this.Drag.style.left =  this._xx + "px";
  this.Drag.style.top = this._yy + "px";
 },
 Stop:function(){
  removeEventHandler(document,"mousemove",this._fnMove);
  removeEventHandler(document,"mouseup",this._fnStop);
  this.Obj.parentNode.removeChild(this.Drag);
  this.Obj.style.left = this._xx + "px";
  this.Obj.style.top = this._yy + "px";
  clearInterval(this._t);
  this._fnCloneMove = Bind(this,this.CloneMove);
  this._t = setTimeout(this._fnCloneMove,50);
 },
 CloneMove:function(){
  if(this._indexMove<6){
   new ObjMove({x1:this._left1,y1:this._top1,x2:this._xx,y2:this._yy,pos:this._pos});
   this._indexMove++;
   this._t = setTimeout(this._fnCloneMove,50);
  }else{
   clearTimeout(this._t);
   this._indexMove = 0;
  }
 }
}
var ObjMove = Class.create();
ObjMove.prototype = {
 initilize:function(options){
  this.SetOptions(options);
  this.Obj = document.createElement("DIV");
  this.Obj.style.cssText = "position:absolute;left:"+ this.options.x1 +"px;top:"+ this.options.y1 +"px;width:100px;height:100px;background-color:#f60;fliter:alpha(opacity=100);opacity:1;";
  document.body.appendChild(this.Obj);
  this.Move2();
 },
 SetOptions: function(options) {
  this.options = {//默认值
   x1:     0,
   y1:  0,
   x2:  0,
   y2:  0,
   pos: []
  };
  Extend(this.options, options || {});
 },
 Move2:function(){
  this._indexMove = 0;
  this._fnMovePos = Bind(this,this.MovePos);
  this._t = setInterval(this._fnMovePos,10);
 },
 MovePos:function(){
  if(this._indexMove>=this.options.pos.length){
   this.options.pos = [];
   document.body.removeChild(this.Obj);
   clearInterval(this._t);
  }else{
   this.Obj.style.left = this.options.pos[this._indexMove].split("_")[0] + "px";
   this.Obj.style.top = this.options.pos[this._indexMove].split("_")[1] + "px";
  }
  this._indexMove++;
 }
}
onload = function(){
 var myDrag = new MyDrag("div1");
 $ID("rad1").onclick = function(){
  myDrag._ifSavePos = true;
 }
 $ID("rad2").onclick = function(){
  myDrag._ifSavePos = false;
 }
}
</script>
</head>
<body>
<div>随意拖动那个小方块几秒钟</div>
<label for="rad1"><input type="radio" id="rad1" name="rad" checked="checked"/>记住轨迹</label>
<label for="rad2"><input type="radio" id="rad2" name="rad"/>不记住轨迹</label>
<div id="div1">
</div>
</body>
</html>

Javascript教程

视频教程列表
文章教程搜索
 
Javascript推荐教程
Javascript热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058