Calendar
Comments
Archives
Statistics
- 文章总数:156
- 评论总数:1
- 引用总数:0
- 浏览总数:10373
- 留言总数:0
- 当前主题:4U-Hemingway
- 当前样式:4u-hemingway
Favorites
Link
Misc
jquery在浏览器滚动条上的应用
Google阅读器上有一个AJAX效果很不错,就是阅读项目时不需要翻页,浏览器滚动条往下拉到一定位置时自动加载新的一批项目进来,一直到所有项目加载完为止。对于我来说再好不过了,因为我很不喜欢翻页,尤其是输入页码再定位到页。要知道,数据量增加很频繁时,要通过定位页码来找到目标数据似乎并没有什么意义。我觉得用户体验成熟的WEB应用程序应当引导用户使用TAG或搜索等功能来找到目标数据。至于浏览数据,尤其是浏览最新的数据,利用浏览器滚动条来加载,是很好的尝试……
我试着用jquery来实现这个功能。先要得到滚动条的总长属性值:scrollHeight,还有滚动条当前位置属性值:scrollTop。然后通过计算,若当前值位于总长值三分之二时加载新数据。假设DOM上有一个元素为<div id=”mypage”></div>,该元素overflow样式为scroll,也就是元素中的内容溢出元素指定高度时启用滚动条。利用jquery的load方法为元素加载一个已经存在的文件,我假设它是table.html。这个文件的内容可以是足以使浏览器滚屏的一张数据表。
<script type=”text/javascript” src=”jquery.js“>//加载jquery库</script>
<script type=”text/javascript”>
var hght=0;//初始化滚动条总长
var top=0;//初始化滚动条的当前位置
$(document).ready(function(){//DOM的onload事件
$(”#mypage”).load(”table.html”);//table.html的内容被加载到mypage元素
$(”#mypage”).scroll( function() {//定义滚动条位置改变时触发的事件。
hght=this.scrollHeight;//得到滚动条总长,赋给hght变量
top=this.scrollTop;//得到滚动条当前值,赋给top变量
});
});
setInterval(”cando();”,2000);//每隔2秒钟调用一次cando函数来判断当前滚动条位置。
function cando(){
if(top>parseInt(hght/3)*2)//判断滚动条当前位置是否超过总长的2/3,parseInt为取整函数
show();//如果是,调用show函数加载内容。
}
function show(){
$.get(”table.html”, function(data){//利用jquery的get方法得到table.html内容
$(”#mypage”).append(data);//用append方法追加内容到mypage元素。
hght=0;//恢复滚动条总长,因为$(”#mypage”).scroll事件一触发,又会得到新值,不恢复的话可能会造成判断错误而再次加载……
top=0;//原因同上。
});
}
</script>
<div id=”mypage”></div>
为什么要隔2秒钟调用一次判断呢?因为只要$(”#mypage”).scroll事件一被触发,就会影hght和top值,这个值可能总是满足cando函数的判断,也就是top值总是位于hght的三分之二。因此可能会多次加载造成服务器负担加重。而每加载一次后把hght和top值赋0,也是这个原因。
这段代码的效果就是只要元素mypage的滚动条位置位于滚动条总长的三分之二时,追加table.html的内容到元素mypage中去。当然这样运行是无休止地加载下去。在真正的AJAX运用中,table.html可以换成asp或php脚本,接收get或post参数来进行处理,然后返回有意义的数据。jquery的get方法可以设置get方式的参数数据,比如:
$.get(”test.php”, { name: “boho”, id: “1″ } );
相当于http://hostlocal/test.php?name=boho&id=1这种形式的http访问。然后通过get方法的回调函数来获取test.php输出的内容:
$.get(”test.php”, {name:”boho”,id:”1″},function(data){
alert(”Data Loaded: ” + data);
});
常见的rewrite规则大全
| 目标 | 重写设置 | 说明 |
| 规范化URL | RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R] | 将/~user重写为/u/user的形式 |
| RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R] | 将/u/user末尾漏掉的/补上 | |
| 规范化HostName | RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC] | 域名不合格 |
| RewriteCond %{HTTP_HOST} !^$ | 不空 | |
| RewriteCond %{SERVER_PORT} !^80$ | 不是80端口 | |
| RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R] | 重写 | |
| RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC] | ||
| RewriteCond %{HTTP_HOST} !^$ | ||
| RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R] | ||
| URL根目录转移 | RewriteEngine on | |
| RewriteRule ^/$ /e/www/ [R] | 从/移到/e/www/ | |
| 末尾目录补斜线 | RewriteEngine on | |
| (目录范围内) | RewriteBase /~quux/ | |
| RewriteRule ^foo$ foo/ [R] | /~quux/foo是一个目录,补/ | |
| RewriteEngine on | ||
| RewriteBase /~quux/ | ||
| RewriteCond %{REQUEST_FILENAME} -d | 如果请文件名是个目录 | |
| RewriteRule ^(.+[^/])$ $1/ [R] | URL末尾不是斜线时补上 | |
| Web集群 | RewriteEngine on | |
| RewriteMap user-to-host txt:/path/to/map.user-to-host | 用户-服务器映射 | |
| RewriteMap group-to-host txt:/path/to/map.group-to-host | 组-服务器映射 | |
| RewriteMap entity-to-host txt:/path/to/map.entity-to-host | 实体-服务器映射 | |
| RewriteRule ^/u/([^/]+)/?(.*) http://${user-to-host:$1|server0}/u/$1/$2 | 用户均衡 | |
| RewriteRule ^/g/([^/]+)/?(.*) http://${group-to-host:$1|server0}/g/$1/$2 | 组均衡 | |
| RewriteRule ^/e/([^/]+)/?(.*) http://${entity-to-host:$1|server0}/e/$1/$2 | 实体均衡 | |
| RewriteRule ^/([uge])/([^/]+)/?$ /$1/$2/.www/ | ||
| RewriteRule ^/([uge])/([^/]+)/([^.]+.+) /$1/$2/.www/$3\ | ||
| URL根目录搬迁 | RewriteEngine on | |
| RewriteRule ^/~(.+) http://newserver/~$1 [R,L] | 到其它服务器 | |
| 所用户名首字母分 | RewriteEngine on | |
| RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3 | 内一层括号为$2 | |
| NCSA imagemap移 | RewriteEngine on | |
| 植为mod_imap | RewriteRule ^/cgi-bin/imagemap(.*) $1 [PT] | |
| 多目录查找资源 | RewriteEngine on | |
| # first try to find it in custom/… | ||
| RewriteCond /your/docroot/dir1/%{REQUEST_FILENAME} -f | ||
| RewriteRule ^(.+) /your/docroot/dir1/$1 [L] | ||
| # second try to find it in pub/… | ||
| RewriteCond /your/docroot/dir2/%{REQUEST_FILENAME} -f | ||
| RewriteRule ^(.+) /your/docroot/dir2/$1 [L] | ||
| # else go on for other Alias or ScriptAlias directives, | ||
| RewriteRule ^(.+) – [PT] | ||
| 据URL设置环境变量 | RewriteEngine on | |
| RewriteRule ^(.*)/S=([^/]+)/(.*) $1/$3 [E=STATUS:$2] | ||
| 虚拟主机 | RewriteEngine on | |
| RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$ | 基于用户名 | |
| RewriteRule ^(.+) %{HTTP_HOST}$1 [C] | ||
| RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2 | ||
| 内外人有别 | RewriteEngine on | |
| RewriteCond %{REMOTE_HOST} !^.+\.ourdomain\.com$ | 基于远程主机 | |
| RewriteRule ^(/~.+) http://www.somewhere.com/$1 [R,L] | ||
| 错误重定向 | RewriteEngine on | |
| RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f | 不是regular文件 | |
| RewriteRule ^(.+) http://webserverB.dom/$1 | ||
| 程序处理特殊协议 | RewriteRule ^xredirect:(.+) /path/to/nph-xredirect.cgi/$1 \ | Xredirect协议 |
| [T=application/x-httpd-cgi,L] | ||
| 最近镜像下载 | RewriteEngine on | |
| RewriteMap multiplex txt:/path/to/map.cxan | 顶级域名与最近ftp服务器映射 | |
| RewriteRule ^/CxAN/(.*) %{REMOTE_HOST}::$1 [C] | ||
| RewriteRule ^.+\.([a-zA-Z]+)::(.*)$ ${multiplex:$1|ftp.default.dom}$2 [R,L] | 据顶级域名不同提供不同的FTP服务器 | |
| 基于时间重写 | RewriteEngine on | |
| RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700 | ||
| RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900 | ||
| RewriteRule ^foo\.html$ foo.day.html | 白天为早晚7点间 | |
| RewriteRule ^foo\.html$ foo.night.html | 其余为夜间 | |
| 向前兼容扩展名 | RewriteEngine on | |
| RewriteBase /~quux/ | ||
| # parse out basename, but remember the fact | ||
| RewriteRule ^(.*)\.html$ $1 [C,E=WasHTML:yes] | ||
| # rewrite to document.phtml if exists | ||
| RewriteCond %{REQUEST_FILENAME}.phtml -f | 如果存在$1.phtml则重写 | |
| RewriteRule ^(.*)$ $1.phtml [S=1] | ||
| # else reverse the previous basename cutout | ||
| RewriteCond %{ENV:WasHTML} ^yes$ | 如果不存在$1.phtml,则保持不变 | |
| RewriteRule ^(.*)$ $1.html | ||
| 文件改名(目录级) | RewriteEngine on | 内部重写 |
| RewriteBase /~quux/ | ||
| RewriteRule ^foo\.html$ bar.html | ||
| RewriteEngine on | 重定向由客户端再次提交 | |
| RewriteBase /~quux/ | ||
| RewriteRule ^foo\.html$ bar.html [R] | ||
| 据浏览器类型重写 | RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.* | |
| RewriteRule ^foo\.html$ foo.NS.html [L] | ||
| RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR] | ||
| RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].* | ||
| RewriteRule ^foo\.html$ foo.20.html [L] | ||
| RewriteRule ^foo\.html$ foo.32.html [L] | ||
| 动态镜像远程资源 | RewriteEngine on | |
| RewriteBase /~quux/ | ||
| RewriteRule ^hotsheet/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P] | 利用了代理模块 | |
| RewriteEngine on | ||
| RewriteBase /~quux/ | ||
| RewriteRule ^usa-news\.html$ http://www.quux-corp.com/news/index.html [P] | ||
| 反向动态镜像 | RewriteEngine on | |
| RewriteCond /mirror/of/remotesite/$1 -U | ||
| RewriteRule ^http://www\.remotesite\.com/(.*)$ /mirror/of/remotesite/$1 | ||
| 负载均衡 | RewriteEngine on | 利用代理实现round-robin效果 |
| RewriteMap lb prg:/path/to/lb.pl | ||
| RewriteRule ^/(.+)$ ${lb:$1} [P,L] | ||
| #!/path/to/perl | ||
| $| = 1; | ||
| $name = “www”; # the hostname base | ||
| $first = 1; # the first server (not 0 here, because 0 is myself) | ||
| $last = 5; # the last server in the round-robin | ||
| $domain = “foo.dom”; # the domainname | ||
| $cnt = 0; | ||
| while (<STDIN>) { | ||
| $cnt = (($cnt+1) % ($last+1-$first)); | ||
| $server = sprintf(”%s%d.%s”, $name, $cnt+$first, $domain); | ||
| print “http://$server/$_”; | ||
| } | ||
| ##EOF## | ||
| 静态页面变脚本 | RewriteEngine on | |
| RewriteBase /~quux/ | ||
| RewriteRule ^foo\.html$ foo.cgi [T=application/x-httpd-cgi] | ||
| 阻击机器人 | RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.* | |
| RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.[8-9]$ | ||
| RewriteRule ^/~quux/foo/arc/.+ – [F] | ||
| 阻止盗连你的图片 | RewriteCond %{HTTP_REFERER} !^$ | |
| RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC] | 自己的连接可不能被阻止 | |
| RewriteRule .*\.gif$ – [F] | ||
| RewriteCond %{HTTP_REFERER} !^$ | ||
| RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$ | ||
| RewriteRule ^inlined-in-foo\.gif$ – [F] | ||
| 拒绝某些主机访问 | RewriteEngine on | |
| RewriteMap hosts-deny txt:/path/to/hosts.deny | ||
| RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR] | ||
| RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND | ||
| RewriteRule ^/.* – [F] | ||
| 用户授权 | RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend1@client1.quux-corp\.com$ | |
| RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend2@client2.quux-corp\.com$ | ||
| RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend3@client3.quux-corp\.com$ | ||
| RewriteRule ^/~quux/only-for-friends/ – [F] | ||
| 外部重写程序模板 | RewriteEngine on | |
| RewriteMap quux-map prg:/path/to/map.quux.pl | ||
| RewriteRule ^/~quux/(.*)$ /~quux/${quux-map:$1} | ||
| #!/path/to/perl | ||
| $| = 1; | ||
| while (<>) { | ||
| s|^foo/|bar/|; | ||
| print $_; | ||
| } | ||
| 搜索引擎友好 | RewriteRule ^/products$ /content.php | |
| RewriteRule ^/products/([0-9]+)$ /content.php?id=$1 | ||
| RewriteRule ^/products/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$) /marso/content.php?id=$1&sort=$2&order=$3&start=$4 |
规划
EBOOK
ESHOP
EMALL
BLOG
FORUM
CMS
AIR – MESSAGE
VIDEO
IM
PASSPORT
SNS
ERP
CRM
OA
HR
SEA
STAT 统计
SURVEY
CHANGES
WIKI
EMAIL 邮件系统
WORKFLOW 工作流
SEARCH
AUG 体统集成框架
AUG 服务器集群管理
163的一女程序员征婚信息:(经典)
SELECT * FROM 男人们
WHERE (未婚=true or 离异=true) and 同性恋=false and 穷光蛋=false and 有房=true and 有车=true and 条件 in ('细心','温柔','体贴','贤惠','会做家务,会做饭,会逛街买东西,会浪漫,活泼,可爱,帅气,绅士,大度,气质,智慧','最好还能带孩子')
(0 row(s) affected)
个性化:从排序方式看用户心理
很多电子商务网站都提供对搜索结果、分类和二级分类结果再按照价格、用户平均打分、销售量、新品上架等方法进行排序。这种方法在提升可用性的同时,也可以收集并利用这些用户信息在主页、产品页、促销banner甚至营销邮件里提供有针对性的产品宣传。