JavaScript中indexOf方法的妙用

Author: 周辉腾 Date: 2000年 第15期

  JavaScript中indexOf方法的语法:theString.indexOf(subString,[n])。它在指定字符串对象中寻找传送的子字符串,如果指定参数n,它可以从指定的位置开始向前搜索(从左往右)。如果找到子字符串,返回子字符串在字符串中的位置;如果没有找到相应的字符串,返回-1。
  利用它的这个属性,我们可以叫它干很多事,只要你指挥得当。
#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=′\r\n′;}
   else{
    if(browserVer.indexOf(′Mac′)!=-1){//如果当前浏览器的版本是Mac版的
     newline=′\r′;}
    else{//那应该就是Linux版的了
     newline=′\n′;}
  }
  -->
  </script>
  第二步:在页面主体(<body>……</body>)中使用:
  <script language=″JavaScript″><!--
  var win=self.window;
  win.alert(′第一行′+newline+′第二行′+newline+′第三行′);//可以将newline作为一个变量在任意位置引用
  -->
  </script>
#1  二、判断浏览器
  浏览器兼容问题一直困扰着广大网页编写人员,关于这个问题的解决方法有许多,但我想最彻底、最有效的措施恐怕是为每种主流浏览器分别编写一个页面版本,这样就近乎完美了。试试下面的代码,它将帮你把你的访客带入与客户端浏览器相对应的页面:
  <!-- 把这段代码放在页面的前部,最好放在<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>
#1  三、判断页面的位置
  现在网上“拷贝+粘贴”大法极为盛行,我们也没有办法让自己的站点不被COPY,但有些人实在太懒了,他们连COPY的时间都舍不得花,直接就把你的页面FRAME到他们的页面中去了……当然你也可以用判断框架名称的方法来预防这个问题,但是如果你的这个页面要被很多框架页面使用,这样做是不是比较笨?看看下面简单而又短小代码啦,相信会有所用处的……
  <!-- 把这段代码插在<head>……</head>之间 -->
  <script language=″JavaScript″><!--
   var hostname=′ctsight.topcool.net′;  //定义你的站点的主机名
   var yesno=top.location.hostname.indexOf(′hostname′); //判断当前顶级窗口的URL的主机名部分
   if(yesno==-1){         //如果当前顶级窗口的URL的主机名部分不是你的站点
    self.alert(′对不起,您不能在′+top.location+′页中引用′+self.document.title+′页!′);
    top.location=′http://ctsight.topcool.net/documents/about.html′; //转到你站点上关于″盗版″的警示说明页……
  }
  -->
  </script>