1. Trang chủ
  2. » Công Nghệ Thông Tin

Programming HandBook part 180 pps

7 69 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 133,09 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tiện tay tạo luôn một hàm Hiển thị trạng thái Loading...: Code: // Display a Loading indicator function showLoadingid, msg { $id.innerHTML = " " + msg; Hàm showLoading nhận id của st

Trang 1

Tiện tay tạo luôn một hàm Hiển thị trạng thái Loading :

Code:

// Display a Loading indicator

function showLoading(id, msg) {

$(id).innerHTML = "<img src=\"indicator.gif\" /> " + msg;

Hàm showLoading() nhận id của status bar và hiển thị ảnh indicator.gif kèm với một message được truyền qua tham số msg Như bạn có thể đoán được, file

indicator.gif được đặt cùng chỗ với lookup.gif

Xong các phần linh tinh Ta chuyển vào trong hàm onLoad() giờ đang rỗng như túi của identical:

Để truy cập vào YM plugin SDK, ta cần 1 đối tượng window.external Để gõ nhanh, ta chọn tên object là y

Code:

y = window.external;

Ta lần lượt đặt các handler bằng phương thức SetEventHandler để đón bắt các trạng thái và thông điệp liên quan đến plugin:

Code:

// Set all event handlers here

y.SetEventHandler("HTTPRequestCompleted",

onHTTPRequestCompleted);

y.SetEventHandler("HTTPRequestError", onHTTPRequestError);

y.SetEventHandler("SecondaryWindowReady",

onSecondaryWindowDeployment);

y.SetEventHandler("SecondaryWindowClosed",

onSecondaryWindowClosing);

Trang 2

Nhìn vào bạn có thể đoán được, hai lệnh đầu để đón bắt các thông điệp liên quan đến request gửi lên server Vdict, 2 lệnh sau liên quan đến việc mở cửa sổ thứ hai (hic, nghe như mở con mắt thứ 3) để hiển thị kết quả tra được :)

Việc tiếp theo là viết các hàm sẽ thực hiện khi nhận được các thông điệp trên:

Code:

function onHTTPRequestCompleted(id, responseText) {

function onHTTPRequestError(id, errorType) {

$('qad_status').innerHTML = "Ặc Không thể kết nối tới máy chủ Đã có lỗi xảy ra!";

// function to handle the Meaning window's READY event

function onSecondaryWindowDeployment() {

// function to handle the Meaning window's CLOSE event

function onSecondaryWindowClosing() {

Trong đoạn code trên, khi request gửi lên server gặp lỗi khó hỉu, nội dung status bar sẽ chuyển thành "Ặc blah blah blah" Khi cửa sổ thứ 2 được mở ra, giao diện chính của plugin sẽ gửi output tới cửa sổ này Còn khi cửa sổ thứ 2 bị đóng lại, chẳng có quái j` diễn ra cả

Hàm onHTTPRequestCompleted() sẽ được viết sau, cứ từ từ ko đi đâu mà vội Giờ báo cho YM biết đồ nghề đã được chuẩn bị xong Chỉ còn đợi "chiến":

Code:

Trang 3

y.LocalReady();

Ta edit lại cái button Tra từ để thực hiện việc tra từ:

[HTML]<img src="lookup.gif" onclick="lookup($('what').value);" />[/HTML] Hàm lookup() được viết như sau:

Code:

// Send a string to Vdict

function lookup(textstring) {

// Make sure we have a word, not the default value

if ( textstring == "Nhập vào đây " ) {

$('qad_status').innerHTML = "Bạn chưa nhập từ cần tra Hãy thử lại.";

var dict = $("which").value;

showLoading("qad_status", "Đang tra từ ");

var URL = "http://vdict.com/?dictionary=" + dict +

"&word=" + encodeURIComponent(textstring);

y.SendHTTPRequest("lookup", URL);

Đoạn code trên sẽ check xem giá trị nhập vào có phải là từ ko, nếu có thì gửi request lên Vdict, ko thì lăn đùng ra báo lỗi Request được gửi lên nhờ phương thức SendHTTPRequest Phương thức này nhận 2 tham số: 1 là id, 2 là URL

Đâu đã vào đấy Chỉ còn đợi server trả về kết quả Ta làm nốt cái hàm còn đang

bỏ trống: onHTTPRequestCompleted():

Code:

function onHTTPRequestCompleted(id, responseText) {

Trang 4

if (match == null) {

output = "<font face=Arial size=2><font size=6

color=#990000><center><strong>WORD NOT

FOUND</strong></center></font>";

$('qad_status').innerHTML = "Từ bạn vừa nhập không tồn tại Hãy thử lại.";

} else {

output = match[0].replace(/<object[\s\S]*object>/ig, "");

$('qad_status').innerHTML = "Trạng thái: Sẵn sàng";

y.SecondaryWindowOpen("meaning.html", '');

}

Hàm trên sẽ nhận responseText, sau đó *đè* ra và dùng regular expression để tìm kiếm phần nghĩa của từ Nếu thấy Word Not Found thì kêu ầm lên là Ko có từ ý - mày nhập bố láo, nếu từ đó có nghĩa thì tiếp tục dùng regex để loại bỏ tiết mục Âm thanh đặt trong thẻ object (như đã nói - càng xịn thì càng đợi duyệt lâu > chi bằng

bỏ bớt cái âm thanh đi cho nhẹ người), cuối cùng mở cửa sổ thứ 2 và reset() lại input field

Hàm reset() giản dị kinh hoàng:

Code:

function reset() {

$('what').value = "Nhập vào đây ";

}

Những j` còn lại là tạo file meaning.html (cửa sổ thứ 2) và nhồi vào đó ít code xử

lý output được gửi đến:

Code:

Trang 5

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="vi">

<head>

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

<title>Vdict Integration</title>

<script type="text/javascript">

named "y"

y.SetEventHandler("MainPluginWindowMessage",

onMainPluginWindowMessage);

</script>

</head>

<body onload="onLoad();">

<div id="qad_result"></div>

<center>Powered by <a href="http://vdict.com"

target="_blank"><strong>Vietnamese English French Online

Dictionary</strong></a></center>

Trang 6

Code đơn giản có lẽ ko cần giải thích :|

4.2.3 Thưởng thức tác phẩm nghệ thuật

Save tất cả các file lại Ra giao diện chính của YM Bấm Actions > Load Test plugin > Ok, sir Vậy là xong

Phù Mỏi hết cả tay

4.2.4 Những thứ có thể bổ sung vào plugin

Một tính năng khác Như tự động kích hoạt bộ gõ tiếng Việt khi chọn từ điển Việt

- Anh và tự tắt đi khi chuyển qua Anh - Việt Trong code đính kèm bài viết này tớ

đã xử lý như vậy

4.3 Xong plugin ta làm gì???

Có 2 hướng: Submit lên bọn Yahoo! hoặc Tự mình dùng - cây nhà lá vườn

Với plugin có nội dung okie thì ko sao, việc submit lên khá dễ - vào

gallery.yahoo.com, fill in 1 cái form dài gần chết, submit và rung đùi ngồi đợi Khoảng 1 tuần là có reply Accept hoặc reject Nếu trong plugin.properties có sờ đến Sendim, ActiveX, thì xác định là phải chờ các bố trên ý test lâu hơn

Với plugin có nội dung nhạy cảm, hay ko muốn share, thì đơn giản là mọi người tự dùng lấy Cái ấy có một nhược điểm chết người: Đó là mỗi lần login vào YM lại phải Actions > Load Test Plugin > Ok, sir

Có 1 cách để xử lý hạn chế ấy, đó là cài 1 plugin trời ơi đất hỡi nào đấy của YM vào, ví dụ Yahoo! Weather, sau đó browse đến thư mục C:\Documents and

Settings\All Users\Application

Data\Yahoo\{một_cái_mã_củ_chuối_j`_đấy_dẫn_đến_plugin_vừa_cài}\, cóp đè plugin TEST của ta vào Ko được phép thay đổi 1 tik tak gì trong file

plugin.properties, vì đơn giản là nếu change thì plugin sẽ ko làm việc

Cuối cùng ta bấm nút Plugins của YM và Start cái plugin "hồn của ta, da của nó" lên XONG!

Trang 7

Và xong tut!

indentical(UDS)

Ngày đăng: 03/07/2014, 10:20