没有评论【发布】豆瓣fm 简单扩展 支持各浏览器
听豆瓣电台的时候 听到好歌 想看下歌词或者下载 发现很费劲 标题也不能复制 就给自己开发了这个小扩展
可以在豆瓣播放器下面显示 歌词 和 下载的 链接
效果见下图:
项目发布地址:http://dbfmshow.sinaapp.com/
借此机会也学习了不少东西
Chrome扩展的相关知识 ,利用浏览器标签实现部分功能(云输入法也是这样实现的),同时还学习了一下SAE的部分使用方法
从gmail开始,前端总结出了ajax的概念,也让前端开发工程师们得到了更多的重视,前端技能是一个很庞大的体系,W3C标准,Dom结构,Css样式,Javascript编程 ……
听豆瓣电台的时候 听到好歌 想看下歌词或者下载 发现很费劲 标题也不能复制 就给自己开发了这个小扩展
可以在豆瓣播放器下面显示 歌词 和 下载的 链接
效果见下图:
项目发布地址:http://dbfmshow.sinaapp.com/
借此机会也学习了不少东西
Chrome扩展的相关知识 ,利用浏览器标签实现部分功能(云输入法也是这样实现的),同时还学习了一下SAE的部分使用方法
截图:
demo见:http://www.iamued.com/demo/Mselect/
代码:https://github.com/iamued/Mselect
也借此机会尝试用了一下git 貌似还不错哦~
1. Min.us: 上传图片的最简单方式
任何开发人员、设计师、网络管理员都必须跟客户和同事在线分享图片。Min.us的全部服务就是让你极度简单地上传图片:只需把图片拖拽到Min.us的网页里,图片就会保存在服务器上。并且自动生成短网址,这样你就可以通过这个网站分享图片了。
访问 Min.us
2. Wirify: 把任何网页转换成线框图
设计网站时线框图非常有用。Wirify是一个可以把任何网页立刻转换成线框图的书签工具,这样你就可以学习或应用到自己的工作中。
访问 Wirify
3. CSS Resetr: 查看和比较CSS resets
CSS resets是所有样式表的必需品,以在不同的浏览器之间渲染。2004年以来,已经发布了许多不同的CSS resets。那么,哪个才是最适合你的项目的呢?CSS Resetr可以让你比较最流行的resets对同一个网页的渲染效果。
访问 CSS Resetr
4. Head JS: 用2.30 kb的Javascript代码来提速你的网站
Head JS是一段简单、轻量的脚本代码,通过像加载图片一样加载其他脚本,让你的网站更快。Head JS能做许多工作使你的网站变得现代化:支持CSS3、动态CSS等等。
访问 Head js
5. Copy Paste Character: 轻松使用特殊字符
特殊字符处理起来很麻烦,因为键盘上没有,而且你不知道对应的ASCII码。当然,你可以找一份ASCII码表放在桌面上,或者使用一个叫做Copy Paste Character的服务:只需点击所选字符,就可以复制到你的剪贴板。
6. DB Designr: 在线生成数据库模式
这是一个非常棒的简单在线生成数据库模式的工具。无需创建账户,你可以用你的Google账户登入。(我觉得我们伯乐在线网站的读者都有Google账户!说不定你就是通过Google阅读器在阅读此文。)
访问 DB Designr (得翻墙)
7. Web 2 pdf convert: 把转换任意网页为PDF
Web2PDF Converter是一个很有用的工具,能把转换任意网页为PDF文件。非常好用:我已经转换了5个页面,所有地方都跟html上的版本完全一样。
8. ScriptSrc:轻轻松松地把html页面连接到JS库中
你是否已经厌倦了在网上寻觅最新的Javascript库标签?ScriptSrc.net收录了jQuery、 Mootools、 Prototype等所有最新的标签,只需单击就可以把它复制到你的浏览器剪贴板。
访问 ScriptSrc
jQuery 1.5 beta1出来了,从学习跟进上来说,这一次已经比较晚了(我竟然不知道1.5什么时候出的alpha,就这么beta了)。
这个1.5版本最大的更新是AJAX的完全重写,提供了更强的可扩展性。但是受制于精力和篇幅,对新的AJAX的分析还是放到下回,本篇先简单介绍一下细节方面的改进。
首先不得不说这两个新生事物,因为他们是作为基础设施存在,不把这两个东西讲明白了,有些问题根本没办法解释。
首先,jQuery.Deferred是jQuery._Deferred的增强版,因此对于这个问题,从jQuery._Deferred入手,就能说明一大半的问题。
什么是Deferred?从字面上看,我的第一反应是“延迟加载”,首字母大写的应该是“类型”的定义,所以这大概是一个“透明提供延迟加载功能”的类型吧。然而实际上,虽然确实带有那么一点点“延迟”的意思,这个东西却不是用来实现延迟加载的。
简单来说,jQuery._Deferred是一个函数队列,他的作用有以下几点:
感觉是不是和啥东西很像?对,jQuery的ready函数就是这样的逻辑,实际中jQuery 1.5中的ready函数也确实被嫁接到这上面去了。
jQuery._Deferred提供下面的接口:
说明白了jQuery._Deferred,再来看看jQuery.Deferred。这个东西其实就是2个_Deferred组成的,第一个称为 deferred,用于保管“正常”状态下的函数;第二个称为failDeferred,用于保管“出错”状态下的函数。同时 jQuery.Deferred提供了一些新的接口:
同时jQuery.Deferred取消了cancel函数。
那么这个是啥用的呢?有“正常”和“出错”2个状态,同时又是异步的,很容易就能想到……对,给AJAX用的,在下一篇分析中再详细说明。
因为有了jQuery._Deferred这个东西,jQuery.ready函数变成依赖于函数队列,具体的变化有:
原来的readyList变量已经不再是一个数组,而变成了jQuery._Deferred对象。
原本在DOMContentLoaded时,调用readList中所有函数的逻辑,现在也使用了jQuery._Deferred中,原来的代码:
while ( (fn = ready[ i++ ]) ) {
fn.call( document, jQuery );
}
变成了:
readyList.fire( document , [ jQuery ] );
新增了静态函数jQuery.parseXML,用于提供浏览器兼容的从字符串转为XML文档的功能。
该函数的逻辑网上有很多,jQuery也没有特别的地方,大致分为以下2种:
var parser = new DOMParser();
var xml = parser.parseFromString(text, 'text/html');
var parser = new ActiveXObject('Microsoft.XMLDOM');
parser.async = 'false';
parser.loadXML(text);
var xml = parser.documentElement;
添加了jQuery.hasData函数,用于判断一个元素是否有jQuery附加上去的数据。
修改了jQuery.expando的实现,在原来单纯地取当前时间的基础上,添加了一个随机数:
expando = "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" );
这样保证在同一时间,引入多个jQuery副本,这几个副本之间的expando不会相互冲突,导致元素上的data变得错乱。一般来说,是不会引入多个jQuery副本的,但是使用SealJS等的时候,配置不当的话,也是很容易出现此类问题的。
原本的hasClass、addClass、removeClass函数都需要将元素的class属性分隔为数组,在1.4.4版本中,通过\n或\t进行分隔,在1.5中增加了一个\r,用于对应Windows平台下的换行符(\r\n)。
jQuery.fn.attr函数,1.4.4版本中拒绝从TextNode和CommentNode上获取属性,在1.5版本中添加了一个AttributeNode(noteType == 2)。
在1.4.4版本中,jQuery会在页面unload的时候清理掉由jQuery维护的所有DOM事件,这是为了避免IE的内存泄露问题。但是在1.5中这一段代码不见了,不知是出于什么考虑。
对于IE下使用cloneNode复制节点,会将事件也一起复制过来的问题,1.4.4中是采取复制innerHTML的方式给予解决,而在1.5中则采纳了mootools团队提供的方法,使用cloneFixAttribute函数修正该问题。
cloneFixAttribute函数们于jQuery 1.5 beta1源码文件的5388-5438行,处理IE的BUG的原理很简单,当然前端里一些看似简单的东西,都是很难发现的:
另外cloneFixAttribute函数还处理了非常多IE6-8在cloneNode上的兼容性问题,非常值得详细研究。
AJAX已经完全重写了,只留下一点边边角角保留着1.4.4版本的风采,这里只抽取一部分进行简单的说明。
原来版本中$.get和$.post的实现非常相似,具体来说仅有一个method配置项不同,因此在1.5版本中被合并起来了:
$.each(['get', 'post'], function(i, method) {
$[method] = function() { ... };
});
ajaxSetup函数现在加了一行return this;,可以链式调用了。
serializeArray函数现在统一将value中的换行符替换成Windows的风格(\r\n)。
AJAX的回调函数中,作为参数的对象不再是原生的XMLHTTPRequest,而是jQuery自己封装的称为jXHR的对象,这个对象提供了XMLHTTPRequest的常用接口。
原本对于“请求成功”的浏览器状态码,除200-299以及304外,还有一个1223,来自于IE的一个BUG,会将204的状态码变成 1223。现在因为有了jXHR对象,相当于中间多了一层,因此从jXHR对象获取statusCode不会出现1223的情况,已经被变回204了。
jQuery.ajax函数的配置项中多了一个statusCode项,其结构为map,用于指定返回特定状态码时的回调函数,大致形式如下:
jQuery.ajax({
url: 'xxx',
statusCode: {
200: function() { 处理请求成功 },
404: function() { 处理页面未找到 },
503: function() { 处理Service Unavailable }
}
});
再添加了这个回调后,jQuery.ajax函数已经有非常多的回调函数,其触发过程如下:
入口函数jQuery.fn.init现在多了一个参数,值始终为rootjQuery,用于加速init函数中对rootjQuery变量的查找速度(减少了一层作用域):
//jQuery 1.5 beta1 源码23行
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
}
jQuery对象支持继承了,具体的修改是将几处直接调用jQuery的代码改为了对this.constructor的调用:
202行:return this.constructor( context ).find( selector );
253行:var ret = this.constructor();
334行:return this.prevObject || this.constructor(null);
同时还提供了jQuery.subclass函数用于创建一个继承自jQuery的类型,由于不是很常用jQuery,更是从来没有用到过需要继承jQuery的情况,因此也不方便说这个功能的作用有多大。
转自:http://www.cnblogs.com/GrayZhang/archive/2011/01/18/jquery-1-5-enhanced-detail.html
做一个效果遇到的问题 据说是IE6不缓存背景图片导致的 解决方法如下
<!--[if IE 6]>
<script> document.execCommand("BackgroundImageCache", false, true); </script>
<![endif]-->