javascript判断页面名称的2种方法、JS歌词编辑器

来源:互联网 发布:ajax与servlet交互JSON 编辑:程序博客网 时间:2024/05/16 01:42

javascript判断页面名称的2种方法:

1.var fname = window.location.href.match(/.+//([^?]*)/)[1];

返回全名,如XXX.html

2.window.location.href.indexOf("文件名")!=-1

文件名可为menu_ , menu_1 ,menu_1.

var farr = new Array("index","menu_2","menu_3","menu_4","menu_5");
var flasharr = new Array("3","5","7","9","11");
//var fname = window.location.href.match(/.+//([^?]*)/)[1];
var p = 3;

for (var i =0;i<5;i++){
 if (window.location.href.indexOf(farr[i])!=-1) {
  p = flasharr[i];
  break;
 }
}

JS歌词编辑器:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>歌词编辑器</title>
<style type="text/css">
<!--
body,td,th {
 font-size: 12px;
}
-->
</style></head>

<body>
<p>歌词编辑器</p>
<p>     第一步:选择要播放的歌曲并播放</p>
<p>    第二步:填写全部的歌词。</p>
<p>    第三步:添加时间标签。</p>
<p> 添加时间标记目的</p>
<p>    1、添加时间标签(插入到光标处)    </p>
<p>    2、转到下一行(光标转到下一个回车地方,当最后一个位置不为回车符时,直接将光标移到文本末尾) </p>
<p>删除时间标记算法:(删除光标所在行的时间标记)</p>
<p>删除所有时间标记算法:(替换所有的时间标记为空)</p>
<p>1、匹配时间标记</p>
<p>2、替换</p>
<p>播放器</p>
    
<object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" id="player" width="480" height="240">
<param name="volume" value="100">
<param name="enablecontextmenu" value="0">
<param name="enableerrordialogs" value="0">
</object>
<p>    选择歌曲:
  <input type="file" name="file" onChange="PlayFile(this.value)">
</p>
<p>歌曲信息</p>
<p>     歌曲名:<span id="musicName" style="height:20">播放后显示</span></p>
<p>添加歌词(建议:第一步填写歌词文本;第二步添加时间标签)</p>
<p>     演唱者:
  <input name="singer" type="text" id="singer">
</p>
<p>     标 题:
  <input name="title" type="text" id="title">
</p>
<p>     编辑人:
  <input name="pepole" type="text" id="pepole">
</p>
<p>     专 辑:
  <input name="sing" type="text" id="sing">
</p>
<p>      内 容: </p>
<p>
        
      <textarea name="text" cols="50" rows="10" id="lrc"  onChange="storeCaret(this)" onKeyUp="storeCaret(this)" onClick="storeCaret(this)"></textarea>
</p>
  <p>
        
      <input id="a" type="button" name="Submit" value="添加时间标签" onClick="insertAtCaret(document.all('lrc'), 'hlayy');">
    <input  id="c" type="button" name="Submit2" value="删除时间标签" onClick="delTimeLable()">
    <input type="button" name="Submit3" value="删除所有时间标签" id="b" onClick="delAllTimeLable()">
</p>
  <p>生成歌词  </p>
  <p>        
    <textarea name="last" cols="50" rows="10" id="lastLrc" readonly="true"></textarea>
</p>
  <p>    
    <input type="button" name="Submit4" value="点击此处生成歌词" onClick="lastLrc();">
    <input type="button" name="Submit5" value="全选" onClick="document.all('lastLrc').select();">
  </p>
  <p>快捷键:(方便添加歌词)</p>
  <p>    1、播放歌曲</p>
  <p>    2、停止播放</p>
  <p>    3、暂停播放</p>
<p>| 版权:HLAYY | 作者:HLAYY | 联系QQ:42263646
  <script language="javascript">
  function lastLrc()
  {
  /*
  [ti:一直很安静]
 [ar:阿桑]
 [al:仙剑奇侠传电视原声带]
 [by:hlayy]
 */
   
 document.all("lastLrc").value="[ti:"+document.all("title").value+"]/r"+
         "[ar:"+document.all('singer').value+"]/r"+
          "[al:"+document.all('sing').value+"]/r"+
          "[by:"+document.all('pepole').value+"]/r"+
          document.all('lrc').value;
        
 
 
  }
 
  function storeCaret(textEl) {
   
    if (textEl.createTextRange)
 
    textEl.caretPos = document.selection.createRange().duplicate(); //创建一个文本区域的副本


 
 var slct = document.selection;
    var rng = slct.createRange();
 
    textEl.select();
    rng.setEndPoint("StartToStart", slct.createRange());
   
 
  psn = rng.text.length; //psn:光标的位置
 
 
    rng.collapse(false);
    rng.select();

 
  }

function findNext(value)
{
 //选择范围:以光标所在处为开始。以文本尾为结束
 //在范围内搜索指定的符号
 //i=光标开始处
 //for(i;i<文本长度;i++)
  //if(value==charAt(i))
  //break;
  //核心问题:当为回车时临近的两个坐标会显示同一值,所以,判断光标所在位置是否为‘回车’符。
  //如果是,则在判断时把光标的位置向右移一,即:加一。
  var textLength=document.all("lrc").value;
  var i=psn;//光标的位置
  var j=0;//在光标前出现回车的次数
  var z=0;//临时变量


    
  
if(value==textLength.charAt(i))
 i=i+1;
  // document.all("b").value=textLength.charAt(i);
 //else
 // document.all("b").value=textLength.charAt(i);
 
    for(z;z<i;z++)
  {
  if(value==textLength.charAt(z))
    ++j;

   
  
  }

 
  for(i;i<textLength.length;i++)
  {
   if(value==textLength.charAt(i))
   {

   movePoint(i-j+1);
   //document.all("a").value="zhixing";
    break;
   
    }
  
  
  }
  //document.all("c").value=textLength.length;
  //document.all("b").value=i;
  if(i==textLength.length&&value!=textLength.charAt(i))
  movePoint(textLength.length);
  //document.write('yes');
 
 


}


function PlayFile(url)
{
  player.url = url;//歌曲地址("player"为播放器ID)
  player.controls.play();//播放歌曲

  musicName.innerText=player.currentMedia.getItemInfo("Title");//显示歌曲信息(歌曲名)
}

function movePoint(value)
{
var pn = parseInt(value); //pn:移动到的位置

if(isNaN(pn))
return;

var rng = lrc.createTextRange(); //lrc:文本区域的ID;

rng.moveStart("character",pn);

rng.collapse(true);

rng.select();

}


  function insertAtCaret (textEl, text) {
 
    if (textEl.createTextRange && textEl.caretPos&&player.controls.currentPositionString!="")//当播放进度不为空,即:开始播放后
  {
    var caretPos = textEl.caretPos;
 caretPos.text="["+player.controls.currentPositionString+".00]";
 
  findNext("/r");
  } else
   
 alert('请先播放歌曲或者填写歌词文本!');
    //textEl.value = "";

 
  }
 
  function delAllTimeLable()
  {
  /*算法:
 ?、分离换行符
 ?、找到时间标记并删除
 
 
  */
      var originLrc=document.all("lrc").value;
    var last_Lrc;
    last_Lrc=originLrc.split("/n");
    var z=0;
    //document.all("a").value=originLrc.length;
    //document.all("c").value=last_Lrc.length;
    //document.all("b").value=psn;
 
   
    for(z;z<last_Lrc.length;z++)
    {
    //last_Lrc[z]=last_Lrc[z].substring((last_Lrc[z].lastIndexOf("]"))+1,last_Lrc[z].length);
   var start=last_Lrc[z].lastIndexOf("]")+1;
   var end=last_Lrc[z].length;
   last_Lrc[z]=last_Lrc[z].substring(start,end);
    }
   
   
   
    document.all("lrc").value="";
   
    var t=0;
    for(t;t<last_Lrc.length;t++)
    {
    if(t!=last_Lrc.length-1)
    document.all("lrc").value+=last_Lrc[t]+"/n";
    else
        document.all("lrc").value+=last_Lrc[t];
   
    //document.all("b").value=document.all("lrc").value.length;
    }

  }
 
  function delTimeLable()
  {
  /*算法:
  找到上一个时间标记并且删除
 
 ?、分离每行并存入数组;
 
 ?、判断光标在哪个数组里;
    取得光标位置
    光标前有多少个回车符可以得到在第几个数组
 
 ?、判断前面有或者没有时间标记
    如果有删除
    如果没有则保持不变
 
 
 
  */
 
 
    var caretPoss = (document.all("lrc")).caretPos;
 caretPoss.text=" ";
 
 
    var textLength=document.all("lrc").value;
  var i=psn;//光标的位置
  var j=0;//在光标前出现回车的次数
  var z=0;//临时变量
  
  
    var originLrc=document.all("lrc").value;
    var last_Lrc;
    last_Lrc=originLrc.split("/n");


 
 if('/r'==textLength.charAt(i))
 i=i+1;
 
    for(z;z<i;z++)
  {
  if('/r'==textLength.charAt(z))
    ++j;

   
  
  }
  
        var start=last_Lrc[j].lastIndexOf("]");
     if(start!=-1)
  last_Lrc[j]=last_Lrc[j].substring(start+1,last_Lrc[j].length);
  
  
  //去掉空格
        var start_1=last_Lrc[j].lastIndexOf(" ");
  if(start_1!=-1)
  {
  if(start_1==0)//如果在开头
  last_Lrc[j]=last_Lrc[j].substring(start_1+1,last_Lrc[j].length);
  else if(start_1==last_Lrc[j].length-1)//如果在结尾
  last_Lrc[j]=last_Lrc[j].substring(0,last_Lrc[j].length-1);
  else//如果在中间
     last_Lrc[j]=last_Lrc[j].substring(0,start_1)+last_Lrc[j].substring(start_1+1,last_Lrc[j].length);
  }
  
  
  
  
      document.all("lrc").value="";//清除文本区域内容
      //输出最后的内容
      var t=0;
    for(t;t<last_Lrc.length;t++)
    {
    if(t!=last_Lrc.length-1)
    document.all("lrc").value+=last_Lrc[t]+"/n";
    else
        document.all("lrc").value+=last_Lrc[t];

    }

 

 
 
  }
  //文本框按回车键产生的字符为‘/r/n’;

  </script> 
  | 时间:
 ?/2/27 | 版本:1.00 |</p>
<p></p>
</body>
</html>