通过$.browser来判断浏览器

2010-07-10 14:03:14.0

用Jquery来判断浏览器的类型,主要是使用$.browser这个工具类,使用方法:

$.browser.['浏览器关键字']

$(function() {
if($.browser.msie) {
alert("this is msie");
}
else if($.browser.safari)
{
alert("this is safari!");
}
else if($.browser.mozilla)
{
alert("this is mozilla!");
}
else if($.browser.opera) {
alert("this is opera");
}
else {
alert("i don't konw!");
}

javascript替换url中的参数

2010-07-09 11:47:22.0

有时候需要通过js来替换url中的参数,我以前发过一篇关于js解析url的文章,我们在这基础上加上替换url参数的功能

//分析url
function parseURL(url) {
var a = document.createElement('a');
a.href = url;
return {
source: url,
protocol: a.protocol.replace(':', ''),
host: a.hostname,
port: a.port,
query: a.search,
params: (function () {
var ret = {},
seg = a.search.replace(/^\?/, '').split('&'),
len = seg.length, i = 0, s;
for (; i < len; i++) {
if (!seg[i]) { continue; }
s = seg[i].split('=');
ret[s[0]] = s[1];
}
return ret;
})(),
file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1],
hash: a.hash.replace('#', ''),
path: a.pathname.replace(/^([^\/])/, '/$1'),
relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
segments: a.pathname.replace(/^\//, '').split('/')
};
}
//替换myUrl中的同名参数值
function replaceUrlParams(myUrl, newParams) {
/*
for (var x in myUrl.params) {
for (var y in newParams) {
if (x.toLowerCase() == y.toLowerCase()) {
myUrl.params[x] = newParams[y];
}
}
}
*/
for (var x in newParams) {
var hasInMyUrlParams = false;
for (var y in myUrl.params) {
if (x.toLowerCase() == y.toLowerCase()) {
myUrl.params[y] = newParams[x];
hasInMyUrlParams = true;
break;
}
}
//原来没有的参数则追加
if (!hasInMyUrlParams) {
myUrl.params[x] = newParams[x];
}
}
var _result = myUrl.protocol + "://" + myUrl.host + ":" + myUrl.port + myUrl.path + "?";
for (var p in myUrl.params) {
_result += (p + "=" + myUrl.params[p] + "&");
}
if (_result.substr(_result.length - 1) == "&") {
_result = _result.substr(0, _result.length - 1);
}
if (myUrl.hash != "") {
_result += "#" + myUrl.hash;
}
return _result;
}
//辅助输出
function w(str) {
document.write(str + "<br>");
}
var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top');
w("myUrl.file = " + myURL.file)     // = 'index.html'
w("myUrl.hash = " + myURL.hash)     // = 'top'
w("myUrl.host = " + myURL.host)     // = 'abc.com'
w("myUrl.query = " + myURL.query)    // = '?id=255&m=hello'
w("myUrl.params = " + myURL.params)   // = Object = { id: 255, m: hello }
w("myUrl.path = " + myURL.path)     // = '/dir/index.html'
w("myUrl.segments = " + myURL.segments) // = Array = ['dir', 'index.html']
w("myUrl.port = " + myURL.port)     // = '8080'
w("myUrl.protocol = " + myURL.protocol) // = 'http'
w("myUrl.source = " + myURL.source)   // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'
var _newUrl = replaceUrlParams(myURL, { id: 101, m: "World", page: 1,"page":2 });
w("<br>新url为:")
w(_newUrl); //http://abc.com:8080/dir/index.html?id=101&m=World&page=2#top

杨棋涵足球宝贝

2010-07-09 10:47:19.0

足球宝贝杨棋涵拍摄一组性感足球写真,上身阿根廷球衣,大秀性感酥胸,黑丝装扮的修长美腿,更加诱人惹火,

杨棋涵如此诱人惹火的足球宝贝写真确实令人眼前一亮

足球宝贝杨棋涵

杨棋涵足球宝贝

杨棋涵足球宝贝写真

兼容各浏览器的event以及srcElement,fromElement,toElement属性

2010-07-06 23:23:18.0

在 IE 中获取事件对象很容易,直接用 event,event.srcElement,event.fromElement,event.toElement 就行了。在 FireFox 中获得触发事件的元素可以用 event.target,但其他两个 fromElement 和 toElement ,属于IE的专属方法,如果要兼容IE的用法就要费些周折了

虽然IE经常我行我素,但无可否认,在这里,srcElement,fromElement,toElement.这三个方法很好用!

所以,为了保持一致的使用方式,也为了保持原有的使用习惯,我们来为非IE浏览器也加上这三个方法,我们通过继承prototype来实现这三个函数

jQuery几行代码实现DIV拖拽

2010-07-01 14:30:41.0

先直接上代码,以后再解释

$(function(){
var _move=false;//移动标记
var _x,_y;//鼠标离控件左上角的相对位置
$(".drag").mousedown(function(e){
_move=true;
_x=e.pageX-parseInt($(".drag").css("left"));
_y=e.pageY-parseInt($(".drag").css("top"));
$(".drag").fadeTo(20, 0.5);//点击后开始拖动并透明显示
});
$(document).mousemove(function(e){
if(_move){
var x=e.pageX-_x;//移动时根据鼠标位置计算控件左上角的绝对位置
var y=e.pageY-_y;
$(".drag").css({top:y,left:x});//控件新位置
}
}).mouseup(function(){
_move=false;
$(".drag").fadeTo("fast", 1);//松开鼠标后停止移动并恢复成不透明
});
});

jquery鼠标双击事件dblclick()

2010-06-28 14:02:58.0

dblclick(fn)



jquery为某个元素的dblclick事件中绑定一个处理函数。

鼠标双击某个元素的时候就会触发dblclick事件

$("p").dblclick( function () {
alert("Hello World!");
});

你可以函数中返回false来防止触发浏览器的默认行为.

jquery 键盘事件

2010-06-28 13:27:00.0

jquery处理键盘事件,比如小说网站中常见的按左右键来实现上一篇文章和下一篇文章,按ctrl+回车实现表单提交,google reader和有道阅读中的全快捷键操作...

本文讲述jQuery处理按键的原理和方法

jQuery处理键盘事件有三个函数,根据事件发生的顺序分别是:

keydown();
keyup();
keypress();

 

对Array,String,Number,Function这四个原生对象进行原型扩展

2010-06-25 00:12:05.0

在网上看到的非常精致的代码!

对Array,String,Number,Function这四个原生对象进行原型扩展。虽然有人反对这样做,但于我看来,这对生产力带来极大的提升。 加之str.trim()总比dom.lang.trim(str)来得直观方便 吧

对 Array、String、Number等对象的原型进行扩展,绝对利大于弊。

但是坚决禁止扩展Object对象的原型的。

Object的原型位于原型链 的最顶层,如果扩展了它的原型,影响范围带广了,在一些情况下会带来负面影响,比如:

Java中伪造referer来获取数据

2010-06-23 14:31:47.0

很多网站的防采集的办法,就是判断浏览器来源referer和cookie以及userAgent,道高一尺魔高一丈.

在Java中获取一个网站的HTML内容可以通过HttpURLConnection来获取.我们在HttpURLConnection中可以设置referer来伪造referer,轻松绕过这类防采集的网站

HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon;)");
conn.setRequestProperty("Accept-Encoding", "gzip");
conn.setRequestProperty("referer", "http://www.popo4j.com");
conn.setRequestProperty("cookie", "http://www.popo4j.com");
InputStream inputStream = conn.getInputStream();
//保存inputstream中的东西就OK了

js添加事件attachEvent和addEventListener的用法

2010-06-23 13:36:34.0

一般我们在js中添加事件,是这样子的

obj.onclick=method

这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢?

obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;

如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角改登场了,在IE中我们可以使用attachEvent方法