热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

百度空间的popup效果分析第1/3页

自从用firefox浏览器以来,就几乎养成了一个习惯,就想用WebDeveloper把一些漂亮网站的js包括css给down下来分析一下,用来学习。
百度空间的弹出窗口和拖拽效果,看起来挺不错的。现在很多知名网站都是用的这样的技术。下面把我down的js代码发出来,我分析了一部分,但是还有很多东西不明白怎么回事,没有写注释的部分,还请高手能帮我解释一下。本人属于初学,有不对的地方还请多多指教。
在声明一条吧,此代码仅做学习用,技术版权属于百度。
主要是一个叫做:popup.js的文件,如下:
/**//*********************************************** popup.js**************************************************/
//为数组Array添加一个push方法
//为数组的末尾加入一个对象
if(!Array.prototype.push)
{
 Array.prototype.push=function ()
 {
 var startLength=this.length;
 for(var i=0;i {
 this[startLength+i]=arguments[i];
 }
 return this.length;
 }
 };

//对G函数的参数进行处理
function G()
{
 //定义一个数组用来保存参数
 var elements=new Array();
 //循环分析G中参数的内容
 for(var i=0;i {
 var element=arguments[i];

 //如果参数的类型为string,则获得以这个参数为ID的对象
 if(typeof element=='string')
 {
 element=document.getElementById(element);
 }
 //如果参数的长度为1
 if(arguments.length==1)
 {
 return element;
 }
 //将对象加入到数组的末尾
 elements.push(element);
 };
 return elements;
};

Function.prototype.bind=function (object)
{
 var __method=this;
 return function ()
 {
 __method.apply(object,arguments);
 };
};

//绑定事件
Function.prototype.bindAsEventListener=function (object)
{
 var __method=this;
 return function (event){__method.call(object,event||window.event);};
};


Object.extend=function (destination,source)
{
 for(property in source)
 {
 destination[property]=source[property];
 };
 return destination;
};


if(!window.Event)
{
 var Event=new Object();
};

Object.extend(
 Event,

 {
 observers:false,
 element:function (event)
 {
 return event.target||event.srcElement;
 },

 isLeftClick:function (event)
 {
 return (((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));
 },

 pointerX:function (event)
 {
 return event.pageX||(event.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));
 },

 pointerY:function (event)
 {
 return event.pageY||(event.clientY+(document.documentElement.scrollTop||document.body.scrollTop));
 },

 stop:function (event)
 {
 if(event.preventDefault)
 {
 event.preventDefault();
 event.stopPropagation();
 }
 else 
 {
 event.returnValue=false;
 event.cancelBubble=true;
 };
 },

 findElement:function (event,tagName)
 {
 var element=Event.element(event);
 while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
 element=element.parentNode;
 return element;
 },

 _observeAndCache:function (element,name,observer,useCapture)
 {
 if(!this.observers)
 this.observers=[];
 if(element.addEventListener)
 {
 this.observers.push([element,name,observer,useCapture]);
 element.addEventListener(name,observer,useCapture);
 }
 else if(element.attachEvent)
 {
 this.observers.push([element,name,observer,useCapture]);
 element.attachEvent('on'+name,observer);
 };
 },

 unloadCache:function ()
 {
 if(!Event.observers)
 return;
 for(var i=0;i {
 Event.stopObserving.apply(this,Event.observers[i]);
 Event.observers[i][0]=null;
 };
 Event.observers=false;
 },

 observe:function (element,name,observer,useCapture)
 {
 var element=G(element);
 useCapture=useCapture||false;
 if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))
 name='keydown';
 this._observeAndCache(element,name,observer,useCapture);
 },

 stopObserving:function (element,name,observer,useCapture)
 {
 var element=G(element);
 useCapture=useCapture||false;
 if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))
 name='keydown';
 if(element.removeEventListener)
 {
 element.removeEventListener(name,observer,useCapture);
 }
 else if(element.detachEvent)
 {
 element.detachEvent('on'+name,observer);
 };
 }
 }
);
123下一页阅读全文

推荐阅读
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 脑机接口(BCI)技术正逐步将科幻变为现实,从帮助听障人士恢复听力到使瘫痪者重新站立,甚至可能将多年的学习过程压缩至瞬间。本文探讨了这一前沿技术的现状、挑战及其未来前景。 ... [详细]
  • 使用原生 AJAX 处理文件下载与 IE 浏览器图片显示问题
    本文探讨了如何利用原生 AJAX 实现文件的 POST 或 GET 请求下载,并监控下载状态。同时,针对 IE 浏览器及部分移动设备浏览器因路径问题导致图片无法正常显示的情况,提供了有效的解决方案。 ... [详细]
  • 本文介绍如何使用Python编写一个简单的爬虫程序,从知乎问题页面抓取美腿图片。环境配置包括Windows 10操作系统,Python语言及其相关库。 ... [详细]
  • 精选10款jQuery内联编辑插件
    本文精选了10款优秀的jQuery内联编辑插件,旨在帮助开发者实现页面内容的动态管理和即时编辑,提升用户体验。 ... [详细]
  • 1.选择一个翻译页面,我选择的是有道词典(http:dict.youdao.com)2.随便输入一个英语单词进行翻译,然后查看源文件,找到 ... [详细]
  • 本文深入探讨了HTML5中十五个重要的新特性,为开发者提供了详细的指南。 ... [详细]
  • index.js全部js兼容性处理。js内引入babelpolyfill全部js兼容性处理。babelpolyfillimportbabelpolyfill;constadd ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
author-avatar
冠吸柏芝霆疯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有