⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.js

📁 tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛
💻 JS
字号:
/**
 * JS临时测试文件
 * 
 */
var tbuy_embed;
var tbuy_player;        // 播放器
var tbuy_out1;          // 当前歌词的输出区
var tbuy_out1_width;    // out1的可用最大宽度
var tbuy_out2;          // 所有歌词的输出区
var tbuy_out2_height;   // out2的初始高度
var tbuy_curTime;       // 播放器的当前时间
var request;            // XMLHttp请求
var lrcArr = new Array();   // 歌词文件的数组形式,格式为[00:00]我对你爱不完
var timeArr = new Array();  // 时间数组
var nowStr;                 // 正在播放的歌词
// go...参数clientId组件ID, lrcAdd 歌词的地址
function onloadStart(clientId, lrcAdd) {
    tbuy_embed = getObj(clientId);
    tbuy_player = getObj(clientId + ":player");
    tbuy_out1 = getObj(clientId + ":out1");
    tbuy_out2 = getObj(clientId + ":out2");
    tbuy_curTime = getObj(clientId + ":curTime");
    //tbuy_out1.style.background = "#FFFFFF";
    displayLrc(lrcAdd);
    tracePlayer();  // 跟踪播放器
}
// 获取页面组件
function getObj(objName){
    try {
        if (document.getElementById) {
            return eval('document.getElementById("'+objName+'")');
        } else {
            return eval('document.all.'+objName);
        }
    }
    catch(e){}
}
// 跟踪播放器
function tracePlayer() {
    var pos = tbuy_player.controls.currentPositionString;
    tbuy_curTime.innerHTML = "[" + pos + "]";
    if ((word = lrcArr[pos]) != null) {
        tbuy_out1.innerHTML = word;
        tbuy_out1.style.width = 20;
        // 将播放完的歌词清除颜色并
        // 重新设置正在播放的歌词颜色
        if (nowStr != null) {
            nowStr.style.fontSize = "";
            nowStr.style.color = "";
        }
        nowStr = getObj(pos);
        nowStr.style.fontSize = "17px";
        nowStr.style.color = "red";
        // 这一步只是让歌词出现得动感一点 :)
        displayCurLine();
    }
    setTimeout("tracePlayer()", 1000);
    tbuy_out1_width = tbuy_embed.offsetWidth 
        - tbuy_player.offsetWidth 
        - tbuy_curTime.offsetWidth - 16;
}
// 让当前行歌词看起来像逐字出现
function displayCurLine() {
    if (tbuy_out1.offsetWidth < tbuy_out1_width) {
        tbuy_out1.style.width = tbuy_out1.offsetWidth + 20 + "px";
        setTimeout("displayCurLine()", 30);
    }
}
/************************************************************
 * 显示所有歌词,让tbuy_out2显示出来
 */
var widthUp = 100;
function showAllLyrics() {
    // 如果没有可用歌词文件,则不预响应
    if (timeArr.length <= 0) {
        return;
    }
    if (tbuy_out2.style.display == "none") {
        tbuy_out2.style.width = 0;
        tbuy_out2.style.height = 0;
        tbuy_out2.style.display = "";
        displayOut2();
    } else {
        displayOut2Hidden();
    }
}
// 显示
function displayOut2() {
    var wOk = 0;
    var hOk = 0;
    if (tbuy_out2.offsetWidth < tbuy_embed.offsetWidth) {
        tbuy_out2.style.width = tbuy_out2.offsetWidth + widthUp + "px";
    } else {
        wOk = 1;
    }
    if (tbuy_out2.offsetHeight < tbuy_out2_height) {
        tbuy_out2.style.height = tbuy_out2.offsetHeight 
            + tbuy_out2_height/(tbuy_embed.offsetWidth/widthUp) + "px";
    } else {
        hOk = 1;
    }
    if (wOk != 1 || hOk != 1) {
        setTimeout("displayOut2()", 20);
    } else {
        tbuy_out2.style.width = tbuy_embed.offsetWidth - 6 + "px";
        tbuy_out2.style.height = tbuy_out2_height;
    }
}
// 收缩
function displayOut2Hidden() {
    var wOk = 0;
    var hOk = 0;
    var widthLow = tbuy_out2.offsetWidth - widthUp;
    var heightLow = tbuy_out2.offsetHeight 
        - tbuy_out2_height / (tbuy_embed.offsetWidth / widthUp);
    if (tbuy_out2.offsetWidth > 0 && widthLow >= 0) {
        tbuy_out2.style.width = widthLow + "px";
    } else {
        wOk = 1;
    }
    if (tbuy_out2.offsetHeight > 0 && heightLow >= 0) {
        tbuy_out2.style.height = heightLow + "px";
    } else {
        hOk = 1;
    }
    if (wOk != 1 || hOk != 1) {
        setTimeout("displayOut2Hidden()", 20);
    } else {
        tbuy_out2.style.display = "none";
    }
}
/** 关于歌词文件的下载,分析,及处理
 *****************************************************************************/
// NO1.开始请求歌词
function displayLrc(lrcAdd) {
    var action = "/tbuy/TbuyExtension/lrc=" + lrcAdd;
    try {
        request = new XMLHttpRequest();
    } catch (e) {
        var xmlVersions = new Array('MSXML2.XMLHTTP.7.0',
            'MSXML2.XMLHTTP.6.0',
            'MSXML2.XMLHTTP.5.0',
            'MSXML2.XMLHTTP.4.0',
            'MSXML2.XMLHTTP.3.0',
            'MSXML2.XMLHTTP',
            'Microsoft.XMLHTTP');
        for (var i = 0; i < xmlVersions.length && !request; i++) {
            try {
                request = new ActiveXObject(xmlVersions[i]);
            } catch (e) {
                alert("error");
            }
        }
    }
    request.open("GET", action, true);
    try {
        request.onreadyStatechange = processRequest(); // IE7
    } catch (e) {
        request.onreadyStatechange = processRequest;	// IE5,IE6
    }
    request.send();
}
// NO2.处理请求动作
function processRequest() {
    var state = request.readyState;
    if (state == 1) {
        tbuy_out1.innerHTML = "<font color=yellow>正在缓冲,查找歌词...</font>";
    }
    if (state == 2) {
        tbuy_out1.innerHTML = "<font color=yellow>正在加载歌词...</font>";
    }
    if (state == 4) {
        if (request.status == 200) {
            showRequest();
        } else {
            tbuy_out1.innerHTML = "<font color=red>找不到歌词!</font>";
        }
    } else {
        setTimeout("processRequest()", 1000);
    }
}
// NO3.获得回传数据之后
function showRequest() {
    var result = request.responseText;
    parseResult(result);
}
// NO4.分析lrc歌词文件
function parseResult(text) {
    var temp = new Array();
    temp = text.split("\n");
    for (var i = 0; i < temp.length; i++) { 
        // 分析每一行
        parseLine(temp[i]);
    }
    showLrc();      // 输出歌词
}
// NO4.1 第四步的拆行,单独分析每一行
function parseLine(text) {
    if (text == "" || text == null) return;
    // 获取歌词标题
    if (text.indexOf("[ti:") != -1) {
        var start = text.indexOf("[ti:") + 4;
        var end = text.indexOf("]");
        lrcArr["ti"] = text.substring(start, end);
        return;
    }
    // 获取演唱者
    if (text.indexOf("[ar:") != -1) {
        var start = text.indexOf("[ar:") + 4;
        var end = text.indexOf("]");
        lrcArr["ar"] = text.substring(start, end);
        return;
    }
    // 作曲
    if (text.indexOf("[al:") != -1) {
        var start = text.indexOf("[al:") + 4;
        var end = text.indexOf("]");
        lrcArr["al"] = text.substring(start, end);
        return;
    }
    // by
    if (text.indexOf("[by:") != -1) {
        var start = text.indexOf("[by:") + 4;
        var end = text.indexOf("]");
        lrcArr["by"] = text.substring(start, end);
        return;
    }
    // 开始获取正式歌词及时间
    var temp = text.split("]");
    var wordStr = temp[temp.length-1];
    for (var i = 0; i < temp.length - 1; i++) {
        var tempStr = temp[i];
        var start = tempStr.indexOf("[") + 1;
        var end = tempStr.indexOf(".");
        var timeStr = tempStr.substring(start, end);
        timeArr.push(timeStr);      // 时间数组
        lrcArr[timeStr] = wordStr;  // 时间及歌词数组
    }
}
// NO5 测试显示结果
function showLrc() {
    // 对时间数组进行排序,顺便测试一下排序时间
    if (timeArr.length <= 0) {
        tbuy_out1.innerHTML = "<font color=red>找不到歌词!</font>";
        return;
    }
    timeArr = QuickSort(timeArr);
    // 依时间顺序输出
    tbuy_out2.style.display = "";
    tbuy_out2.innerHTML +=  "<div>歌曲:" + lrcArr["ti"] + "</div>";
    tbuy_out2.innerHTML +=  "<div>演唱:" + lrcArr["ar"] + "</div>";
    for (var i = 0; i < timeArr.length; i++) {
        var time = timeArr[i]
        tbuy_out2.innerHTML +=  "<div id=" + time + ">" + lrcArr[time] + "</div>";
    }
    // 取得out2的初始高度
    tbuy_out2_height = tbuy_out2.offsetHeight;
    tbuy_out2.style.display = "none";
}
// 关于排序
function QuickSort(arr) { //交换排序->快速排序
    if (arguments.length > 1) {
        var low = arguments[1];
        var high = arguments[2];
    } else {
        var low = 0;
        var high = arr.length - 1;
    }
    if(low < high) {
        var i = low;
        var j = high;
        var pivot = arr[i];
        while (i < j) {
            while (i < j && arr[j] >= pivot) j--;
            if (i < j) arr[i++] = arr[j];
            while (i < j && arr[i] <= pivot) i++;
            if (i < j) arr[j--] = arr[i];
        }//endwhile
        arr[i] = pivot;
        var pivotpos = i;
        QuickSort(arr, low, pivotpos-1);
        QuickSort(arr, pivotpos+1, high);
    } else {
        return;
    }
    return arr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -