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;