JavaScript常用技巧

 1. 快速分辨FireFox和IE

if(typeof document.oncontextmenu == "object"){
 if(document.all){

     // do somthing
     }
}

第一行可以作为快速分辨浏览器使用。如果是火狐,支持document.oncontextmenu。

2. 拼接大字符串

使用数组的join方法拼接字符串可以大大降低JS拼接大容量字符串的效率,实现如下:

function xntest(){
var d1=new Date();
var str="";
for(var i=0;i<10000;i++){
    str+="stext";
}
var d2=new Date();
document.write("字符串拼接方式耗时:"+(d2.getTime()- d1.getTime())+"毫秒;");

d1=new Date();
var sb=new StringBuilder();
for(var i=0;i<10000;i++){
    sb.append("stext");
}
var result=sb.toString();
d2=new Date();
document.write("数组方式耗时:"+(d2.getTime()- d1.getTime())+"毫秒;");
}

 /利用Array实现的字符串拼接函数,为方便c#开发者特意取名StringBuilde以便于理解

function StringBuilder(){
    this._strings_=new Array;
}
StringBuilder.prototype.append=function(str){
    this._strings_.push(str);
};
StringBuilder.prototype.toString=function(){
    return this._strings_.join("");
};

3. 打开新窗口的方式

1.在原来的窗体中直接跳转用
window.location.href="url";
2、在新窗体中打开页面用:
window.open('url');
3、返回上一页
window.history.back(-1);返回上一页

二、一些用法
按钮式:
<INPUT name="pclog" type="button" value="/GO" onClick="location.href='连接地址'">
链接式:<a href="javascript:history.go(-1)">返回上一页</a>
<a href="<%=Request.ServerVariables("HTTP_REFERER")%>">返回上一页</a>
直接跳转式:
<script>window.location.href='连接地址';</script>
开新窗口:
<a href="/javascript:" onClick="window.open('连接地址','','height=500,width=611,scrollbars=yes,status =yes')">123</a>

 

<SCRIPT> 
<!-- 
window.open 

('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, 

resizable=no,location=no, status=no') 
//写成一行 
--> 
</SCRIPT>

三、终极应用
【9、终极应用--弹出的窗口之Cookie控制】 
  回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(有解决的办法吗?Yes! ;-) Follow me. 我们使用cookie来控制一下就可以了。首先,将如下代码加入主页面HTML的<HEAD>区: 
<script> 
function openwin() 
{window.open("page.html","","width=200,height=200")} 
function get_cookie(Name) 
{var search = Name + "=" 
var returnvalue = ""; 
if (document.cookie.length > 0) { 
offset = document.cookie.indexOf(search) 
if (offset != -1) { 
offset += search.length 
end = document.cookie.indexOf(";", offset); 
if (end == -1) 
end = document.cookie.length; 
returnvalue=unescape(document.cookie.substring(offset,end)) 


return returnvalue; 

function loadpopup(){ 
if (get_cookie('popped')=='){ 
openwin() 
document.cookie="popped=yes" 


</script>
  然后,用<body οnlοad="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!

4. IE4下动态重绘Bug 

 Netscape 4.x不能在浏览器拖拽时不能动态的重绘网页。
必须使用window.location.reload方强制进行刷新。

5. 不同浏览器取不同的键盘

if (evt) {
var thisKey = evt.which;
}
else {
var thisKey = window.event.keyCode;
}

FireFox和Safari使用evt.which取得键值,IE使用window.event.keycode获得键值。

6.检测不同浏览器的脚本

方法一:
直接使用document.getElementById方法

if(document.getElementById)
{
 //todo
}
else
{
 alert();
}

方法二:
使用navigator对象:
var browser = navigator.appName;
var version = navigator.appVersion;
var b_version = parseFloat(version);
--------------------------------------------------
if(navigator.userAgent.indexOf("MSIE") != -1)
{
 document.write("IE");
}
else if(navigator.userAgent.indexOf("Firefox") != -1){
 document.write("Firefox");
}

方法三: IE不同版本鉴别:
var isIE = !!window.ActiveXObject;
var isIE6 = isIE && !window.XMLHttpRequest;
var isIE8 = isIE && !!document.doucumentMode;
var isIE7 = isIE&&!isIE6&&!isIE8;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值