当前位置: 首页 > web开发 > 脚本语言 > 正文

JavaScript字符串属性indexOf()的妙用

时间:2008-05-09

我想做过网页的朋友对这个属性函数都不会太陌生吧——我们可以从很多JavaScript参考书上找到它的用法: theString.indexOf(subString,[n])。它在指定字符串对象中寻找传送的子字符串,如果指定参数n,它可以从指定的位置开始向前搜索(从左往右)。如果找到子字符串,这个方法返回子字符串在字符串中的位置;如果没有找到相应的字符串,它返回-1。

利用它的这个属性,我们可以叫它干很多事,只要你指挥得当。

一.判断OS

一般情况下,判断出你的访客所用的操作系统会让他们以为你在完花样而已,但并不总是这样。虽然http协议是跨平台的,但你编写的html页面最终的显示效果却往往与客户端所用的操作系统有关。比如MSOS系列(MS-DOS,Windows 9X/NT等)对文本的"另起一行"的定义是"回车加换行",但Mac只要一个"回车"就够了,而Unix/Linux仅仅使用"换行"。这样你在某页面中要输出一些要分行的东东可能就会因此产生"兼容"问题……没关系啦,看看下面的例子。

第一步. 在页面的某一位置插入以下脚本:

<script language="JavaScript"><!--
var newline=''; //定义"另起一行"的全局变量
var browserVer=navigator.appVersion;
if(browserVer.indexOf('Win')!=-1){ //如果当前浏览器的版本是Windows版的
newline='
';}
else{
if(browserVer.indexOf('Mac')!=-1){ //如果当前浏览器的版本是Mac版的
newline='
';}
else{ //那因该就是Linux版的了
newline='
';}
}
-->
</script>

第二步.在页面主体(<body>……</body>)中使用它:

<script language="JavaScript"><!--
var win=self.window;
win.alert('第一行'+newline+'第二行'+newline+'第三行'); //可以将newline作为一个变量在任意位置引用
-->
</script>

二.判断浏览器

1998年的浏览器大战似乎已经烟消云散,但由此带来的浏览器兼容问题一直令广大网页编写人员大为疼。关于这个问题的解决方法有许多,这不在本文的讨论范围,但我想最彻底最有效的措施恐怕是为每种主流浏览器分别编写一个页面版本,这样就近乎完美了。试试下面的代码,它将帮你把你的访客带入与客户端浏览器相对应的页面:

<!-- 把这段代码放在页面的前部,最好放在<head>……</head>之间 -->
<script language="JavaScript"><!--
var browser=navigator.appName;
var version=navigator.appVersion;
var ver_number=parseFloat(version.substring(0,version.indexOf('(')));
//如果客户端浏览器是ie并且版本高于4.0
if(browser.indexOf('Microsoft Internet Explorer')!=-1&&ver_number>=4.0) top.location='/ie4/index.html' //假设你为4.0及更高版本的ie准备的页面是/ie4/index.html
//如果客户端浏览器是Netscape并且版本高于4.0
else if(browser.indexOf('Netscape')!=-1&&ver_number>=4.0) top.location='/nc4/index.html' //假设你为Netscape 4.X准备的页面是/nc4/index.html
else top.location='/normal/index.html' //假设你为其他浏览器及低版本的NC、IE准备的页面是/normal/index.html
-->
</script>