Jquery弹出层插件Thickbox使用心得 [转]【Jquery】

July 9th, 2010 | huangjf_1983

http://www.pqshow.com/design/Javascript/200909/10234.html

前段时间在建设银行项目上用EXT完整做了个单页系统,太赶了,没有记录下任何东西,现在都忘了,怪可惜的。这次项目用JQuery做js的东西。 主要用了个弹出层控件thickbox,自己也扩展和修改了一下。这里就记下来,也提供大家下载,希望对大家有用吧。

thickbox官方网站(上面有例子和基本的使用方法):http://jquery.com/demo/thickbox/

就我使用过程中,thickbox常见问题:

1。跨iframe的弹出层。

症状:每次thickbox都只在frame中弹出,而不会整个屏幕覆盖

原因和解决方法:

thickbox使用tb_show()函数在body后面加入弹出层。可以使用window.top.tb_show()把弹出层加到页面上。我的 tihickbox插件中修改如下:在tb_init()中把tb_show(t,a,g)替换如下

  if(a.indexOf(‘TB_iniframe’) != -1)
{
window.top.tb_show(t,a,g);
}
else
{
tb_show(t,a,g);
}

这样只只要在原来的链接上加入TB_iniframe=true即可,如div.aspx?height=180&width=400& amp;TB_iframe=true&TB_iniframe=true&modal=true

2.thickbox只支持一层弹出,不可支持多层弹出。

修改过的控件已经支持(不足:ie6下失效弹出层失效了,占时没解决,哈哈)

3. 弹出层关闭后,文本框无法聚焦。

症状:关闭弹出层后,原来页面上的文本框无法聚焦

原因和解决方法:这个的原因不好说,很多人都认为是ie本身的bug。是由于iframe没有移除,即使移除了。内存上也么有清除造成的。 这也是我猜的。哈哈。解决方法是在tb_remove()中先手动移除iframe然后,在强制做垃圾回收,至少我是可以啦。哈哈。代码如下:

 1function tb_remove() {
2 var seq=PopSeq();
3 $(“#TB_imageOff”+seq).unbind(“click”);
4 $(“#TB_closeWindowButton” + seq).unbind(“click”);
5
6 $(“#TB_window” + seq).fadeOut(“fast”, function() {
7 /**////手动移除ifrmae,IE的一个bug
8 $(‘#TB_iframeContent’ + seq).remove();
9 $(‘#TB_window’ + seq + ’,#TB_overlay’ + seq + ’,#TB_HideSelect’ + seq).trigger(“unload”).unbind().remove();
10 /**////自己调用垃圾回收,强制清楚iframe内存,解决文本框无法输入问题。
11 CollectGarbage();
12 });
13 if (typeof document.body.style.maxHeight == ”undefined”) {//if IE 6
14 $(“body”,”html”).css({height: ”auto”, width: ”auto”});
15 $(“html”).css(“overflow”,”");
16 }
17 document.onkeydown = ”";
18 document.onkeyup = ”";
19 return false;
20}

4.在asp.net中如何动态设置需要的参数和关闭弹出层。

症状:thickbox提供的例子都是需要在input后a的class加thickbox,而且参数什么都是固定的。 而我们传递的参数一般需要动态。

解决方法,使用asp.net ajax,不多说了。直接看代码吧。

封装一个popup类,

 1public class Popup
2{
3 /**//// <summary>
4 /// show the pop up div
5 /// </summary>
6 /// <param name=”panel”>container the button</param>
7 /// <param name=”url”></param>
8 public static void ShowPopup(UpdatePanel panel, string url)
9 {
10 ScriptManager.RegisterClientScriptBlock(panel, panel.GetType(), ”ShowPopup”, ”ShowPopup(‘” + url + ”‘)”, true);
11 }
12
13 /**//// <summary>
14 ///
15 /// </summary>
16 /// <param name=”panel”></param>
17 /// <param name=”page”>request page</param>
18 public static void ClosePopup(UpdatePanel panel)
19 {
20
21 string js = ” self.parent.tb_remove();”;
22
23 ScriptManager.RegisterClientScriptBlock(panel, panel.GetType(),”closepopup”, js, true);
24 }
25}

需要的js

1function ShowPopup(url) {
2 window.top.tb_show(null, url, false);
3
4}

页面上例子

1/**////add按钮需要放在updatepanel里面
2 protected void btnAdd_Click(object sender, EventArgs e)
3 {
4/**////自己组参数
5 string url = ”aa.aspx?height=180&width=400&Type=”+ddlType.SelectedItem.Value;
6 url += ”&TB_iframe=true&TB_iniframe=true&modal=true”;
7 Popup.ShowPopup(this.upButtons, url);
8 }

前段时间在建设银行项目上用EXT完整做了个单页系统,太赶了,没有记录下任何东西,现在都忘了,怪可惜的。这次项目用JQuery做js的东西。 主要用了个弹出层控件thickbox,自己也扩展和修改了一下。这里就记下来,也提供大家下载,希望对大家有用吧。

thickbox官方网站(上面有例子和基本的使用方法):http://jquery.com/demo/thickbox/

就我使用过程中,thickbox常见问题:

1。跨iframe的弹出层。

症状:每次thickbox都只在frame中弹出,而不会整个屏幕覆盖

原因和解决方法:

thickbox使用tb_show()函数在body后面加入弹出层。可以使用window.top.tb_show()把弹出层加到页面上。我的 tihickbox插件中修改如下:在tb_init()中把tb_show(t,a,g)替换如下

  if(a.indexOf(‘TB_iniframe’) != -1)
{
window.top.tb_show(t,a,g);
}
else
{
tb_show(t,a,g);
}

这样只只要在原来的链接上加入TB_iniframe=true即可,如div.aspx?height=180&width=400& amp;TB_iframe=true&TB_iniframe=true&modal=true

2.thickbox只支持一层弹出,不可支持多层弹出。

修改过的控件已经支持(不足:ie6下失效弹出层失效了,占时没解决,哈哈)

3. 弹出层关闭后,文本框无法聚焦。

症状:关闭弹出层后,原来页面上的文本框无法聚焦

原因和解决方法:这个的原因不好说,很多人都认为是ie本身的bug。是由于iframe没有移除,即使移除了。内存上也么有清除造成的。 这也是我猜的。哈哈。解决方法是在tb_remove()中先手动移除iframe然后,在强制做垃圾回收,至少我是可以啦。哈哈。代码如下:

 1function tb_remove() {
2 var seq=PopSeq();
3 $(“#TB_imageOff”+seq).unbind(“click”);
4 $(“#TB_closeWindowButton” + seq).unbind(“click”);
5
6 $(“#TB_window” + seq).fadeOut(“fast”, function() {
7 /**////手动移除ifrmae,IE的一个bug
8 $(‘#TB_iframeContent’ + seq).remove();
9 $(‘#TB_window’ + seq + ’,#TB_overlay’ + seq + ’,#TB_HideSelect’ + seq).trigger(“unload”).unbind().remove();
10 /**////自己调用垃圾回收,强制清楚iframe内存,解决文本框无法输入问题。
11 CollectGarbage();
12 });
13 if (typeof document.body.style.maxHeight == ”undefined”) {//if IE 6
14 $(“body”,”html”).css({height: ”auto”, width: ”auto”});
15 $(“html”).css(“overflow”,”");
16 }
17 document.onkeydown = ”";
18 document.onkeyup = ”";
19 return false;
20}

4.在asp.net中如何动态设置需要的参数和关闭弹出层。

症状:thickbox提供的例子都是需要在input后a的class加thickbox,而且参数什么都是固定的。 而我们传递的参数一般需要动态。

解决方法,使用asp.net ajax,不多说了。直接看代码吧。

封装一个popup类,

 1public class Popup
2{
3 /**//// <summary>
4 /// show the pop up div
5 /// </summary>
6 /// <param name=”panel”>container the button</param>
7 /// <param name=”url”></param>
8 public static void ShowPopup(UpdatePanel panel, string url)
9 {
10 ScriptManager.RegisterClientScriptBlock(panel, panel.GetType(), ”ShowPopup”, ”ShowPopup(‘” + url + ”‘)”, true);
11 }
12
13 /**//// <summary>
14 ///
15 /// </summary>
16 /// <param name=”panel”></param>
17 /// <param name=”page”>request page</param>
18 public static void ClosePopup(UpdatePanel panel)
19 {
20
21 string js = ” self.parent.tb_remove();”;
22
23 ScriptManager.RegisterClientScriptBlock(panel, panel.GetType(),”closepopup”, js, true);
24 }
25}

需要的js

1function ShowPopup(url) {
2 window.top.tb_show(null, url, false);
3
4}

页面上例子

1/**////add按钮需要放在updatepanel里面
2 protected void btnAdd_Click(object sender, EventArgs e)
3 {
4/**////自己组参数
5 string url = ”aa.aspx?height=180&width=400&Type=”+ddlType.SelectedItem.Value;
6 url += ”&TB_iframe=true&TB_iniframe=true&modal=true”;
7 Popup.ShowPopup(this.upButtons, url);
8 }

不足:由于现在我的不需要支持ie6。所以我也一直没把我的插件改到支持 ie6.如果有那个朋友修改好了麻烦共享一下。

不足:由于现在我的不需要支持ie6。所以我也一直没把我的插件改到支持 ie6.如果有那个朋友修改好了麻烦共享一下。

ExtJS动态树asp.net【EXTJS】

May 17th, 2010 | huangjf_1983

http://d.download.csdn.net/down/1092210/qiusongze

不能执行已释放的JScript代码[JScript]

April 21st, 2010 | huangjf_1983

转至http://www.jb51.net/article/11311.htm

很多web开发者或许都遇到过这样的问题,程序莫名奇怪出现“不能执行已释放Script的代码”,错误行1,列1.对于这种消息描述不着边,行列描述更 是让人迷茫的js错误,相信是所有调试js程序的朋友们最郁闷也最憎恨的事情!遇到这种问题,最简单的办法直接把错误贴到baidu或google那个小 输入框中让他们先给点指点,再去解决,可这次却没有这么容易,在baidu搜索似乎很多人都遇到过这种问题,但是都是些什么qq空间错误,狂晕,或者就是 只有问没有答的,闷!

这种错误从何调起?后面没办法,又是猜测又是try…catch蹦错误,找了半天终于找到错误的位置,可是发现写的并没有什么问题,后来绞尽脑汁思考 程序的解释过程,确依旧没有什么头绪。继续baidu,突然在某网页中看到一句话:当一个页面关闭时会自动释放页面的js。短短一句话给了我不小的启发。 检查我的程序是否有页面的关闭或转向,发现是执行了转向,然后再回到这个页面时出现了错误。突然间觉得明白了。

场景:页面有a和b两个 框架页iframe,在b页面中通过js将一个函数引用(函数指针)传入到a页面并保存在a页面的一个变量中,a页面可以通过这个引用操作b页面或执行b 页面的一些程序,记住:此时在a页面中的变量保存的是b页面某函数的指针(内存地址),当b页面刷新或重定向后由于b页面重新构建,所以b页面中的函数指 针就发生了变化,但a中仍然保存着b页面刷新前传过来的指针(内存地址),这时a页面中变量通过所指向的指针地址就无法访问到b页面中对应的函数了(因为 函数指针地址已经发生了变化,及原来的内存指针已经释放),这样在执行时就会出现“不能执行已经释放的Script代码”的错误。

解决 办法:在a页面中加上容错处理,当引用出现错误时要将保存的引用(函数指针)清空或指向一个默认的函数。另外在b页面再次载入时要重新给a页面传送函数引 用,这样就不会出现这样的错误了。

或许这里的描述有些过于抽象了,看一个演示再看看代码就容易明白了,先test,然后return url,之后再test就会出现这个问题了。

VS2005快捷集

April 11th, 2010 | huangjf_1983

快捷键 功能
CTRL + SHIFT + B生成解决方案
CTRL + F7 生成编译
CTRL + O 打开文件
CTRL + SHIFT + O打开项目
CTRL + SHIFT + C显示类视图窗口
F4 显示属性窗口
SHIFT + F4显示项目属性窗口
CTRL + SHIFT + E显示资源视图
F12 转到定义
CTRL + F12转到声明
CTRL + ALT + J对象浏览
CTRL + ALT + F1帮助目录
CTRL + F1 动态帮助
F1 帮助
SHIFT + F1当前窗口帮助
CTRL + ALT + F3帮助-搜索
SHIFT + ALT + ENTER全屏显示
CTRL + -向后定位
CTRL + SHIFT + -向前定位
CTRL + F4关闭文档窗口
CTRL + PAGE DOWN光标定位到窗口上方
CTRL + PAGE UP光标定位到窗口下方
CTRL + F6
CTRL + TAB下一个文档窗口
CTRL + SHIFT + F6
CTRL + SHIFT + TAB上一个文档窗口
ALT + F6下一个面板窗口
CTRL + K, CTRL + L取消remark
CTRL + K, CTRL + C注释选择的代码
CTRL + K, CTRL + U取消对选择代码的注释
CTRL + M, CTRL + O折叠代码定义
CTRL + M, CTRL + L展开代码定义
CTRL + DELETE删除至词尾
CTRL + BACKSPACE删除至词头
SHIFT + TAB取消制表符
CTRL + U转小写
CTRL + SHIFT + U转大写
CTRL + SHIFT + END选择至文档末尾
CTRL + SHIFT + HOME选择至文档末尾开始
SHIFT + END选择至行尾
SHIFT + HOME选择至行开始处
SHIFT + ALT + END垂直选择到最后尾
SHIFT + ALT + HOME垂直选择到最前面
CTRL + A全选
CTRL + W选择当前单词
CTRL + SHIFT + PAGE UP选择至本页前面
CTRL + SHIFT + PAGE DOWN选择至本页后面
CTRL + END文档定位到最后
CTRL + HOME文档定位到最前
CTRL + G转到…
CTRL + K, CTRL + P上一个标签
CTRL + K, CTRL + N下一个标签
ALT + F10调试-ApplyCodeChanges
CTRL + ALT+ Break停止调试
CTRL + SHIFT + F9 取消所有断点
CTRL + F9允许中断
CTRL + SHIFT + F5调试-重新开始
F5运行调试
CTRL + F5运行不调试
F10跨过程序执行
F11单步逐句执行
CTRL + J列出成员
CTRL + PAGE DOWN下一个视图
CTRL + B格式-粗体
CTRL + SHIFT + T格式-文字缩进
调试快捷键
F6: 生成解决方案
Ctrl+F6: 生成当前项目
F7: 查看代码
Shift+F7: 查看窗体设计器
F5: 启动调试
Ctrl+F5: 开始执行(不调试)
Shift+F5: 停止调试
Ctrl+Shift+F5: 重启调试
F9: 切换断点
Ctrl+F9: 启用/停止断点
Ctrl+Shift+F9: 删除全部断点
F10: 逐过程
Ctrl+F10: 运行到光标处
F11: 逐语句
编辑快捷键
Shift+Alt+Enter: 切换全屏编辑
Ctrl+B,T / Ctrl+K,K: 切换书签开关
Ctrl+B,N / Ctrl+K,N: 移动到下一书签
Ctrl+B,P: 移动到上一书签
Ctrl+B,C: 清除全部标签
Ctrl+I: 渐进式搜索
Ctrl+Shift+I: 反向渐进式搜索
Ctrl+F: 查找
Ctrl+Shift+F: 在文件中查找
F3: 查找下一个
Shift+F3: 查找上一个
Ctrl+H: 替换
Ctrl+Shift+H: 在文件中替换
Alt+F12: 查找符号(列出所有查找结果)
Ctrl+Shift+V: 剪贴板循环
Ctrl+左右箭头键: 一次可以移动一个单词
Ctrl+上下箭头键: 滚动代码屏幕,但不移动光标位置。
Ctrl+Shift+L: 删除当前行
Ctrl+M,M: 隐藏或展开当前嵌套的折叠状态
Ctrl+M,L: 将所有过程设置为相同的隐藏或展开状态
Ctrl+M,P: 停止大纲显示
Ctrl+E,S: 查看空白
Ctrl+E,W: 自动换行
Ctrl+G: 转到指定行
Shift+Alt+箭头键: 选择矩形文本
Alt+鼠标左按钮: 选择矩形文本
Ctrl+Shift+U: 全部变为大写
Ctrl+U: 全部变为小写
代码快捷键
Ctrl+J / Ctrl+K,L: 列出成员
Ctrl+Shift+空格键 / Ctrl+K,P: 参数信息
Ctrl+K,I: 快速信息
Ctrl+E,C / Ctrl+K,C: 注释选定内容
Ctrl+E,U / Ctrl+K,U: 取消选定注释内容
Ctrl+K,M: 生成方法存根
Ctrl+K,X: 插入代码段
Ctrl+K,S: 插入外侧代码
F12: 转到所调用过程或变量的定义
窗口快捷键
Ctrl+W,W: 浏览器窗口
Ctrl+W,S: 解决方案管理器
Ctrl+W,C: 类视图
Ctrl+W,E: 错误列表
Ctrl+W,O: 输出视图
Ctrl+W,P: 属性窗口
Ctrl+W,T: 任务列表
Ctrl+W,X: 工具箱
Ctrl+W,B: 书签窗口
Ctrl+W,U: 文档大纲
Ctrl+D,B: 断点窗口
Ctrl+D,I: 即时窗口
Ctrl+Tab: 活动窗体切换
Ctrl+Shift+N: 新建项目
Ctrl+Shift+O: 打开项目
Ctrl+Shift+S: 全部保存
Shift+Alt+C: 新建类
Ctrl+Shift+A: 新建项

VS2005的隐藏快捷键

1、Ctrl+Space直接完成类或函数(本来这个并不算隐藏的快捷键,但是因为中文输入法抢占这个快捷键,所以。。。,替代的快捷键是Alt+Right)
2、Shift+Delete整行删除,并且将这一行放到剪贴板(这时候不能选中一段内容)
3、Shift+Insert粘贴,有点匪夷所思,Ctrl+V就可以了,大概是为了和Shift+Delete对应吧
4、Ctrl+Up,Ctrl+Down滚动编辑器,但尽量不移动光标,光标保证在可见范围内
5、Ctrl+BackSpace,Ctrl+Delete整词删除,有的时候很有用
6、Ctrl+Left,Ctrl+Right按整词移动光标(不算隐藏,和前面几条加起来就是Ctrl光标控制套件了)
7、Alt+Shift+F10打开执行改名,实现接口和抽象类的小窗口(还可以用Ctrl+.,不过有的中文输入法用到这个)
8、Shift+F9调试是打开QuickWatch,内容是当前光标所在处的内容
9、F12转跳到定义,很有用的快捷键
10、Shift+F12查找所有引用
11、Ctrl+F10=F5,开始Debug
12、Ctrl+F6循环察看代码窗口,有点Ctrl+Tab的感觉
13、Ctrl+F3查找当前光标选中的内容,可以和F3配合使用
14、Ctrl+F2将焦点转移到类的下拉框上
15、Alt+F7=Ctrl+Tab
16、Alt+F11新开VS2005并编辑宏
17、Alt+F12查找=Ctrl+F

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Augusdi/archive/2010/04/11/5473026.aspx

web设计与开发终极资源大全[转][web]

March 23rd, 2010 | huangjf_1983

http://www.20ju.com/content/V141729.htm

1. 函数与类库
A. CAPTCHA
CAPTCHA 用来防止恶意表单发布,以下 CAPTCHA 系统可以轻松集成到你的程序中:
reCAPTCHA
这是目前最流行的 CAPTCHA 机制,该机制同时是一个古籍数字化工程的一部分,用户在验证的同时,也帮助辨认一些不够清晰的估计扫描。reCAPTCHA 还有一个 Perl 模块 实现该功能。

 

 

Securimage
这个一个免费的,开源 PHP CAPTCHA 脚本。
 
freeCap
基于 GPL 协议的 CAPTCHA 脚本
HN CAPTCHA
PHP CAPTCHA 脚本,基于 LGPL 协议

 
B. 日期处理
日期操作并不轻松,尽管 PHP 和 Perl 内置了大量此类函数,但未必满足你的需要,以下是几个很好用的日期函数:

 
PEAR Date
通用 PHP 日期类库

Date Class
PHP 类库,计算及其增减与日期差异

Date manipulation in PHP
PHPBuilder.com 上的一个教程,讲解如何进行日期处理

Date::Calc Perl Module
Perl模块,用于格列高利历法的日期计算
C. 图形处理
图片缩放,添加水印等:

 
Image Manipulation Class
在 PHP 中缩放,反转,旋转图片

PHP Thumbnailer
一个轻量级图片缩略图工具

PHP GD
一个强大的图片处理类库

Perl GD
Perl 图片处理模块
D. 表单验证
表单验证不仅保证用户填写的准确,还可以防止攻击:

 
validaForms
一个 PHP 表单验证类库

User Input Validation Class
一个 PHP 表单验证基础库

Validate Form Fields Script
另一个 PHP 表单验证基础库

WWW::FieldValidator
一个简单的 Perl 表单验证模块
E. 密码验证
验证密码的复杂度

 
Strength Test
一个 PHP 密码强度验证函数

 
Password Checker
一个 PHP 类,用来验证密码强度

Data::Password::Check
Perl 模块,用来验证密码强度
2. Ajax 与 JavaScript
A. 自动输入建议
最早最成熟的自动输入建议应该是 Google 搜索条。

 
Facebook-Style Autosuggest
Facebook 风格的自动输入建议

 
Autosuggest / Autocomplete with Ajax
基于 XML 和 JSON 数据源的自动输入建议工具

 
Ajax.Autocompleter
基于 script.aculo.us 的输入自动完成工具

Adobe Labs Spry Auto Suggest
由 Adobe 实验室提供的自动输入建议工具

Google Suggest Style Filter
Google Suggest 风格的自动输入建议
B. 日历
在输入日期的地方,使用非常直观的日历面板

 
Vista-Like Ajax Calendar
基于 Mootools,Vista 风格

 
JS Calendar in DHTML Suite
基于 JavaScript ,支持多日历连接

 
AJAX Calendar with PHP and MySQL
一个开源的 AJAX 日历控件

Super AJAX Calendar
一个基于 PHP 和 MySQL 的日历控件

dhtmlxScheduler
一个强大的事务日历
C. 滑动条
滑动条可以更直观地进行数值的输入和选择

 
Accessible Slider
一个设计出众的滑动条控件

 
Phatfusion Slider
一个基于 AJAX 的滑动条

 
AJAXEngine Sliders
AJAXEngine 项目中的滑动条

Slider Using PHP, Ajax And Javascript
一个简单实用的 AJAX 滑动条

WebFX Slider
基于 Apache 软件许可 2.0 的滑动条控件
D. 表格
Ajax 表格,支持排序等功能

 
Grid3
作为 Ext JS 库一部分的表格控件

 
dhtmlxGrid
支持列排序和搜索

 
Unobtrusive Table Sort Script
支持多列排序

AJAX Data Listings Engine
基于 PHP 和 MySQL

TableKit
基于 Prototype JavaScript 框架
E. 可拖动内容
Ajax-based draggable content features can be very useful when used appropriately. Such tools enable users to reorganize a page to suit their needs, and can also serve as a basis for an interactive feature like a shopping basket.

 
Draggable Content Scripts
dhtmlgoodies.com 推出多种可拖放内容脚本,以及图片裁剪工具

 
DragResize
支持尺寸修改功能

 
Drag & Drop Sortable Lists
位置可调列表控件

Scriptaculous Draggable
script.aculo.us 框架的一部分
F. 图片放大
类似 JavaScript 灯箱的图片放大显示控件

 
Highslide JS
在 Modal 窗口显示放大尺寸的图片

 
FancyZoom
图片缩放显示

 
TJPzoom 3
图片放大工具

Ajax Script To Scale Images
显示缩略图的放大尺寸版
G. 相册和幻灯
用相册或幻灯方式显示系列图片

 
minishowcase
基于 AJAX 和 JSON 的相册控件

 
Animated JavaScript Slideshow
轻量级 JavaScript 图片幻灯效果,支持运动字幕

 
Hoverbox Image Gallery
简单的相册,鼠标在缩略图上移动时显示原图

TripTracker
以幻灯方式显示图片

Agile Gallery (Ajax Version)
AJAX 相册工具
H. 打分工具
非常直观的打分控件

 
Starbox
基于 Prototype JavaScript 框架

 
Unobtrusive AJAX Star Rating Bar
基于 PHP 和 AJAX

 
CSS: Star Rater Ajax Version
基于 AJAX
I. 取色板
用于取色

 
jscolor
简单的弹出式取色板

 
JavaScript Color Picker
支持 RGB,HSL,以及16进制图片色值

 
Tigra Color Picker
非常简单的取色板

Photoshop-like JavaScript Color Picker
支持色调和饱和度选项

ColorPicker – jQuery Plugin
基于 jQuery

DHTML Color Picker
基于 DHTML
J. 进度条

 
jsProgressBarHandler
非常灵活

 
YUI Loading Panel Widget
非常漂亮.

 
Simple Javascript Progress Bar with CSS
简单实用.

Uploadify
基于 jQuery.
Web 技术突飞猛进,Web 设计与开发者们可以选择的工具越来越多,Web 开发者的技巧不再只限于 HTML 和 服务器端编程,还需要精通各种第三方资源,这些第三方资源有时候比你的项目更复杂,更专业,你无法自己实现一切,借助一些 Web API,你可以很方便地将大量优秀的第三方资源集成到自己的站点。本文是第二部分。
3. APIs
以下 API 可以将很多现成的功能集成到你的站点:

 
Alexa Top Sites
这个 API 按 Alexa 排名返回网站列表

bit.ly API
bit.ly URL 缩短 API

Blinksale API
访问 Blinksale 数据。

FoXRate
货币汇率转换 API

eBay API
eBay 的 API,可以向 eBay 提交货品。

Twitter API
Twitter API,用来访问 Twitter 数据,包括用户状态和信息。
4. IP 定位
用户来自什么地方。

 
OpenCrypt IP Location API
根据 IP 探测用户来自哪个国家

 
IP Details
一个 PHP 类库,根据 IP 地址获取用户地理位置

GEO-IP
IP 到国家对应数据库
5. 图表

 
amCharts
基于 Flash,支持 3D 图表

 
FusionCharts
漂亮的 3D 图表

 
XML/SWF Charts
可高度定制的 Flash 图表工具

JFreeChart
基于 Java 的免费图表工具

pChart
基于 PHP
6. 地图

 
amMap
交互式地图工具,支持下钻式挖掘

 
Google Charts API
来自 Google 地图工具,只是支持的地图尺寸有限

 
Flashmaps
多个基于 Flash 的地图工具
7. 音频播放器

 
XSPF Web Music Player
基于 Flash 的开源音频播放器

 
Flash MP3 Player
免费 PHP + Flash MP3 播放器

 
TSPlayer
基于 Flash,支持换皮肤

E-Phonic MP3 Player
轻量级 MP3 播放器,支持换肤,支持实时视效
8. 视频播放器

 
OS FLV
开源 Flash 视频播放器

 
Flowplayer
很好用,高度可定制。

 
JW FLV Media Player
强大的 Flash 视频播放器

FLV Player
漂亮的 FLV 播放器
9. 视频转换

 
OpenCrypt Video Conversion API
强大的视频转换 API,可生成 FLV 视频

Hey!Watch
一个在线视频编码平台

Online FLV Converter
在线 FLV 视频转换

FlashVideo Module API
面向 Drupal 社区的 Flash 视频编码 API
10. 所见即所得编辑器

 
TinyMCE
一个轻量的,基于 JavaScript 的所见即所得编辑器

 
XINHA
功能完整的开源 WYSIWYG 编辑器

 
NicEdit
一个简单的轻量级 WYSIWYG 编辑器

openWYSIWYG
开源,跨浏览器 WYSIWYG 编辑器

CKEditor
设计出众,功能丰富的 WYSIWYG 编辑器
[ 关键词:Web设计 前端开发 原文/来源链接 ]
>> 相关文章
·[深圳]迅雷急聘网页重构工程师(2顶)
·Sohu UED:浅谈前端安全(10顶)
·14个必备Web前端开发速查手册(14顶)
·[北京]TOM UED招聘前端开发工程师(7顶)
·龙刚:关注前端开发流程(1顶)

 相关资料下载
·web可用性
·前端开发人员的发展方向
·Flash对象在(x)HTML中的格式和参数及安全性

来源:草根网(www.20ju.com) – 互联网界的读者文摘

发布LumaQQ.NET第一个预览版【转】【.net】

February 25th, 2010 | huangjf_1983

转至http://www.cnblogs.com/hjf1223/archive/2008/03/13/qq_net_fctp.html
资源:http://svn.cnblogs.com:8080/svn/LumaQQ_NET/trunk/
开发包在huangjfmail@gmail.com中

版权声明:该开源开发包,是基于LumaQQ的基于等价移植到.NET平台下,开发者不直接参与QQ 协议的分析工作,移植到.NET平台纯粹是为了方便广大.NET开发者学习和研究之用,并且没有产生任何直接的经济效益,并且纯粹是个人的技术学习研究行 为,与本人所在单位没有任何关系。此开发包的用户在使用过程产生的效益和涉及的法律责任与本人没有直接关系。如果影响到您或您的公司利益,敬请谅解并且与 我联系,本人会第一时间作出处理。本系列章首发且单发于博客园,由于各种原因不欢迎转载本系列文章,如果您转载了该系列文章请自行承担责任并且转载完整版 本,包括版权声明。

很兴奋能得到这么多人的支持,这也足于说明大家对于这个开发包也是期盼已久的。在这里,为了感谢这么多 支持和期待的朋友,我还是第一时间发布一个预览版吧。在这个版本中,已经实现了QQ的一些基本功能,包括:

  1. 登录:
    使 用QQ号码和密码进行登录,在LumaQQ中不支持Email登录的。
  2. 保持连接与登录状态:
    如果长时间没有向服务器发布保 持连接包,QQ服务器会认为你已经下线。所以每隔一段时间(2分钟)会向服务器发送保持连接包,同时也有一个功能就是保持本地的Socket对象处理连接 状态,断线了则自动重新建立连接
  3. 接收信息
    可以接受来好友或陌生人的信息,但还没有测试能否接收来自网页的临时信息。此项功 能也在计划中,因为做QQ机器人还是很需要这个功能的。
  4. 发送信息
    可以向好友或陌生人回复(发送)信息。
  5. 读 取QQ好友
    可以从服务器读取好友列表(但没有分组信息,读取好友分组是另一个命令)
  6. 读取在线好友
    可以读取当前在线 的好友列表(只是好友QQ和一些状态相关的属性)
  7. 读取QQ详细信息
    可以根据QQ号码根据该QQ的详细信息(包括自己)
  8. 修 改登录状态
    可以将自己的登录状态修改为隐身或其它状态
  9. 接收到状态改变
    当一个好友的状态发生改变后,会接收到系统这 样的一个通知。
  10. 接收系统信息
    可以接收来自QQ服务器的系统消息,包括广告,好友添加申请等等。
  11. 处理 好友添加申请
    当你的帐号设置为需要验证时,会通过系统信息得到好友的验证申请,使用这个功能你可以处理验证申请(接受或拒绝)
  12. 删 除好友(未验证)
    通过这个功能你可以删除一位好友。
  13. 把自己从好友列表中删除(未验证)
    通过这个功能你可以把自己从好友列表中删除(是不 是黑名单功能?)
  14. 添加好友和发布验证信息(有点问题
    通 过这个功能可以添加好友,在好友设置为需要添加验证时,会有相应的事件,在这个事件中我们可以发送验证请求。但是不知道什么原因,这个功能却很难通过。首 先是发送添加申请的那个包经过没有收到回复,偶尔成功过,但是发送验证请求却不成功。我试了很多遍,极少数情况下可以,使用LumaQQ也经常这种情况, 但是它成功的机会还是比较多。包协议本身可以确认应该是没有问题的。有空再好好测试一下。

目前就是这么多功能,不过对于只是 想开发QQ机器人的朋友来说,这些功能应该是够用了。我今天也特意测试了一些稳定性,结果还是比较满意的,我使用的是代理上网,而且网络情况也不是很稳 定。连接在线已经6个小时了,目前依然在线,没有出现什么问题。

回到QQ.NET使用本身,如果你是直接上网,那么只需要下面这段代码即 可登录:

QQUser user = new QQUser(****, "****");
QQ.NET.QQClient client = new QQ.NET.QQClient(user);
user.IsUdp = true;
client.LoginServerHost = "219.133.62.8";
client.Login();
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }而如果你代理,则需要设置一下代理服务器地址。注意:目前只需要两个登录方式,如果你直接上网你只能使用UDP登录;如果使用代理上网,那么你就只 能使用TCP登录(IsUdp = false)。smile_sad暂时先忍一下吧。

接口方面,因为QQ本身的功能有很多,我没有像LumaQQ那样把所有的功能都定义在QQClient里面,而是将不同的功能包装到不同的类里面, 比如连接功能有ConnectionManager,包发送和处理有PacketManager,而好友处理则放在FriendManager里面等等。 这样分别包装一下,应该可以大大方便大家的使用。

在QQ事件方面,每一个QQ事件参数都会有InputPacket和OutPacket两个属性,分别表示收到此包和对应的发送包。在有的情况下, 可能只有接收包,而没有发送包。因为有的输入包是由服务器主动发送给我们的,比如好友消息和系统消息。所以要正确区分这两个属性的不同之处。

在包的处理方面,收到包的处理和包的重复发送功能我使用了ThreadPool,而不是Timer。这让我们更容易控制这些功能的运行时机,改天有 时间我会专门介绍这个功能。另外就是超时包,超时包并不是真的网络发送时超时,而是在一个包发出去后,在一段时间内没有收到QQ服务器的反馈,会再次发 送,当发送次数达到一定数量时,就会触发超时事件,不再重复发送。

这个版本按微软的软件发布阶段来定义的话,相当于第一个CTP阶段。主要是想让大家与我一同测试,找出潜在的BUG,找到改进的办法,所以非常欢迎 大家提出各建议。

Flash开发者需要知道的10件事[转]

February 21st, 2010 | huangjf_1983

[来源:infoq.com | 作者:张龙 | 时间:2010-02-19 |
本文将继续这个主题,谈谈每个Flash开发者需要知道的10件事。

近日John Lindquist谈到了在为Roundarch公司招聘Flash/Flex开发 人员时的一些感受。他认为最难的地方在于问什么问题才能最好地了解到应聘者的Flash/Flex开发技能。因此,他给出了一个列表并说到:“根据我的经 验,通过这个列表能更好地判断面试者的技术水平和经验”。

本文就将概要地介绍Flash开发者需要知道的10件事并给出进一步阅读的链接。

1. 弹性“跑道“模型

开发者应该知道事件何时被触发,代码何时被执行,Player何时进行渲染,这是每个Flash开发者都需要掌握的Flash Player基础概念。

延伸阅读

http://www.craftymind.com/2008/04/18/updated-elastic-racetrack-for-flash-9-and-avm2/

2. FlexSDK、mxmlc、compc…

开发者应该知道在点击Eclipse中的“run”按钮时都发生了哪些事情。

延伸阅读

http://www.senocular.com/flash/tutorials/as3withmxmlc/

http://livedocs.adobe.com/flex/3/html/help.html?content=apparch_08.html

3. Player事件、客户化事件以及事件冒泡

没有帧(Frame)和鼠标点击的Flash Player是无法想象的。

延伸阅读

http://www.adobe.com/devnet/actionscript/articles/event_handling_as3_03.html

http://livedocs.adobe.com/flex/3/langref/flash/events/package-detail.html

http://www.tink.ws/blog/custom-events-in-as-30-dont-forget-to-override-the-clone-method/

http://jacwright.com/blog/70/how-to-listen-to-flash-events-that-dont-bubble/

4. 语句、关键字和指令

开发者不应该对AS3中新出现的关键字感到惊讶。如果不知道“static”或是“override”是什么意思,学就行了。

延伸阅读

http://livedocs.adobe.com/flex/2/langref/statements.html

5. ASDoc

今后当你再一次阅读自己编写的代码时可能看不懂写的是什么了,因此恰当的文档是非常必要的,但如果能自动生成岂不美哉?

延伸阅读

http://livedocs.adobe.com/flex/3/html/help.html?content=asdoc_3.html

6. 管理好可视化资源(图片、字体、CSS等等)

Flash是可视化的东西,因此有必要了解代码与资源的管理手段。

延伸阅读

http://www.gskinner.com/talks/flexlovesflash/

http://code.google.com/p/queueloader-as3/

http://code.google.com/p/bulk-loader/

7. 理解Array、Collection、Dictionary与Map

通常开发者不会只处理一个MovieClip,因此需要了解如何控制多个对象。

延伸阅读

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Array.html

http://www.gskinner.com/blog/archives/2006/07/as3_dictionary.html

http://code.google.com/p/as3ds/

8. 以编程的方式处理动作

如果只搞静态的东西还不如使用HTML呢。

延伸阅读

http://blog.greensock.com/tweenmaxas3/

http://www.amazon.com/Foundation-Actionscript-3-0-Animation-Making/dp/1590597915/ref=sr_1_1?ie=UTF8&s=books&qid=1243014431&sr=8-1

9. OOP、编码与框架的合理使用

时至今日,一个巨大的.as文件闯天下的时代已经过去了。开发者需要将代码转到组织良好、可重用的对象中。现在的AS3框架也层出不穷,合理地使用 框架有助于代码的管理。

延伸阅读

http://www.adobe.com/devnet/actionscript/articles/oop_as3.html

http://www.actionscript.org/resources/articles/684/1/Object-Oriented-Programming-in-AS3/Page1.html

10. 版本控制

除非觉得代码毫无价值,否则开发者需要立刻学习一种版本控制系统并尽快应用到项目中去。

延伸阅读

http://tortoisesvn.net/downloads

http://versionsapp.com/

http://en.wikipedia.org/wiki/Revision_control

http://git-scm.com/

http://www.nongnu.org/cvs/

Flex开发者需要知道的10件事[转]

February 21st, 2010 | huangjf_1983

[来源:infoq.com | 作者:张龙 | 时间:2010-02-19 |

不久前,Michael Portuesi发表了一篇博 文,谈到了Flex开发者需要知道的10件事。文章介绍了每个进入Flex领域的开发者都需要掌握的基本知识与技能。

Michael Portuesi给出的10个条目中,有些是开发者需要了解的简单细节信息;有些则揭示了Flash/ActionScript/Flex与其他开发环境 之间的差别。

如果你了解HTML/CSS并熟悉JavaScript,但却对ActionScript或Flex一无所知的话,那么应该花些时间学习一下面向对 象编程,因为ActionScript是一门完全的面向对象编程语言,而Flex则是一个面向对象的框架。

1. 再简单的东西也是异步的

Flex是一个异步框架,因此我们绝对不能指望代码调用后就能立刻执行。事实上,我们是无法预知方法的调用序列的。

2. 搞清楚Flex组件的样式与属性

Flex UI组件(按钮、菜单等等)既有属性(通过ActionScript语言指定)也有样式(通过Flex框架指定)。搞清楚他们之间的区别是非常重要的,因 为组件的某些可视化效果可以通过属性指定,但另一些却只能通过样式设定。通过属性指定:

button.width = 100;
button.height = 50;

通过样式指定:

<mx:Style>
Button {
   color: #cc0000;
   textRollOverColor: #ccff00;
   fontFamily: Trebuchet MS;
}
</mx:Style>
<mx:Button id="setupB" text="Click Me" click="onSetup()" />

3. Flex中的样式与HTML中的不尽相同

可以使用标准的CSS样式表来为Flex组件添加样式,也可以在Flex应用中包含CSS样式表。虽然标准CSS使用连字符(例如text- font)格式来定义样式名称,但是Flex使用驼峰式的命名格式(例如textFont)。这是因为连字符不能出现在XML的属性中,所以不能用这样的 名字作为MXML标签的属性。

当然了,如果把样式定义在外部的CSS文件中或者Style标签中,也可以使用连字符格式的样式名。此外,Flex还定义了很多HTML中不存在的 CSS样式。

4. 尽管看起来不同,但MXML和ActionScript本质上是一回事

在Flex中声明的所有MXML标签都会被Flex编译器转换为ActionScript代码;当然了,也可以在MXML文件中嵌入内联的 ActionScript代码。既可以使用MXML也可以使用ActionScript创建新组件。

5. 理解Flex的Code-behind模式

虽然MXML和ActionScript本质上是一样的,但他们各司其职。一般来说,MXML负责显示界面,而ActionScript用来完成功 能。Code-behind用于解耦MXML和ActionScript,这样设计师可以直接修改MXML而无需阅读代码,程序员则可以更好地组织和重用 功能。

6. 理解Flex组件的生命周期

Flex通过状态机机制定义了一套完美的生命周期模型,用于组件的创建、运行和销毁,还定义了一些“入口”,开发者可以借此完成定制化的工作。没有 透彻理解组件的生命周期可能会导致错误的编程模型。

7. 理解Flash运行时所使用的“跑道”模型

理解Flash Player的渲染和代码执行机制非常重要的。在执行了改变界面的指令时,Flash Player并不是立刻把你要的内容显示在屏幕上,它根据一定的周期来刷新屏幕,而代码的执行则是另一回事。这和Java正好相反,Java总是等待程序 主动告诉它什么时候重绘屏幕。

8. 理解数据绑定与查看器(Watcher)

Flex提供了一种数据绑定机制。简单地说,就是将一个源属性绑定到一个目标属性上,当源属性发生变化时,目标属性也会随之变化。不仅仅可以绑定到 属性,还可以绑定到函数。甚至可以为某个属性创建一个Watcher,当属性变化时会获得事件通知。

9. 数据封装与松耦合非常重要

对于Flex和AIR项目来说,代码组织与高层结构非常重要。有些人竟然在一个文件中编写了1000多行代码,这导致的问题就是牵一发而动全身。

10. 理解ActionScript中的弱引用与强引用

不管使用何种语言与开发环境,内存管理始终是一个重要的问题,ActionScript也不例外。如果不理解运行时环境的内存管理,那么很容易就会 出现内存泄露与内存碎片问题。请阅读这篇博文文章来深入了解ActionScript的垃圾收集机制。

“赢在中国”对80后的忠告 启示

February 8th, 2010 | huangjf_1983

13、不要装大,对于装大的人,最好的办法就是,捡块砖头,悄悄跟上去,一下子从背后放倒他
说明:自己有些时候有装大的倾向,很多时候都有这么个念头,需要时刻注意。
14、不要随便说脏话,这会让别人觉得你没涵养,不大愿意和你交往。即使交往,也是敷衍。因为他内心认定你素质很差。
16、买衣服的时候,要自己去挑,不要让家人给你买,虽然你第一第二次买的都不怎么样,可是,你会慢慢有眼光的
17、要想进步,就只有吸取教训,成功的经验都是歪曲的,成功了,想怎么说都可以,失败者没有发言权,可是,你可以通过他的事例反思,总结。教训,不仅要 从自己身上吸取,还要从别人身上吸取。
说明:重点不仅要从自身吸取还要从别人身上吸取,也就是时不时的多与人交流。
18、学习,学习,再学习,有事没事,去书店看看书,关于管理,金融,营销,人际交往,未来趋势等这些,你能获得很多。这个社会竞争太激烈了,你不学习, 就会被淘汰。中国2008底,有一百多万大学生找不到工作。竞争这么激烈,所以,一定要认识一点,大学毕业了,不是学习结束了,而是学习刚刚开始。还有, 我个人推荐一个很好的视频节目,《谁来一起午餐》
说明:多读书至少能让你开阔视野了解各种情况,并非现在立刻能用上而是内在存储的能力。
22、无论你以后是不是从事销售部门,都看一下关于营销的书籍。因为,生活中,你处处都是在向别人推销展示你自己。
23、平时的时候,多和你的朋友沟通交流一下,不要等到需要朋友的帮助时,才想到要和他们联系,到了社会,你才会知道,能够认识一个真正的朋友,有多难?
26、记得,要做最后出牌的人,出让别人觉得出其不意的牌,在他们以为你要输掉的时候,这样,你才能赢得牌局
30、如果,我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径!

关于SQL SERVER时间格式使用的一些总结【SQL】

February 6th, 2010 | huangjf_1983

1. 显示本月第一天

SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0)
select convert(datetime,convert(varchar(8),getdate(),
120)+’01′,120)

2. 显示本月最后一天

select dateadd(day,-1,convert(datetime,convert
(varchar(8),dateadd(month,1,getdate()),120)+’01′,120))
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))

3. 上个月的最后一天

SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))

4. 本月的第一个星期一i

select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart(
day,getdate()),getdate())),0)

5. 本年的第一天

SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0)

6. 本年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))

7. 去年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))

8. 本季度的第一天

SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0)

9. 本周的星期一

SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)

10. 查询本月的记录

select * from tableName where DATEPART(mm, theDate)
=DATEPART(mm, GETDATE()) and DATEPART(yy, theDate)
= DATEPART(yy, GETDATE())

11. 查询本周的记录

select * from tableName where DATEPART(wk, theDate) = DATEPART
(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())

12 查询本季的记录 注:其中:GETDATE() 是获得系统时间的函数。

select * from tableName where DATEPART(qq, theDate) = DATEPART
(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())

13. 获取当月总天数:

select DATEDIFF(dd,getdate(),DATEADD
(mm, 1, getdate()))

select datediff(day,
dateadd(mm, datediff(mm,”,getdate()), ”),
dateadd(mm, datediff(mm,”,getdate()), ’1900-02-01′))

14. 获取当前为星期几

DATENAME(weekday, getdate())