3.22.2026

My Youtube Hack comes full circle ...

Tối qua tôi hí hoáy tìm một cái attribute của CSS, rồi tìm cách làm nó tắt mở theo ý mình. Mừng quá sau một hồi thì tìm ra.

Youtube hack của tôi đã come full circle. Khi mở bất cứ một trang nào trong blog lên, Youtube player cũng sẽ load, nhưng bạn sẽ không thấy cái Youtube bar nữa, vì tôi đã giấu nó. Chỉ khi nào người đọc ấn vào một cái link, thì Youtube bar mới hiện lên thường trực, rồi khi bạn sang trang mới nó lại trở về trạng thái ẩn.

Thử ấn vào đây để xem bar hiện ra và nghe nhạc, bài Love So Right của The Bee Gees.

Tôi nghĩ đây là một quy tắc các blogs cần nên theo. Cái gì mà người dùng không cần, thì không nên cho người ta thấy (yet), không thôi thì người xem rối mắt. tôi vô nhiều trang web, thấy lắp ráp nhiều thứ hoa mắt quá, chỉ tốn thời gian người xem phải load vô browser, riết rồi tôi sợ không dám vô mấy cái blogs đó.

Trong trang chỉ dẫn Youtube hack, tôi đã thêm vào một function như sau:

// Make the Youtube player visible or not. Basically at loading time it
// should be off, and only be on whenever the first video is clicked.
function ytVisible(value) {
  attr = (value == true) ? "visible" : "hidden";
  document.getElementById("ytPlayer").style.visibility = attr;
}


Như tôi có nhập đề, function này có một parameter là on=true, hay off=false. Tùy theo trường hợp, nó sẽ tìm cái element có tên là ytPlayer, rồi set style->visibility là visible (true) hay là hidden (false).

Sau khi Youtube player load thành công, tôi giấu nó bằng lệnh sau:

function onYouTubePlayerReady(playerId) {

  ytplayer = document.getElementById("ytPlayer");
  ytplayer.addEventListener("onError", "onPlayerError");
  ytVisible(false);
}
Còn khi bạn ấn vô một link "a", tức là gọi loadVideo(), thì tôi sẽ không giấu tag đó nữa:

function loadVideo(id, num) {

  if(ytplayer) {
    ytVisible(true);
    if (!num) num=0;
   ytplayer.loadVideoById(id, num);
  }
  else // Flash not allowed, call loadVideoWindow
  {

     loadVideoWindow(id);
  }
}

Nếu bạn vẫn thích giữ Youtube bar như xưa, thì bạn chỉ cần xóa hai cái hàng màu đỏ đó đi là xong, hay là bỏ hai dấu // trước dòng đó cũng được (để comment dòng đó out) như sau:

//ytVisible(false);


Mục đích của tôi khi viết Youtube bar là biến Youtube vids từ chỗ coi hình ảnh, chỉ để nghe nhạc mà thôi. Tuy nhiên nếu bạn muốn xem hình cũng được. Bạn phải chỉnh sửa mấy chỗ sau đây:


Ở bước 1: chỉnh hai dòng sau, WIDTH và HEIGHT cho nó rông ra và cao lên

#content-links {
RIGHT: 55px; WIDTH: 230px; height: 8px; POSITION: fixed; BOTTOM: 20px
}


Ở bước 2: chỉnh dòng sau width và height màu đỏ:

// All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)

swfobject.embedSWF("http://www.youtube.com/v/" + videoID +
"&enablejsapi=1&playerapiid=player1",
"videoDiv", "280", "25", "8", null, null, params, atts);


Tất nhiên những thứ ở trên không phải do tôi sáng chế ra, mà cũng phải đi học lóm chỗ khác. Xin thưa, Youtube code là học từ Google Code:
 
http://code.google.com/apis/youtube/js_api_reference.html
 
Còn Javacript thì lắp ráp từ hai quyển: JavaScript: The Definitive Guide 5th Ed.JavaScript Phrasebook.
 
Hẹn bạn kỳ tới,
 
hoctro.

***

3 comments:

Hoctro said...

Chào Nhã,

Cách đây gần 1 tháng hoctro cũng thử dùng cái new (and cool) Blogger Template Designer, và cũng chọn cái template mà Nhã đang dùng. Tuy nhiên khi lắp xong thì YouTube code chạy không được nữa. Nguyên do là vì for some reason cái javascipt không nhận biết được cái div tag của cái Youtube, thành ra nó không thay thế bài gốc "deux guitares" bằng bài mới được. Thành ra hoctro tuy thích cái mới lắm nhưng phải trở về dùng cái cũ.

Không dám hứa trước nhưng hoctro sẽ tìm thời gian rảnh để coi xem tại sao nó bị hư như vậy. (Lỗi này chỉ xảy ra cho blog dùng new template designer thôi.)

Chúc Nhã một ngày thật vui.

nhã said...

Chào ông thầy,
Đúng rồi, hôm qua không thấy Học trò trả lời có lẽ vì bận, nên (tức mình) tự mày mò biết là cái template làm hỏng nên phải thay bằng template khác, hi hi, lấy lại được rồi. Chứ không ngồi nghĩ mãi sao ở edit thì nó có mà ra ngoài thì nó biến mất, chả lẽ có code của thầy biến thành ghost code.
Lại thêm một điều để học. Còn nhiều thứ trong trang HT để học mà chưa kịp. Chả lẽ yêu cầu thầy dạy từ từ thôi, học trò dốt theo không nổi :-)
Cám ơn thầy HT.

nhã said...

Chào thầy Học Trò,

Thì ra thế, lại phải copy sửa lại code của thày vậy :-), đệ tử này chỉ biết i tờ, nên thầy chỉ đâu học đó.
Nhờ thầy bây giờ mới biết Firefox hiện ra lắm warning về code quá.
Nhưng mà cũng nhờ học trò ấm ớ mà thầy mới khám phá ra những "lỗi" khác đó nhé :-)
Cám ơn thày HT,