2016年3月

jQuery监听文件上传实现进度条效果

原理:

给XMLHttpRequest对象的upload属性绑定onprogress方法监听上传过程

var xhr=new XMLHttpRequest(); xhr.upload.onprogress=function(e){}

因为jQuery默认使用的XMLHttpRequest对象是内部生成的无法直接给jq的xhr绑定onprogress方法
所以只要给jQuery重新生成一个绑定了onprogress的XMLHttpRequest对象即可实现
首先封装一个方法 传入一个监听函数 返回一个绑定了监听函数的XMLHttpRequest对象

var xhrOnProgress=function(fun) {
    xhrOnProgress.onprogress = fun; //绑定监听
    //使用闭包实现监听绑
    return function() {
        //通过$.ajaxSettings.xhr();获得XMLHttpRequest对象
        var xhr = $.ajaxSettings.xhr();
        //判断监听函数是否为函数
        if (typeof xhrOnProgress.onprogress !== 'function')
            return xhr;
        //如果有监听函数并且xhr对象支持绑定时就把监听函数绑定上去
        if (xhrOnProgress.onprogress && xhr.upload) {
            xhr.upload.onprogress = xhrOnProgress.onprogress;
        }
        return xhr;
    }
}

上传时使用$.ajax方法

$.ajax({
    url: url,
    type: 'POST',
    xhr:xhrOnProgress(function(e){
        var percent=e.loaded / e.total;//计算百分比
    })
});

JavaScript模式第8章

关注分离

HTML CSS JS 各层次之间避免互相嵌套

减少DOM渲染

需要创建很大的dom树时,可以先做好分支,一次渲染到DOM树

减少事件绑定

使用事件代理

长期运行脚本

  • 使用setTimeout()可以使用户接口保持响应
  • 使用 web workers 技术

远程脚本

  • XMLHttpRequest 异步方案
  • JSONP 方案
  • iframe 方案 和 img图像方案

页面优化

  • 合并脚本
  • 压缩脚本
  • Expires报头配置,客户端静态缓存时间加长
  • 使用cdn加速静态资源

载入策略优化

  • script标签放在底部执行
  • HTTP分片发送网页代码
  • 使用动态加载script
    延迟加载
    按需加载
    预加载

Typecho 文章缩略图插件

更新:

v1.0.3 2011.12.17

插件重写,加入文章分类图片,随机图片,请更新到最新版。

附件 -> 文章内第一张 -> 分类图片 -> 随机图片 -> 默认图

v1.0.1 2011.12.15

实现从附件中读取第一张图片做为缩略图,若附件无图片,则从文章中匹配第一张图。

附件 -> 文章内第一张 -> 默认图

使用方法:

下载解压,上传到/usr/plugins/目录下,不用做任何设置,在要使用缩略图的地方直接用

<?php Thumbnail_Plugin::show($this); ?>

发表文章时,只需要在附件中上传一张图片即可,不用插入到文章中,这样就可以在文章中不用显示缩略图了。当然,要是文章中需要用到这张图的话,也可以插入。

使用上一版本更新注意

下载新版覆盖后,请将原来的模板中 <?php Thumbnail_Plugin::show($this->cid); ?>

改为 <?php Thumbnail_Plugin::show($this); ?>

注意:

插件读取缩略图片顺序:

附件 ->文章第一张图片 -> 分类图片 -> 随机图片 -> 默认

分类图片路径:/usr/resources/cate/

随机图片路径:/usr/resources/rand/

默认图片地址:/usr/plugins/Thumbnail/default.png

只所以放在 /usr/resources/ 里,原因有三:

一、看过typecho源码,里面有options->resourceUrl(),只是没有在usr里面建文件夹,方面用参数;

二、若此插件被删除,不会影响到分类图片;

三、方便其它插件、模板调用(其实我个人把JQuery呀什么的公用的东西全放在resources里面的)。

路径可以自己修改php文件。

没有这些文件夹可以手动创建,本来想着写进去的,但是每次判断一次没必要;写面板好像要更改数据库,感觉也没必要,加之也不会,嘿嘿。

建议使用附件上传,如果直接用文章图片匹配,碰到第一张图是一个很小的表情图片的话,还是很不爽的。

随机图片

默认随机图片后缀:array('jpg','gif','png','bmp','jpeg'),可以自行修改。

随机图片只要是放到目录中的图片,插件会自动获取,不用使用统一的文件名,扔进去就可以。

如:/usr/resources/rand/*.(jpg|gif|png|bmp|jpeg)

分类图片

分类图片默认使用.png格式文件,以第一个分类(同属几个分类)的slug为命名,如:默认分类->default,则插件会读取/usr/resources/cate/default.png文件。

请自己上传相应的分类图片到 /usr/resources/cate/ 目录。图片格式可以自己在插件文件中修改,有注释。

备注:

如果不想使用文章中图片匹配的话,可以按以下提示更改插件文件:

/ 1、只从附件中读取,请将代码中第161-174行,↓↑之间代码注释即可。 */

/* 2、不存在附件时读分类图片,请将以上↓↑之间代码注释,并打开以下代码

if( file_exists( $_SERVER['DOCUMENT_ROOT'] . $dir_cate . $cate . $default_ext ) ){

$img = $dir_cate . $cate . $default_ext ;

}

*/

插件文件中有相关注释。

本文出处 http://mrasong.com/a/thumbnail-for-typecho

Filco Minila Air

终于轮到Minila Air上场了!盒子正面特写,大大的蓝牙标记:偶可是无线蓝牙的机械键盘!

盒子的侧面,有防伪标签,右边的标签上显示,产地:台湾

盒子的背面,有一些键盘的简单使用说明,配件列表,还有Filco的国内总代理”花尽数码”的标签


开盖了,内部包装一览无余,一本说明书,下面就是键盘了


拿开说明书,Minila Air带着塑料防尘盖,上方无线的图案,右边是一对附送的五号电池。Minila Air就是由一对五号电池驱动的,根据官方的数据,一对五号电池大概能用五到六个月的时间。塑料防尘盖也是Filco的标配,虽然看起来只是一个塑料壳,不过在日常使用中,却有不可忽视的作用。平时不用的时候,就把盖子盖起来,能阻挡灰尘的侵袭,让你的键盘干净得跟新的一样。

仔细清点一下键盘附送的配件:
Filco拔键器,这也是Filco的标配,折腾键帽,清理键盘必备
说明书一本
电池一对
附送几个键帽,供替换
现在轮到主角闪亮登场:

掀起Minila Air的盖头来,键帽的布局一目了然。缩短了大大的空格键,取而代之的是左右Fn键,配合键帽侧边刻印的功能键位,让你可以手不用大幅度的移动,就可以实现各种功能。这也许就是Minila为提高效率而进行此设计的缘由。当然,右下角的方向键还是保留了下来,你也可以使用Fn和EDSF的组合来实现方向键的功能。不过,我用Vim的时候居多,HJKL才是我常用的方向键,嘿嘿……

刚开始使用,还担心因为空格键太短而在打字的时候误按到Fn键上去,实际使用来看,空格的长度适中,还没有误按的情况出现。
话说,任何Filco的开箱文中,这个角度是不得不拍的 :-)

比起Filco Minila,Minila Air多了两个指示灯,一个是蓝牙匹配的连接指示灯,另外一个是电量提醒灯。
把羞涩的Minila Air翻过来,看看它的背面。背面主要是DIP开关,键盘电源开关,蓝牙连接按钮和电池仓。
背面的DIP开关,跟HHKB Pro2及KBC Pro2一样,能大大提高键盘的可玩性及可适应性。通过配置不同的开关,能交换功能键的位置,让键盘能充分适应Windows系统和Mac OS系统。键盘上的Win键,旁边还侧刻着“Command”键的标记,这意味着Minila能同时适应Windows和Mac OS等操作系统。另外,也支持交换功能键,比如我最喜欢的“交换Ctrl键与Caps键”,无论对于Vimer还是Emacser,这是必须的……
Filco的设计也比较周到,交换位置后,你还可以用配件中的键帽替换掉这些键。另外,如果你觉得右上角的Backspace键太短小,也可以通过修改DIP和替换备用键帽,换上一个长的Backspace键。DIP开关中交换的键,都能用备用键帽换上!

国行价1100+
本人运气好,日亚海淘+11.11免邮费700+到手,真是划算了