去掉textarea滚动条及边框

2011年10月18日 没有评论

1、IE6下textarea的右边的滚动条总是可见的,如果要去掉使用

overflow:auto

2、如果不想要textarea本身的边框,在FF,chrome下设置css的border为none即可,但ie6,7下却不生效,原来ie6,7下要如下设置才行

border: 0 none

注:这样设置在FF,chrome下也能正常工作。

javascript中几种连接字符串效率的测试例子

2011年9月27日 没有评论

在javascript对应字符串的连接有三种方法,用的最多可能是”+=“,其次是concat函数,其实还可以借助array的join方法来完成字符串的连接。分别在浏览器IE6,firefox3.0,safari,chorme中测试,发现通过join的方式最快,其次是 +=,最慢的是concat方式。啥也别说了,直接上代码。

重要提示,IE6中可能会把浏览器卡死,如果要测试,请把initData中的100000修改一下,似乎1000就可以看到效果了!效果测试请点击这 里阅读全文…

内存cookie与持久cookie

2011年9月5日 没有评论

如果不设置cookie过期时间,则表示这个cookie的生命期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览器会话期的 cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。

存储在硬盘上的 cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。对于IE,在一个打开的窗口上按Ctrl-N(或者从文件菜单)打开的窗口可以与原窗口共享,而使用其他方式新开的IE进程则不能共享已经打开的窗口的内存cookie;对于 Mozilla Firefox、chrome、IE8,所有的进程和标签页都可以共享同样的cookie。一般来说是用javascript的window.open打开的窗口会与原窗口共享内存cookie。

保持 checkbox 选中状态不被修改

2011年9月5日 没有评论

对于文本输入框(input type为text),可以用readonly属性来控制让它的内容不能被修改,然而checkbox则没有这个属性,此时可以通过javascript 来达到这个目的,只需要在checkbox 的onclick事件方法上加上 return false; 这样的javascript代码即可,这样就不能修改checkbox的状态了。如

<input type=”checkbox” onclick=”return false;”>
分类: web前端 标签: ,

javascript的repacle方法的用法

2011年9月1日 没有评论

replace是String对象上的一个方法,可以实现把字符串中某些指定的子字符串替换成其他字符串。用法为 “字符串.replace(parm1,parm2)”。其中parm1的老字符串,可以使普通字符串,也可以是一个正则表达式;parm2退换的结果,可以是一个字符串,更重要的是也可以是一个javascript的方法,作为回调函数。下面用几个小例子来分别说明一下。

alert(‘abcabd’.replace(‘ab’,’12′));

这里alert的结果就是12cabd,注意到它只替换到第一次出现的,后面不做替换。如果把子串全部替换,只能用正则表达式的方法来操作。

alert(‘abcabdAbe’.replace(/ab/g,’12′));

这样得到的结果为12c12dAbe,g 表示进行全局替换,同时也可以用 i 来忽略大小写,注意正则表达式不能用引号引起来。

var i = 0;
alert(‘abAabBabC’.replace(/ab/g, function(m) {
i++;
return m + ‘-’ + i + ‘-’;
}));

这里的结果是ab-1-Aab-2-Bab-3-C,当匹配到子字符串时,调用回调方法,并把匹配到的值作为参数传入。另外一个例子,把字符串中小于30的数替换成星号

alert(’10 33 21 18 52′.replace(/\d+/g, function(match) {
return parseInt(match) < 30 ? '*' : match;
}));

IE下css的hack代码

2011年8月31日 没有评论

利用hack技术可以为不同的浏览器设置不同的值。例如代码:

.test {
    margin-top:10px;	/*所有浏览器*/
    margin-top:5px\9;	/*所有IE浏览器*/
    *margin-top:0px;	/*IE6、7*/
    _margin-top:-10px;	/*IE6*/
}

css的顺序很重要,后面的会覆盖前面设置。。所以以上代码在Firefox下margin-top的值为10px,IE8下可以识别第一条和第二条,但第二条会覆盖第一条,故就变为5px,同理IE7下则为0px,IE6下为-10px。

综上所述,符号[\9]所有IE浏览器可识别、[*]IE6、7 能识别、[_]只有IE6下能识别。

分类: web前端 标签: ,

javascript读写cookie实例

2011年8月29日 没有评论

Cookie是网站存放在客户端的一小段数据。一般的,网站为了提升用户体验,在客户的客户端中保存用户的历史信息,以备用户再次访问时网站能提供 更方便,更有针对性的服务。比如,网站可以记住你的登录状态,只要登录一次下次访问就不用在登录;购物网能记住你浏览过的产品,保留你购物车中的物品。这 些都有Cookie的功劳。

cookie的存取操作不止局限于服务器段,客户端通过javascript也一样可以进行cookie的存取。利用document.cookie对象就能操作了。下面分别给出读写cookie的方法示例代码。

function getCookie(name){
    var arr = document.cookie.match(new RegExp("(^| )" 
                                   + name + "=([^;]*)(;|$)"));
    if(arr != null) return (arr[2]);
    return null;
}

document.cookie就是以key/value的形式返回所有对于当前页面有权限读取的cookie字符串,然后通过正则表达式查询参数指定cookie名的cookie值。

function setCookie (name, value, expire) {
    var expireStr = '';

    if (expire || expire > 0) {
        var exp  = new Date();
        exp.setTime(exp.getTime() + expire * 1000);

        expireStr = ';expires=' + exp.toGMTString();
    }

    document.cookie = name + '=' + value +  
                      '; path=/;' + expireStr + 
                      'domain=.youdomain.com';
}

注意setCookie中的第三个参数,是指定cookie的过期时间,单位为秒,如果不指定或者值不大于0,那么写入的cookie类型为会话cookie,即浏览器关闭后,cookie就失效,反正就是硬盘cookie,会记录在客户端的电脑上。

解决第三方cookie的存取问题

2011年8月29日 没有评论

何为第三方cookie呢,简单来说,就是用户当前浏览的页面上有通过IFRAME、IMG或script等标签嵌入另外一个域名的链接地址,该链接设置的cookie就称为第三方cookie,当前页面设置的cookie为第一方cookie。由于隐私保护的问题,现在主流的浏览器默认是不允许写入第三方cookie的,但是只要在相应的Header信息设置了P3P,第三方cookie还是能正常的写入的。

例如在php中通过下面的代码就能正确的写入一个名为thirdcookie的cookie。

header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);

header(“Set-Cookie: “thirdcookie=cookievalue;domain=.youdomian.com;path=/;expires=” . gmstrftime(“%A, %d-%b-%Y %H:%M:%S GMT”, time() + (86400 * 365 * 3)));

需要注意的是即使设置了P3P,只有通过服务器端的操作才能写入cookie,客户端方用javascript的方法也依然无法写入cookie,而且在IE6下javascript也无法读取到第三方cookie。关于javascript读写cookie的详细信息,请参阅 javascript读写cookie实例

IE6 加载动态js不执行的问题

2011年8月25日 没有评论

用户的信息存放在主站上,一个子站也提供用户登录的接口,登陆采用ajax不刷新页面的方式,由于安全原因,ajax不允许跨域执行,所以单纯的ajax是不能直接运行的。但是动态创建script的方式不存在跨域的问题,大致的操作是通过document.createElement创建一个script对象,同时script的src指向主站提供验证用户信息的url,url中参数包括用户输入的用户名和密码,把这个script对象添加到当前页面上。主站的接口根据用户名密码来验证用户是否合法,响应的内容是调用一个js方法。

该方式在IE6下有时不能正常工作,其他主流浏览器都没有问题。IE6的具体症状是第一次能正常工作,如果用户输入用户名和密码不匹配,第一次能提示用户重新输入,但是修改后重新提交了就没有反应,必须要强制刷新才会正常,通过httpwatcher查看,请求是发送,也有响应,就是没有调用成功页面上的js方法。经常反复折腾,终于找到问题的根源,主站接口url是php,所以响应的header中content-type不是text/html,强制设置header中content-type设置为 Content-Type: text/javascript 或者Content-Type: application/x-javascript后,IE6就正常工作了。另外如果服务器启用gzip压缩,可能也会造成IE6不能正常工作,在apache中可以针对某个特定的uri设置成不压缩,如:SetEnvIfNoCase Request_URI /user/vlogin/.* no-gzip dont-vary。

flash与javascript的相互通信的例子

2011年8月24日 没有评论

当前的Web应用中少不了flash,有时候当前页面需要跟flash交互,交互的桥梁是通过javasript来实现,javascript能够调用到flash中定义的方法,同样的flash中也可以调用到javacript的方法。

点这里 查看演示例子 ||  点这里 下载完整代码

flash可以用 ExternalInterface.call(“swfCall” [,arg1[,arg2]]) 的方式来调用javacript中定义的swfCall方法,参数为可选;但是javascript中调用flash的方法,需要flash指定那些方法能调用,例如在flash的代码

ExternalInterface。addCallback("setFlashVal", flashFunction);

function flashFunction(msg) {
	//do something
}

function flashFunction_1(msg) {
	//do something
}

javascript中就可以调用到flashFunction,但调用的方法名是setFlashVal,由于flashFunction_1没有导出,所以页面javascript无法访问到。IE跟Firefox、chrome获取flash对象的方式不同,IE是用window对象,Firefox等则是用document对象。具体参看下面代码:

function getSwfObject(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName]
	}else{
		return document[movieName]
	}
}

getSwfObject('swfId').setFlashVal('text');

其中movieName是flash的ID,即<object>标签中定义的ID、或者是embed标签的name属性值,最好这两个值保持一致,否则可能在不同的平台下无法正常工作。

分类: web前端 标签: , , , ,

无觅相关文章插件,快速提升流量