?? embed.js
字號(hào):
/**
* version: 1.1
* author: huliqing
* qq: 31703299
* homepage: http://www.tbuy.biz
* 最后修改:2007-12-06
*/
var tbuy_embed;
var tbuy_player; // 播放器
var tbuy_out1; // 當(dāng)前歌詞的輸出區(qū)
var tbuy_currentLrcZone;// 當(dāng)前歌詞區(qū)的固定區(qū)
var tbuy_out2; // 所有歌詞的輸出區(qū)
var tbuy_out2_height; // out2的初始高度
var tbuy_curTime; // 播放器的當(dāng)前時(shí)間
var request; // XMLHttp請(qǐng)求
var lrcArr = new Array(); // 歌詞文件的數(shù)組形式,格式為[00:00]dfsdfdsfdsfsdf
var timeArr = new Array(); // 時(shí)間數(shù)組
var nowStr; // 正在播放的歌詞
// go...參數(shù)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_currentLrcZone = getObj(clientId + ":currentLrcZone");
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;
// 將播放完的歌詞清除顏色并
// 重新設(shè)置正在播放的歌詞顏色
if (nowStr != null) {
nowStr.style.fontSize = "";
nowStr.style.color = "";
}
nowStr = getObj(pos);
nowStr.style.fontSize = "15px";
nowStr.style.color = "red";
// 這一步只是讓歌詞出現(xiàn)得動(dòng)感一點(diǎn) :)
displayCurLine();
}
setTimeout("tracePlayer()", 1000);
}
// 讓當(dāng)前行歌詞看起來像逐字出現(xiàn)
function displayCurLine() {
if (tbuy_out1.offsetWidth < tbuy_currentLrcZone.offsetWidth - 20) {
tbuy_out1.style.width = tbuy_out1.offsetWidth + 20 + "px";
setTimeout("displayCurLine()", 30);
}
}
// -------------------------------------------------- 顯示所有歌詞,tbuy_out2
var widthUp = 100;
function showAllLyrics() {
// 如果沒有可用歌詞文件,則不預(yù)響應(yīng)
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.開始請(qǐng)求歌詞
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.處理請(qǐng)求動(dòng)作
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.獲得回傳數(shù)據(jù)這后
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 第四步的拆行,單獨(dú)分析每一行
function parseLine(text) {
if (text == "" || text == null) return;
// 獲取歌詞標(biāo)題
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;
}
// 開始獲取正式歌詞及時(shí)間
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); // 時(shí)間數(shù)組
lrcArr[timeStr] = wordStr; // 時(shí)間及歌詞數(shù)組
}
}
// NO5 測試顯示結(jié)果
function showLrc() {
// 對(duì)時(shí)間數(shù)組進(jìn)行排序,順便測試一下排序時(shí)間
if (timeArr.length <= 0) {
tbuy_out1.innerHTML = "<font color=red>找不到歌詞!</font>";
return;
}
timeArr = QuickSort(timeArr);
// 依時(shí)間順序輸出
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";
}
// 關(guān)于排序
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;
}
// -------------------------------------------------- 播放器控制
function playerPlay() {
tbuy_out1.innerHTML = "<font color=yellow>播放! </font>";
tbuy_player.controls.play();
}
function playerPause() {
tbuy_out1.innerHTML = "<font color=yellow>暫停! </font>";
tbuy_player.controls.pause();
}
function playerStop() {
tbuy_out1.innerHTML = "<font color=yellow>停止! </font>";
tbuy_player.controls.stop();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -