Đối tượng screen chứa các thuộc tính liên quan đến độ phân giải màn hình, khả năng
màu sắc và kích thƣớc màn hình tính bằng pixel:
- AvailHeight : Chiều cao của màn hình hệ thống, không kể thanh tác vụ
- AvailWidth : Chiều rộng của màn hình hệ thống, không kể thanh tác vụ
- ColorDepth : Số bít dùng để thể hiện màu cho mỗi pixel
- Height : Độ phân giải tính theo chiều đứng của màn hình
- Width : Độ phân giải tính theo chiều ngang của màn hình
38 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1253 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng thiết kế và lập trình web, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
à Hình trạng mạng và Giao thức
mạng.
Hình trạng mạng: Là cách nối các máy tính với nhau. Ngƣời ta phân loại mạng
theo hình trạng mạng nhƣ mạng sao, mạng bus, mạng ring
Giao thức mạng: Là tập hợp các qui tắc, qui ƣớc truyền thông của mạng mà tất cả
các thực thể tham gia truyền thông phải tuân theo.
1.3. Kiến trúc Client – server
Khái niệm client-server đề cập đến mối quan hệ logic giữa các máy tính trên mạng.
Trong mạng client-server các máy tính đƣợc chia thành các máy server và các máy client, các
quá trình xử l đƣợc phân bổ cho cả máy server lẫn máy client, với mỗi máy có một vai trò
chuyên biệt.
Server là máy tính chuyên dụng, có khả năng xử l mạnh, lƣu trữ lớn. Chức năng chủ
yếu của server là quản l và lƣu giữ các nguồn tài nguyên mà một máy tính khác trên mạng có
thể truy cập, ngoài ra server có nhiệm vụ kiểm sóat sự truy cập và bảo mật dữ liệu. Tùy theo
chức năng xử l , ta có các loại : file server, web server, database server, mail server, ....
Server chạy trình chủ (server program).
Client là máy tính truy cập dữ liệu từ server, client chạy trình khách (client program)
chịu trách nhiệm về giao diện ngƣời sử dụng, và một số quá trình xử l . Client là các máy tính
thông thƣờng đƣợc kết nối với server qua mạng. Client gởi các yêu cầu của ngƣời sử dụng
đến server, server xử l yêu cầu và gởi kết quả về cho client. Mạng Internet là một mạng có
kiến trúc client-server.
Applications
Run on server User input sent to
server
Virtual display
sent to User PC
SERVER
CLIENT
Database
- 11 -
Kiến trúc client-server có nhiều ƣu điểm, nhất là tính bảo mật và an toàn thông tin nhờ
vào các tính năng:
Các tài nguyên mạng đƣợc quản l tập trung
Có thể tạo ra các cấp kiểm soát chặt chẽ trong việc truy cập file dữ liệu
Giảm nhẹ việc quản l trên các máy client
Bảo mật và backup dữ liệu
Có thể mở rộng hệ thống khi cần.
Tuy nhiên mô hình này cũng có nhƣợc điểm: giá thành cao, server trở thành điểm tối
yếu của hệ thống, có nghĩa là khi server bị hƣ hỏng thì toàn bộ hệ thống không thể họat động
CÂU HỎI VÀ BÀI TẬP
1.1. Phân biệt các khái niệm Intranet và Internet
1.2. Site map là gì ? Trong những home page của các website sau, home page nào có liên
kết đến site map :
1.3. Nêu những đặc tính của hai trình duyệt mới nhất : Internet Explorer 7.0 và FireFox
1.4. Tìm hiểu thêm về khái niệm blog (một trong những dịch vụ web hiện đại, có thể tra
cứu thông tin tại và
1.5. Tìm hiểu chức năng và website của hai tổ chức VNNIC và ICANN
1.6. Tại sao nói tên miền là một tài sản (giống nhƣ thƣơng hiệu là một tài sản).
1.7. Cho biết website cá nhân của Donald E.Knuth, tác giả của bộ sách nổi tiếng "Nghệ
thuật lập trình máy tính" (The Art of Computer Programming)
- 12 -
Chƣơng 2: NGÔN NGỮ SIÊU VĂN BẢN HTML
2.1. Khái niệm cơ bản về ngôn ngữ HTML
Để tham khảo tất cả các thẻ của phiên bản HTML 4.01, là phiên bản HTML mới nhất
đƣợc chuẩn hóa vào năm 1999 bởi W3C, có thể tìm trong hai địa chỉ có uy tín sau :
- Trang World Wide Web Consortium HTML Specifications (đặc tả ngôn ngữ
HTML của tổ chức W3C):
- Trang Web của W3Schools, tại web site này ta có thể tìm thấy tất cả các hƣớng
dẫn tự học về thiết kế web đựa trên nền tảng của HTML, xHTML, XML và WAP:
Xu thế phát triển của các ngôn ngữ trên Web đang dần nghiêng về ngôn ngữ XML
(eXtensible Markup Language), cũng là một ngôn ngữ con của SGML. XML là một ngôn ngữ
mô tả cấu trúc dữ liệu trên Web, cho phép ngƣời sử dụng xây dựng các thẻ riêng của mình,
một trong những ứng dụng quan trọng của XML là chuyển đổi dữ liệu giữa các ứng dụng để
trao đổi thông tin trên nền của Web, khác với HTML là ngôn ngữ trình bày dữ liệu trên Web.
HTML là ngôn ngữ chủ đạo để xây dựng trang web, nó mô tả cách thức một trang web
hiển thị nhƣ thế nào trong một trình duyệt. HTML là một ngôn ngữ mô tả tài liệu, đƣợc hình
thành từ ngôn ngữ mô tả tài liệu tổng quát SGML (Standard Generalized Markup Language)
do hãng IBM đề xƣớng từ năm 1960. HTML không phải là một ngôn ngữ lập trình, nó cung
cấp các chỉ thị định dạng để phục vụ cho việc trình bày văn bản và các đối tƣợng khác nhƣ
hình ảnh, video, các plug-in...
HTML (Hypertext Markup language) là ngôn ngữ định dạng siêu liên kết,cho phép định
dạng văn bản, bổ sung hình ảnh, và video, cũng nhƣ lƣu tất cả vào một trong tập tin dƣới dạng
văn bản hay dƣới dạng mã ASCII.
Tên gọi ngôn ngữ dánh dấu siêu văn bản phản ánh đúng thực chất của công cụ này
Markup : HTML là ngôn ngữ của các thẻ đánh dấu - Tag. Các thẻ này xác định
cách thức trình bày đoạn văn bản tƣơng ứng trên màn hình.
Language : HTML là một ngôn ngữ tƣơng tự nhƣ các ngôn ngữ lập trình, tuy
nhiên đơn giản hơn. Nó có cú pháp chặt chẽ để viết các lệnh thực hiện việc trình
diễn văn bản. Các từ khoá có nghĩa xác định đƣợc cộng đồng Internet thừa nhận
và sử dụng. Ví dụ b = bold, ul = unordered list, ...
Text : HTML đầu tiên và trƣớc hết là để trình bày văn bản và dựa trên nền tảng là
một văn bản. Các thành phần khác nhƣ hình ảnh , âm thanh, hoạt hình .. đều phải
"cắm neo" vào một đoạn văn bản nào đó.
Hyper : HTML cho phép liên kết nhiều trang văn bản rải rác khắp nơi trên
Internet. Nó có tác dụng che dấu sự phức tạp của Internet đối với ngƣời sử dụng,
có thể đọc mà không cần biết đến văn bản đó nằm ở đâu, xây dựng phức tạp nhƣ
thế nào. Sự phát triển có tính bùng nổ của Internet trong thời gian vừa qua một
phần lớn là nhờ vào WWW.
Hyperlink: dùng để liên kết các tài liệu này đến tài liệu khác hoặc liên kết đối với
bất kì đối tƣợng nào trên Web nhƣ văn bản, hình ảnh, âm thanh. Chỉ cần click
chuột vào siêu liên kết, tài liệu đƣợc liên kết sẽ đƣợc hiển thị
2.2. Lập trình web với ngôn ngữ HTML
2.2.1. Các thành phần cơ bản của html
Thẻ (tag): là một tập các k hiệu đƣợc định nghĩa trong HTML có nghĩa đặc biệt. Thẻ
bắt đầu bằng k hiệu
Cú pháp: Nội dung
- 13 -
Ví dụ: Nôi dung
Phần tử (element): có 2 loại phần tử trong HTML
- Phần tử chứa nội dung: bao gồm thẻ đóng và thẻ mở
Ví dụ: Nội dung
- Phần tử rỗng: bao gồm 1 thẻ
Ví dụ:
Thuộc tính(properties): mỗi thẻ bao gồm một hoặc nhiều thuộc tính đi kèm. Thuộc tính
đƣợc nhập vào ngày trƣớc dấu ngoặc đóng(>) của thẻ. Có thể sử dụng nhiều thuộc tính trong
một thẻ. Thuộc tính này kế tiếp thuộc tính khác, phân cách nhau bởi khoảng trắng.
Ví dụ:
Giá trị: Ngoài các thuộc tính không có giá trị còn có các thuộc tính của tag có giá trị. Ví
dụ: thuộc tính clear của thẻ có ba giá trị lựa chọn: left,right, all.
Thẻ lồng nhau: dùng để chỉnh sửa cách trình bày nội dung trong một trang Web. Trật
tự sắp xếp của những thẻ lồng nhau đó là thẻ đƣợc mở đầu tiên sẽ là thẻ đóng sau cùng
Ví dụ: Phần Nội dung
Khoảng trắng: Trình duyệt bỏ qua các khoảng trắng.
Tên tệp tin: phải đặt tên tệp tin với phần mở rộng là “.htm” hoặc “.html” điều này giúp
trình duyệt định ra loại tài liệu khi duyệt. Để tạo một trang Web, chúng ta có thể sử dụng bất
kỳ một trình soạn thảo nào để tạo ra một trang Web.
2.2.2. Cấu trúc tệp HTML
Một trang Web luôn bắt đầu bằng thẻ và kết thúc bởi thẻ
Các trang Web đƣợc chia thành 2 phần:
Phần đầu: đƣợc đặt giữa hai thẻ và thẻ - định ra tiêu đề, nội dung
của tiêu để.
Phần thân: đặt giữa 2 thẻ và - chứa nội dung của trang Web.
Ví dụ:
Tiêu đề trang Web
Xin chào mừng đến với thế giới HTML
2.3. Các thẻ cơ bản trong HTML
2.3.1. Thẻ giải thích
Tác dụng: Giải thích hoặc chú thích các dòng lệnh. Trình duyệt sẽ không hiển thị nội
dung nằm giữa các thẻ ghi chú
Cú pháp:
2.3.2. Các thẻ định dạng văn bản
Định dạng chữ
Cú pháp
Trong đó:
fontname1 là phông chữ đƣợc chọn.
fontname2 đƣợc sử dụng khi trên máy ngƣời dùng không tồn tại fontname1.
- 14 -
Ví dụ:
Định dạng kích thƣớc chữ: dùng để định kích thƣớc cho toàn bộ văn bản
Cú pháp:
n mang giá trị từ 1 đến 7. Giá trị mặc định là 3.
Định màu cho văn bản
Cú pháp:
Color: là màu dùng cho chữ. Giá trị màu có thể gõ bằng chữ hoặc hệ số hexa (16)
Ví dụ: Lớp lập trình Web
Lớp lập trình Web
Định dạng chữ
Thẻ nội dụng hoặc Nội dung
Thẻ nội dụng hoặc nội dụng
Định dạng chỉ số trên mà dƣới
Chỉ số trên:
Ví dụ: AX2+BX+C =0
AX2+BX+C=0
Chỉ số dƣới:
Ví dụ: C+02=C02 C+O2=CO2
Phân đoạn văn bản
Cú pháp
Thuộc tính align: canh đoạn văn bản. Align có thể nhận các giá trị sau
Left: nội dụng trong đoạn đƣợc canh trái
Righ: nội dung trong đoạn đƣợc canh phải
Center: nội dung trong đoạn đƣợc canh giữa
Thẻ phân cấp đề mục:
Trong HTML cho phép sử dụng 6 cấp đề mục trong trang Web
Cú pháp: Nội dung với n mang giá trị từ 1 tới 6
Ví dụ:
Giám đốc
Phó giám đốc
Nhân viên
Chèn hình ảnh vào trang Web
Cú pháp:
Tên tệp tin chứa hình ảnh có cả đƣờng dẫn thƣ mục. Nếu tệp tin hình ảnh đƣợc đặt cùng
thƣ mục với thƣ mục chứa trang Web thì không cần đƣờng dẫn thƣ mục
Ví dụ
Thêm đƣờng viên xung quanh hình ảnh
Cú pháp:
Với n là độ dày của đƣờng biên ảnh, tính bằng pixel
Ví dụ
Canh chỉnh hình ảnh
Cú pháp: Nội dung
- 15 -
Giá Trị:
left: hình ảnh nằm bên trái màn hình
right: hình ảnh nằm bên phải màn hình
center: hình ảnh nằm giữa màn hình
Ví dụ Xin chào
Thêm chữ xung quanh hình ảnh
Cú pháp: Nội dung
Giá trị
Top: ví trí văn bản nằm ở phái trên hình ảnh
middle: vị trí văn bản nằm ở giữa hình ảnh
bottom: vị trí văn bản nằm ở dƣới hình ảnh
Chèn ảnh nền
Look: A background image!
Both gif and jpg files can be used as HTML backgrounds.
If the image is smaller than the page, the image will repeat itself.
Đƣờng kẻ ngang trang Web
Thẻ : dùng để kẽ đƣờng ngang trên trang Web, giúp trang Web rõ ràng hơn.
Cú pháp:
Size: độ dày/mỏng của đƣờng kẻ tính bằng pixel
Width: chiều rộng của đƣờng kẻ tính bằng pixel
Align: canh đƣờng kẻ. Có 3 giá trị left,right, center
Định màu nền cho trang Web
Để định mầu nền cho trang Web, bổ sung thuộc tính bgcolor vào trong thẻ BODY
Cú pháp
Color là màu cần định cho trang Web
Định ảnh nền cho trang Web
Dùng hình ảnh làm nền cho toàn trang Web thày vì sử dụng màu nền
Cú pháp
Tên tệp là tên tệp tin hình ảnh càn làm nền cho trang Web
Xuống dòng trong trang Web
Cú pháp
Tạo danh sách theo thứ tự
Cú pháp
Nội dung mục 1
Nội dung mục 2
..
Nội dung mục N
- 16 -
Trong đó X đỉnh kiểu k hiệu sẽ đƣợc sử dụng trong danh sách
A là chữ hoa
a danh sách đƣợc đanh theo thứ tự chữ thƣờng
I,I,1
N là giá trị bắt đầu của danh sách
Tạo chấm tròn (bullet) cho danh sách
Cú pháp
Nội dung mục 1
Nội dung mục 2
..
Nội dung mục N
Trong đó “kiểu chấm tròn” mang một trong 3 giá trị sau:
disc: kiểu dấu chấm tròn đậm
Circle: kiểu dấu chấm tròn rỗng
Square: kiểu dấu chấm vuông đặc
Tạo danh sách định nghĩa:
Là loại danh sách có dạng một từ hay một cụm từ kèm theo nội dung dài, rất thích hợp
giải thích nghĩ của nội dung
Cú pháp: sử dụng các thẻ , ,
: để tạo danh sách định nghĩa
:đánh dấu thuật ngữ đƣợc định nghĩa trong danh sách
: giải thích thuật ngữ ở trên
Ví dụ
Hướng công nghệ phần mềm>
Đào tạo ra những lập trình viên, đáp ứng nhu cầu cần thiết của xã hội
2.3.3. Tạo liên kết (link)
Liên kết là đặc trƣng WWW, cho phép ngƣời dùng chuyển từ mục này sang mục khác
trong cùng một trang hoặc chuyển sang một trang Web này sang một trang Web khác.
Liên kết trong cùng một trang Web:
Cho phép liên kết đến các mục bên trong một trang Web.
Các bƣớc thực hiện
Tạo một điểm neo (bookmark)
Cú pháp: NDung
Tạo liên kết đến điểm neo
Cú pháp:
Dấu # báo cho trình duyệt biết liên kết này là nội bộ
- 17 -
Tạo liên kết đến các trang Web khác.
Cú pháp Nội dung
Ví dụ: DHHH
Thuộc tính:
Target=“giá trị”: mở liên kết ở vị trí nào?phụ thuộc giá trị
_blank:nạp liên kết vào một cửa sổ trống mới
_parent: nạp liên kết vào cửa sổ cha gần nhất của trang Web hiện thời
_self: nạp liên kết vào cùng cửa sổ với trang Web hiện hành
_top: nạp liên kết vào cửa sổ cao nhất
2.3.4. Một số kí tự đặc biệt trong HTML
HTML dùng các kí tự để mở và đóng 1 thẻ, do đó không thể hiện các k tự đặc
biệt này. Vì vậy cần có một nhóm k tự thay thế.
2.3.5. Các thẻ dùng thiết kế bảng
Tạo mới một bảng
Cú pháp: :
Thuộc tính:
Bgcolor: đình màu nền cho bảng
Border: định đò dày, mảnh của đƣờng viền
Bordercolor: định màu cho đƣờng viền
Bordercolordark: định màu sậm cho phần hắt bóng của đƣờng viền
Cellpadding: định khoảng cách giữa nội dung và đƣờng viền
Cellspacing: định khoảng cách giữa các ô
Frame: hiển thị đƣờng viền ngoài
Height: định chiều cao bảng
- 18 -
Width: định chiều rộng bảng
Rules: hiển thị đƣờng viền trong
Tạo mới một hàng trong bảng
Cú pháp: Nội dung
Thuộc tính:
Align/valigh: canh chỉnh nội dung hàng theo phƣơng ngang/dọc
Bgcolor: thay đổi màu nền của bảng
Tạo mới một đề nục trong bảng
Cú pháp: ,
Thuộc tính:
Align/valigh: canh chỉnh nội dung hàng theo phƣơng ngang/dọc
Bgcolor: thay đổi màu nền của ô
Colspan: mở rộng ô qua nhiều cột
Rowspan: kéo dài ô xuống nhiều hàng
Nowrap: giữ nội dung ô nằm trên một dòng
Width, height: đình chiều rộng, cao cho ô
Tạo khung viền cho bảng
Cú pháp:
Thay đổi màu khung
Cú pháp:
Thiết lập độ rộng cột
Cú pháp:
Thiết lập tiêu đề cho bảng
Cú pháp: Nội dung
2.3.6. Các thẻ tạo Frame
Khung (Frame) là thành phần cơ bản của Web, một trang Web có thể đƣợc chia thành
nhiều khung, mỗi khung sẽ chứa một trang Web riêng
Tạo Frame có dạng hàng
Cú pháp:
Trong đó:
a: chiều cao frame đầu tiên
*:chiều cao của frame thứ 2 là khoảng trống còn lại
b:chiều cao của frame thứ 3
Tạo Frame có dạng cột
Cú pháp:
- 19 -
Scorlling = “yes/no”: ẩn/hiện thanh cuộn.
Frameboder=“yes/no”: ẩn/hiện viền khung.
Border=“n”: chỉnh độ dày/mỏng của viền khung.
Noresize: không cho thay đổi kích thƣớc của khung.
2.3.7. Các thẻ dùng tạo Form
Form là thành phần giao tiếp cơ bản giữa ngƣời duyệt Web với ngƣời tạo Web. Dữ liệu
đƣợc nhập vào Form thông qua các hộp điều khiển.
Cú pháp: .
Tạo Textbox
Cú pháp:
Trong đó:
“name” là chuỗi kí tự nhận diễn dữ liệu nhập vào,
“value” là dữ liệu đầu tiên hiển thị trong Textbox và đƣợc gửi đến máy chủ khi
ngƣời duyệt không gõ thông tin gì, size định kích thƣớc của Textbox, maxlength
giới hạn số kí tự nhập vào Textbox
Tạo Textbox với vùng văn bản chứa nhiều dòng
Cú pháp:
Trong đó
“name” là chuỗi kí tự nhận diện dữ liệu nhập vào,
n là chiều cao của vùng văn bản tính bằng dòng (mặc định = 4),
m là chiều rộng của vùng văn bản tính bằng kí tự (mặc định = 40).
Tạo nút Radio button:
Radio là nút chì đƣợc họn một trong số đó, không thể chọn lựa hai nút cùng lúc.
Cú pháp
Tạo ô chọn (checkbox):
khác với Radio, checkbox cho phép chọn nhiều nút trong một nhóm.
Cú pháp
Tạo nút Push button (nút nhấn)
Cú pháp
Để tạo nút nhấn khi ngƣời dùng nhấn vào, dữ liệu của các điều khiển khác đều đƣợc đặt
giá trị mặc định lúc khởi tạo, có thể chỉ định thuộc tính type =”reset” trong tag . Tạo
nút nhấn đề kết thục việc nhập dữ liệu của một Form, ta chỉ định thuộc tính type = “submit”
trong thẻ
Tạo Dropdown Listbox: là danh sách chứa nhiều mục
CÂU HỎI VÀ BÀI TẬP
1. Các trang web của báo Tuổi trẻ điện tử ( có phần mở rộng
là .tto, tại sao trình duyệt vẫn đọc và hiển thị đƣợc ?
2. Cho một tệp tin văn bản có tên khoatin.dhhh có nội dung sau:
Khoa Tin học Trường Đại học Hàng Hải
- 20 -
Đây có phải là một tƣ liệu HTML không? và nội dung hiển thị trên cửa sổ trình duyệt
là gì ?
3. Cho biết thẻ HTML quan trọng nhất, không có nó thì không thể xây dựng một website
đƣợc.
4. Cho biết đặc điểm và cách sử dụng của hai thẻ EMBED và OBJECT trong mỗi loại
trình duyệt IE và NN
5. Sử dụng một trong những trình sọan thảo HTML: EditPlus, HTMLKit v.v. để sọan
thảo các tệp tin tƣ liệu HTML. So sánh hiệu quả sử dụng với các trình sọan thảo web
trực quan nhƣ FrontPage, Dreamweaver.
6. Xem xét trang web sau đây có tên myfirstpage.html, bạn cần phải đƣa lên server
những file nào để đảm bảo trang web hiển thị đúng nhƣ mong muốn:
My First Page
My Web page
On happy joy I have a page on the web!
Click here for other page
7. So sánh tốc độ hiển thị một trang web chứa một bảng có độ rộng khai báo bằng giá trị
tƣơng đối với một trang web khác cũng chứa một bảng nhƣ vậy nhƣng khai báo độ
rộng bằng giá trị tuyệt đối (tính bằng pixel)
8. Viết một tệp tƣ liệu HTML để tạo một form Guesbook hỏi một ngƣời nào đó về họ
tên, giới tính, tuổi, địa chỉ và email của họ. Giả sử bạn có một script để xử l form đặt
tại /CGI/SCRIPT và bạn cần đƣa vào thành phần ẩn sau đây để cho script biết địa chỉ
để gửi các kết quả:
9. Nghiên cứu cách bố cục các trang web của các website :
- 21 -
CHƢƠNG 3. NGÔN NGỮ KỊCH BẢN JAVASCRIPT
3.1. Mở đầu
Script hay kịch bản, theo thuật ngữ lập trình, là chƣơng trình chạy với chế độ thông dịch
trên máy khách (client) hay máy chủ (server) nhằm tạo ra các ứng dụng web (web base
application). Xét trên phƣơng diện:
- client-side : các script bổ sung vào trang web cho phép tạo ra các trang web tƣơng tác,
có những hiệu ứng động dựa vào mô hình đối tƣợng trình duyệt (BOM: browser object
model)
- server-side: sử dụng các đối tƣợng liên quan để chạy các script trên server.
Các ngôn ngữ kịch bản cho phép phát triển nhanh và dễ dàng các chƣơng trình đơn
giản hơn là các ngôn ngữ lập trình dạng biên dịch nhƣ C, C++,Java,C#, v.v..
Hai ngôn ngữ kịch bản thông dụng hiện nay là :
JavaScript do hãng Netscape phát triển từ năm 1995 với tên ban đầu là LiveScript, chú
rằng JavaScript không có liên quan gì đến ngôn ngữ lập trình Java của hãng Sun, nó có tên
nhƣ vậy là vì mục đích tiếp thị của hãng Netscape dựa vào sự nổi tiếng của ngôn ngữ lập trình
Java. Phiên bản hiện nay là JavaScript 1.5, chạy trên nhiều trình duyệt nên rất đƣợc ƣa chuộng
để viết các script cho các trang web. Trƣớc sự phát triển và ảnh hƣởng của JavaScript, hãng
Microsoft đã đƣa ra JScript.
VBscript do Microsoft phát triển, VBscript là một tập con của ngôn ngữ lập trình Visual
Basic, các script viết bằng VBscript thích hợp cho môi trƣờng Windows, phía client nó chỉ
chạy trong môi trƣờng IE nên không đƣợc ƣa chuộng, phía server nó thích hợp với hệ điều
hành Windows NT, Windows 2000 Server để xây dựng các trang ASP.
Năm 1996, Netscape đã đệ trình JavaScript cho ECMA (European Computer
Manufacturers Association, một tổ chức phi lợi nhuận có sự tham gia của các công ty phần
mềm, máy tính lớn trên thế giới nhƣ IBM, Microsoft, NEC, Sun ..., đƣợc thành lập năm 1991,
có chức năng chuẩn hóa WWW) để chuẩn hóa, ECMA chỉ tập trung chuẩn hóa phần lõi của
JavaScript, còn khác phần khác nhƣ mô hình đối tƣợng tƣ liệu (DOM) dành cho các nhà phát
triển, do vậy vấn đề lớn nhất còn tồn tại sự khác nhau giữa các trình duyệt là DOM.
Hiện nay, JavaScript là ngôn ngữ kịch bản chủ yếu để xây dựng các ứng dụng web chạy
phía client, tuy nhiên cần phải chú hai đặc điểm quan trọng:
JavaScript có thể làm đƣợc gì ?
DHTML là tập hợp các công cụ cho phép tạo ra các trang web tƣơng tác, có thể
thay đổi nội dung và thể hiện.
Điều khiển trình duyệt.
Xử l dữ liệu trong các ứng dụng cilent-side, kiểm tra tính hợp lệ dữ liệu trong các
form.
Lƣu các trạng thái trong cookies.
JavaScript không thể làm đƣợc gì ?
Không đọc / ghi file
Không hỗ trợ mạng
Không tạo ra các đối tƣợng đồ họa.
3.2. Cú pháp cơ bản JavaScript
Cú pháp của CSS đƣợc tạo nên bởi 3 thành phần:
Phần tử chọn (thƣờng là một thẻ HTML) (Selector).
- 22 -
Thuộc tính (Property).
Giá trị (Value).
Cú pháp của CSS đƣợc thể hiện nhƣ sau:
Selector {
Thuộc tính 1: giá trị;
Thuộc tính 2: giá trị;
Thuộc tính n: giá trị;
}
Selector thƣờng là các thẻ HTML mà bạn muốn định nghĩa thêm. Property là thuộc tính
mà bạn muốn thay đổi; mỗi một thuộc tính cần phải có một giá trị. Một thuộc tính và giá trị
của nó đƣợc phân cách nhau bởi dấu hai chấm (:). Hai cặp thuộc tính-giá trị đƣợc phân cách
nhau bởi dấu chấm phảy (;). Toàn bộ các cặp thuộc tính-giá trị của một thẻ HTML đƣợc đặt
trong cặp dấu ngoặc nhọn ({}).
3.2.1. Kiểu dữ liệu
So với các ngôn ngữ lập trình khác, JavaScript sử dụng ít kiểu dữ liệu, hai kiểu dữ liệu
đƣợc chấp nhận :
Kiểu dữ liệu cơ sở chỉ chứa một giá trị đơn nhƣ số, chuổi k tự và giá trị logic.
Kiểu số nhƣ số nguyên, JavaScript chấp nhận miền giá trị kiểu nguyên trong
khoảng giữa -253 và 253 ; số dấu chấm động (floating-point numbers) đƣợc viết
dƣới dạng thông thƣờng nhƣ 3.14 hay dƣới dạng khoa học nhƣ 0.5e10.
Kiểu boolean gồm hai giá trị true và false.
Kiểu chuổi k tự là một chuổi có thể không có k tự nào hay nhiều k tự đƣợc
bao trong cặp dấu nháy kép hay cặp dấu nháy đơn.
Kiểu Null chỉ có một giá trị là null, có nghĩa là không có dữ liệu, chú rằng
zero và chuổi rỗng không phải null.
Kiểu Indefined chỉ có một giá trị indefined, có nghĩa biến đã khai báo nhƣng
chƣa xác định kiểu.
Infinity là từ khóa chỉ một giá trị vƣợt quá giới hạn xử l của JavaScript. NaN là
một từ khóa chỉ một biểu thức không thể trả về kiểu số, ví dụ : 7*"abc";
Kiểu dữ liệu phức (composite data type) gồm các kiểu đối tƣợng (object), mảng
(array). Chúng ta sẽ nghiên cứu kỹ hai kiểu dữ liệu này trong phần sau của chƣơng
này.
Chuyển kiểu dữ liệu
JavaScript là một kiểu ngôn ngữ động, cho phép ta không cần chỉ rõ kiểu dữ liệu của
một biến khi khai báo nó, kiểu dữ liệu của một biến đƣợc tự động chuyển sang kiểu phù hợp
trong quá trình thi hành script.
Ví dụ :
var result;
x=1000;
st="lan cam on Ban";
result=x+st;
document.write(result);
Kết quả ta đƣợc trên màn hình : 1000 lan cam on Ban!
- 23 -
3.2.2. Hằng và biến
Hằng
Hằng đƣợc giới thiệu từ JavaScript 1.5, đƣợc chấp nhận từ NN 6.0 và FF 1.0 còn IE
không chấp nhận, do vậy sử dụng hằng trong các script phải hết sức cẩn thận.
Khai báo hằng :
const sopi = 3.1416;
const tencoquan="DaNang Education College";
const ok = true;
Biến
Là một vùng bộ nhớ lƣu trữ dữ liệu đƣợc truy xuất qua một tên gọi, giá trị của biến có
thể bị thay đổi khi kịch bản đƣợc thi hành.
- Khai báo biến bằng cách dùng từ khóa var hoặc bằng cách gán giá trị cho biến, khác
với việc khai báo biến một cách chặt chẻ nhƣ trong Pascal, JavaScript chỉ yêu cầu khai báo
biến trƣớc khi sử dụng nó.
Ví dụ:
var new_amount;
var answer = null;
result = 'Unknown result';
result = 10;
- Phạm vi của biến phụ thuộc vào vị trí khai báo biến trong script. Nếu biến đƣợc khai
báo ngoài hàm (function), nó đƣợc xem là biến toàn cục và có thể đƣợc sử dụng tại mọi nơi
trong script, ngƣợc lại nếu biến đƣợc khai báo trong một hàm, nó đƣợc xem là biến cục bộ và
chỉ đƣợc sử dụng trong hàm đó mà thôi.
Ví dụ :
var sum = 0; // biến toàn cục
function tinhTong(){
var a = prompt("Nhap a:"); // biến cục bộ
var b = prompt("Nhap b:"); // biến cục bộ
sum = a+b;
alert("Ket qua la:"&sum);
}
- Lƣu : Khi một biến đƣợc sử dụng mà chƣa gán giá trị thì nó sẽ có kiểu undefined.
Một biến có thể đƣợc sử dụng để chứa giá trị với nhiều kiểu dữ liệu khác nhau.
3.2.3. Các toán tử
JavaScript cung cấp một số toán tử để thực hiện các chức năng toán học và các chức
năng khác. Toán tử sử dụng một hay nhiều biến, hằng để tạo ra một giá trị mới, ta sử dụng các
tóan tử để tạo ra các biểu thức phức tạp. Trong phần này ta sẽ giới thiệu sơ lƣợc những toán tử
tƣơng tự nhƣ trong các ngôn ngữ lập trình Pascal, C và tập trung mô tả kỷ về các toán tử đặc
trƣng của JavaScript.
Toán tử gán (=) dùng để gán một giá trị cho một biến. JavaScript có nhiều phƣơng
pháp thực hiện toán tử gán :
X = 10; // giá trị 10 đƣợc gán cho biến X
- 24 -
total = mathematics + physics + chemistry // gán một biểu thức cho biến.
a+ = 3 // dạng viết rút gọn, tƣơng tự nhƣ a = a+3; dạng rút gọn này có thể áp dụng cho
các toán tử số học và các toán tử & (and) , ^ (xor), | (or)
Các Toán tử số học: +, -, *, /, %, ++, --, các toán tử một ngôi +, -
Chú ý :
++x sẽ trả lại giá trị của x sau khi tăng x thêm 1
x++ sẽ trả lại giá trị của x trƣớc khi tăng x thêm 1
Ví dụ :
var x=1;
prior = x++;
follow = x;
st= "Gia tri ban dau cua x =1 \n"+"x++ ="+prior+"\n"+"Sau khi tang x, x="+
follow;
alert(thongbao);
Các toán tử so sánh : = =, !=, >, =, <=
Các toán tử logic : && (and), || (or) , ! (not)
Toán tử string +, dùng để nối hai chuổi k tự. Ví dụ:
"Da Nang"+" "+"City" trả về kết quả "Da Nang City"
41+" Le Duan" trả về kết quả "41 Le Duan" (chuyển kiểu dữ liệu trƣớc khi ghép chuổi)
Lƣu : 2 - '1' = 1 (chuyển kiểu dữ liệu trƣớc khi thực hiện phép trừ)
Toán tử Bit xử l các toán hạng nhƣ là một tập hợp 32 bit, kết quả trả về kiểu số chuẩn
của JavaScript.
Toán tử Ý nghĩa
& Mỗi vị trí bit trả về 1 khi cả hai tóan hạng là 1
| Mỗi vị trí bit trả về 1 khi một trong hai tóan hạng là 1
~ Đảo ngƣợc các bít của tóan hạng
^ Mỗi vị trí bit trả về 1 khi chỉ có 1 trong hai tóan hạng là 1
<< Dịch sang trái
>> Dịch sang phải
>>> Dịch sang phải và điền đầy các bit trống bằng 0
Các ví dụ :
10 & 15 trả về 10 ( 1010 & 1111 -> 1010)
10 | 15 trả về 15 ( 1010 | 1111 -> 1111)
10 ^ 15 trả về 5 (1010 ^ 1111 -> 0101)
15 << 3, có nghĩa dịch sang trái 3 bit của dãy 1111, kết quả là 1111000 (120)
15 >> 3, có nghĩa dịch sang phải 3 bit của dãy 1111, kết quả là 1
25>>>3, có nghĩa dịch sang phải 3 bit của dãy 11001 và điền 0 vào vị trí các bit trống,
kết quả là
Một số toán tử đặc biệt:
- Toán tử điều kiện có cú pháp: condition ? expr1 : expr2
- 25 -
condition là một biểu thức logic, nếu true thì toán tử trả về giá trị expr1, ngƣợc lại trả về
giá trị expr2.
Ví dụ : status = (age>=18 ? "aldult" : "minor")
- Toán tử , (comma) lƣợng giá cả hai toán hạng và trả về tóan hạng thứ hai.
Ví dụ : x = (a++,c)*(b++,d) // tƣơng đƣơng với x = c*d
- Toán tử typeof trả về một chuỗi k tự xác định kiểu dữ liệu của toán hạng, kiểu dữ
liệu của toán hạng có thể là : số, chuổi, logic, đối tượng (object, array, null), function và
undefined.
- Toán tử new đƣợc dùng để tạo ra một thể hiện (instance) của một kiểu đối tượng có
hàm khởi dựng. Kiểu đối tƣợng này có thể là do ngƣời sử dụng định nghĩa, đối tƣợng dựng
sẵn hay đối tƣợng mãng. Cú pháp :
objectName = new objectType (param1 [,param2] ... [,paramN]);
Trong đó :
objectName : tên của thể hiện đối tƣợng
objectType : là một hàm xác định kiểu của đối tƣợng.
parami : là các giá trị của các thuộc tính của đối tƣợng.
- Toán tử this đƣợc dùng nhƣ một từ khóa tham chiếu đến một thuộc tính của đối tƣợng
đƣợc gọi.
Ví dụ 1:
// đối tƣợng do ngƣời sử dụng định nghĩa
function nhanVien(hoten, maso, chucdanh){
this.hoten = hoten;
this.maso = maso;
this.chucdanh = chucdanh;
}
var nhanVienMoi = new nhanvien("Le Van", "001","Quan ly")
document.write("Ho va ten :" + nhanVienMoi.hoten+"");
document.write("Ma so :" + nhanVienMoi.maso+"");
document.write("Chuc danh :" + nhanVienMoi.chucdanh);
Ví dụ 2:
// Date() là đối tƣợng dựng sẵn của JavaScript
var homNay = new Date();
var ngay = homNay.getDate();
var thang = homNay.getMonth();
var nam = homNay.getYear();
// getDate(), getMonth, getYear() là các phƣơng thức của Date()
- 26 -
document.write("Hom nay,ngay :" + ngay+"/"+thang+"/"+nam);
- Toán tử delete đƣợc dùng để xóa đi một đối tƣợng, thuộc tính của đối tƣợng hoặc một
phần tử của mãng.
Cú pháp:
delete objectName
delete objectName.property
delete objectName[index]
3.2.4 Câu lệnh
Các câu lệnh trong JavaScript cách nhau bằng dấu chấm phẩy (;), câu lệnh đƣợc chia ra
hai loại: câu lệnh đơn giản và câu lệnh có cấu trúc.
Câu lệnh đơn giản gồm có : phép gán, lời gọi hàm. Ví dụ:
x = 7; // phép gán
count++; // thực hiện toán tử increment
xInt = Math.round(y); // gọi hàm round của đối tƣợng Math và gán giá
trị cho biến xInt
window.alert("Kinh chao"); // gọi hàm alert của đối tƣợng window
Câu lệnh có cấu trúc gồm có : khối lệnh và các câu lệnh điều khiển (control
statements), lệnh with (dùng cho kiểu Object)
Khối lệnh đƣợc bao bởi cặp k hiệu { và }. Ví dụ:
{
x1 = (b + Math.sqrt(delta))/2*a;
x1 = (b - Math.sqrt(delta))/2*a;
window.document.write("Nghiệm là:" + x1 +"," + x2);
}
Các câu lệnh điều khiển : câu lệnh lựa chọn, câu lệnh lặp
3.2.5 Câu lệnh điều kiện
Trong JavaScript có hai câu lệnh điều kiện: câu lệnh if cho phép chƣơng trình chọn một
trong hai lựa chọn và câu lệnh swich cho phép chƣơng trình chọn một trong nhiều lựa chọn.
Câu lệnh if
Cú pháp : câu lệnh if đƣợc viết theo một trong bốn dạng sau:
if (biểu thức logic) câu lệnh ;
if (biểu thức logic)
câu lệnh ;
if (biểu thức logic) { khối lệnh }
if (biểu thức logic) {
khối lệnh
}
Ví dụ :
if isNaN(x){
window.alert(x+" khong phai la mot so");
- 27 -
}
( Hàm isNaN kiểm tra một giá trị và trả về true nếu đó là một số, ngƣợc lại trả về false
nếu không phải là một số)
Mệnh đề else : dùng trong trƣờng hợp có hai sự lựa chọn tùy theo giá trị của biểu thức
logic. Dạng câu lệnh này đƣợc gọi là câu lệnh if-else. Cú pháp:
if (biểu thức logic) { khối lệnh 1; }
else {khối lệnh 2;}
Cấu trúc else if: ta thƣờng gọi các câu lệnh if lồng nhau, dùng để chọn một lựa chọn
trong nhiều lựa chon. Có bốn cách viết câu lệnh if lồng nhau, ta thƣờng sử dụng hai cách viết
sau:
if (biểu thức logic 1) { khối lệnh 1; }
else {
if (biểu thức logic 2) {khối lệnh 21;}
else {khối lệnh 22;}
}
if (biểu thức logic 1) { khối lệnh 1;}
else if (biểu thức logic 2;) {
khối lệnh 21; }
else {khối lệnh 22; }
Ví dụ : Giải phƣơng trình bậc nhất một ẩn ax + b = 0
var x;
var a = window.prompt("Nhap a:");
var b = window.prompt("Nhap b:");
if (a!=0){
x=(-b/a);
window.alert("Nghiem la "+x);
}
else {
if (b!=0){
window.alert("Phuong trinh vo nghiem");
}
else {
window.alert("Phuong trinh co vo so nghiem);
}
}
Đọan script trên có thể thay bằng đọan mã sau, đơn giản và trong sáng hơn:
if (a!=0){
x=(-b/a);
window.alert("Nghiem la "+x);
}
else if (b!=0) window.alert("Phuong trinh vo nghiem");
else window.alert("Phuong trinh co vo so nghiem);
- 28 -
Câu lệnh switch
Câu lệnh switch có vai trò giống nhƣ câu lệnh if-else, câu lệnh switch lƣợng giá của
một biểu thức và so sánh giá trị này với một trong nhiều giá trị trong mệnh đề case để thực
hiện lệnh và thóat khỏi câu lệnh switch với câu lệnh break. Cú pháp:
switch(biểu thức) {
case gtrị1 :
nhóm lệnh 1; break;
. . .
case gtrịN :
nhóm lệnh N; break;
default :
nhóm lệnh N+1;
}
Từ khóa case là một nhãn, nó đánh dấu một điểm trong mã script để thực hiện một lệnh.
Ví dụ : Nhập vào một mã số tỉnh / thành phố và in ra tên của tỉnh / thành phố đó.
var bc = window.prompt("Nhap ma tinh/thanh pho: ");
// Lƣu : hàm prompt trả về giá trị kiểu chuổi.
switch (bc){
case "04":
alert("Ha Noi"); break;
case "08":
alert("Tp Ho Chi Minh"); break;
case "0511":
alert("Da Nanng"); break;
default:
alert("Chua xac dinh duoc");
}
3.2.6 Câu lệnh lặp
JavaScript có các câu lệnh lặp: câu lệnh while, câu lệnh do ...while,câu lệnh for và câu
lệnh for ... in.
Để thoát ra khỏi một vòng lặp ta sử dụng lệnh break, để tiếp tục thực hiện vòng lặp
dùng lệnh continue.
Câu lệnh while
Cú pháp : while( biểu thức logic) {
các lệnh;
}
Ví dụ : Tính tổng các số nguyên nhập từ bàn phím, nhập 0 để kết thúc.
var sum = 0;
- 29 -
while (true){
i= parseInt(prompt("Nhap mot so nguyen, nhap 0 de ket thuc",0));
if (i==0) break;
sum+=i;
}
alert("Ket qua: "+sum);
Câu lệnh do ... while
Cú pháp :do {
các lệnh;
} while (biểu thức logic);
Ví dụ 1 : In ra màn hình các dòng tiêu đề từ 1 đến 6 (H1-H6)
var i =1;
do {
document.write(""+"Tieu de thu "+i+"");
i++;
}while (i<=6);
Câu lệnh for
Cú pháp :
for(khởi tạo; biểu thức điều kiện;thay đổi giá trị) {câu lệnh;}
Phần khởi tạo dùng để khai báo các biến và gán giá trị khởi đầu.Phần biểu thức điều
kiện để lƣợng giá trƣớc mỗi lần lặp. Phần thay đổi giá trị chứa mã lệnh sẽ đƣợc thực hiện sau
mỗi lần lặp.
Các thành phần của lệnh for là tùy chọn, lệnh sau đây thực hiện vòng lặp vô tận : for( ;
; ){ // không thực hiện gì }
Ví dụ: Tính tổng từ 1 đếm 100. Ta có thể thực hiện bằng các script nhƣ sau.
Câu lệnh for đầy đủ các khai báo:
var sum = 0;
for(i=1; i<=100; i++)
{document.write(i+""); sum+=i;}
alert(sum);
Câu lệnh for thiếu khai báo về thay đổi giá trị
var sum = 0;
for(i=1; i<=100;)
{document.write(i+""); sum+=i++;}
alert(sum);
Câu lệnh for với các khai báo có nhiều biểu thức, các biểu thức cách nhau dấu phẩy (,)
var sum = 0;
for(i=1, j=100; i50; i++, j--)
{document.write(i+"-"+j+""); sum+=i+j;}
alert(sum);
Câu lệnh for sử dụng với lệnh continue
Vd: In ra màn hình các số trong phạm vi từ 1 đến 100 chia hết cho 17
- 30 -
for(var i=1; i<=100; i++){
if (i % 17 !=0) continue;
document.write(i+"");
}
Câu lệnh for .. in
Cú pháp : for (biến in đối tƣợng) { lệnh ; }
Đây là câu lệnh thƣờng đƣợc dùng để truy xuất các thuộc tính của một đối tƣợng mà
chúng ta sẽ nghiên cứu ở chƣơng sau.
Ví dụ
var sinhVien={
Hoten: "Nguyen Van Long",
Lop: "03CTT01",
DiChi: "Da Nang"
};
// định nghĩa một đối tƣợng;
for(var i in sinhVien){
document.write(sinhVien[i]+"");}
3.3. Tƣơng tác giữa JavaScript và HTML
JavaScript là một ngôn ngữ kịch bản họat động trên client-side và server-side, nhƣng
hiện nay nó đƣợc sử dụng để xây dựng các ứng dụng cho client-side, muốm vậy phải nhúng
các mã kịch bản vào trong tệp tin tƣ liệu HTML. Có hai phƣơng pháp : sử dụng thẻ
của ngôn ngữ HTML và liên kết đến một tệp tin văn bản mã ASCII chứa các mã
JavaScript.
3.3.1. Sử dụng thẻ
Toàn bộ mã JavaScript đƣợc đặt bên trong cặp thẻ và . Khi trình
duyệt xử l tệp tin HTML, gặp thẻ nó sẽ đọc toàn bộ các dòng lệnh cho đến khi
gặp thẻ , thông dịch và thực hiện lệnh, nếu có lỗi sẽ thông báo trên cửa sổ alert.
Ví dụ :
// các lệnh, hàm JavaScript
// các lệnh, lời gọi hàm JavaScript
- 31 -
Trong đó
Nơi viết các biến toàn cục, các hàm dùng trong trang web
Nơi gọi các hàm hay các đoạn mã JavaScript khác.
3.3.2. Sử dụng các tệp tin bên ngoài
Thẻ có các thuộc tính:
- language có giá trị là một ngôn ngữ kịch bản cùng phiên bản của nó, có thể là
:"JavaScript 1.5", "JScript 5.6", "ECMAscript 262", "VBscript".
- type = "text/js" báo cho trình duyệt biết tệp tin bên ngoài có thể có phần mở rộng là .js
hay .txt đều đƣợc, đây là thuộc tính tùy chọn.
- SCR xác định URL dẫn đến một tệp tin JavaScript đặt bên ngoài tệp HTML.
Khi muốn sử dụng các biểu thức của JavaScript để làm giá trị thuộc tính cho một thẻ
HTML ta dùng cú pháp: thuộc tính ="&{biểu thức};".
Ví dụ :
var d=70;
Nội dung 1 Nội dung 2
3.4. Các đối tƣợng của trình duyệt
Trình duyệt là một ứng dụng dùng để hiển thị các nội dung của một tƣ liệu HTML. Các
trình duyệt cũng đã đƣa ra một số đối tƣợng để các script có thể truy cập, các đối tƣợng này
đƣợc tổ chức theo một mô hình phân cấp, gọi là mô hình đối tƣợng trình duyệt (BOM,
Browser Object Model). Trong 9 đối tƣợng của BOM, đối tƣợng quan trọng nhất là đối tƣợng
document. BOM đóng vai trò nhƣ là một API (Application Programming Interface) cho việc
lập trình các ứng dụng trên nền tảng web cho client-side hay cách khác: chính trong môi
trƣờng trình duyệt, JavaScript dựa vào mô hình này để truy xuất các đối tƣợng trên một trang
web để cập nhật nội dung, cấu trúc và kiểu dáng của đối tƣợng
Mỗi đối tƣợng trong BOM là một tập hợp gồm :
- Các thuộc tính (Properties)
- Các phƣơng thức (Methodes)
Ngoài ra còn có các sự kiện (Events) có thể kết hợp trên đối tƣợng xác định.
Trong giáo trình này, ngƣời viết dựa trên quan điểm của Peter Kantor (Đại học Hudson
Valley, NY), chỉ trình bày về BOM mà không trình bày về DOM (Document Object Madel)
vốn là một lĩnh vực rộng lớn, phù hợp cho XML hơn. Tuy nhiên, các tham khảo về DOM
cũng có những lợi ích khi lập trình web.
Trong IE BOM, đối tƣợng lớn nhất là đối tƣợng window, còn trong NN BOM, đối
tƣợng window và đối tƣợng navigator là ngang cấp.
Sự khác nhau giữa IE BOM và NN BOM chủ yếu là các đối tƣợng và các thuộc tính
và phƣơng thức của mỗi đối tƣợng.
- 32 -
Có 9 đối tƣợng trình duyệt: window, document, event, frame, history, location,
navigator, screen, mimeType và plugin; ta sẽ lần lƣợt nghiên cứu các đối tƣợng quan trọng,
còn đối tƣợng quạn trọng nhất là document đƣợc tách ra một phần riêng.
Đối tƣợng window
Đối tƣợng window miêu tả cửa sổ đang hiển thị trang web, cung cấp các khả năng truy
xuất đến các đối tƣợng con của nó và các trạng thái cũng nhƣ nắm bắt các sự kiện xảy ra trên
cửa sổ này.
Các thuộc tính
- defaultStatus: dòng thông báo xuất hiện trên thanh trạng thái của cửa sổ trình duyệt.
- status : dòng thông báo tạm thời xuất hiện trên thanh trạng thái của cửa sổ trình
duyệt.
- frames : mảng các frame đƣợc chứa bên trong cửa sổ trình duyệt
- location : URL của tệp tin tƣ liệu HTM đƣợc mở trong cửa sổ hiện thời
- name : tên của cửa sổ
- closed : xác định trạng thái của cửa sổ có đƣợc đóng hay không.
- top : trả về sổ cha nằm phía trên nhất.
- parent : tham chiếu đến cửa sổ chứa một cửa sổ khác
- self, window : chỉ cửa sổ hiện thời.
- external : trả về host của trang web
- openner : khi một cửa sổ đƣợc mở, thuộc tính openner trỏ đến cửa sổ cha của nó.
Các phương thức
- alert : hiển thị một hộp hội thoại chứa một thông báo do một ứng dụng xác định.
- confirm : hiển thị một hộp hội thoại chứa một thông báo do một ứng dụng xác định
và hai nút lệnh Yes, No; phƣơng thức trả về true | false tùy thuộc ngƣời sử dụng ấn nút yes
hay no.
- prompt : hiển thị một hộp hội thoại chứa một thông báo do một ứng dụng xác định và
một text box để ngƣời sử dụng nhập liệu. Phƣơng thức trả về một dữ liệu kiểu chuỗi. Cú pháp
: window.prompt(dòng nhắc, giá trị mặc nhiên);
- close : đóng cửa sổ trình duyệt hiện thời hay một ứng dụng HTML (HTA).
- open : mở một cửa sổ mới và nạp tệp tƣ liệu HTML đƣợc cho bởi URL. Cú pháp :
window.open(URL, windowName, features);
Trong đó feature là các sắc thái của cửa sổ mới, đây là tham số tùy chọn. Một số thuôc
tính và giá trị :
o height | width | left | = x ; xác định kích thƣớc của cửa sổ và khoảng cách bên trái với
cửa sổ hiện tại, đơn vị tính bằng pixel.
o location | menubar | scrollbar | toolbar : thêm thanh địa chỉ, ... vào cửa sổ (gán giá trị
yes sau mỗi thuộc tính để xác định)
o resizable : cửa sổ có thể thay đổi kích thƣớc
Ví dụ : window.open("chuong1.htm","wChap1","width=400, width=200");
- print : in trang web hiện thời ra máy in.
- setTimeOut();
- focus: chuyển cửa sổ vừa mở tiến đến phía trƣớc.
Ví dụ : <a href ="#onClick="window.openner.location="";
{window.focus();} VietNamNet
- blur : ngƣợc lại với phƣơng thức focus(), đƣa cửa sổ đang mở ra phía sau.
- 33 -
- resizeTo(x, y) : thay đổi kích thƣớc cửa sổ với width =x và height=y.
- resizeBy(m, n) : với m,n Z, tăng / giảm kích thƣớc cửa sổ với m,n pixel.
- moveTo(x,y) : di chuyển cửa sổ đến vị trí với tạo độ đỉnh trên trái đến (x,y)
- moveBy(m.y) : tăng giảm tọa độ đỉnh trên trái của cửa sổ với m, n pixel
-setInterval(câu lệnh JavaScript, số milli giây): thực hiện câu lệnh JavaScript trong
khoảng thời gian, hàm này trả lại thời gian để hàm clearInterval() có thể loại bỏ nó.
-setTimeout(câu lệnh JavaScript, số milli giây): thực hiện câu lệnh JavaScript một lần
sau một thời gian nhất định tính bằng milli giây.
-clearTimeout(số milli giây) : xóa bỏ đồng hồ báo giờ.
Các sự kiện
Có 5 sự kiện đƣợc kết hợp với đối tƣợng window: onblur, onfocus, onload, onresize,
onunload. Ta sẽ nghiên cứu ở phần II.2 dƣới đây.
Mô hình sự kiện (Event model)
Mô hình sự kiện trong IE và NN bao gồm hai thành phần , tuy nhiên về chi tiết có
nhiều điểm khác nhau.
- Đối tượng Event, đƣợc xem là một giao diện sự kiện để lập trình các script.
- Danh sách các sự kiện, mỗi sự kiện đƣợc xem nhƣ là một thuộc tính nội tại của mỗi
thẻ HTML.
Đối tượng sự kiện (Event Object)
Sự kiện là kết quả của một hành động do ngƣời sử dụng hay hệ thống tạo ra,
JavaScript là một ngôn ngữ hƣớng sự kiện, có thể sử dụng để đón bắt các sự kiện này khi
chúng xảy ra và thực hiện các hành động. Thông qua việc nắm bắt và xử l sự kiện,
JavaScript có thể truy cập đến các đối tƣợng của BOM để cập nhật, thay đổi thuộc tính của
đối tƣợng, tạo nên trang web tƣơng tác và động, đây chính là khả năng mà Microsoft IE gọi là
DHTML.
Đối tượng event
Trong IE BOM : đối tƣợng event là một đối tƣợng con của đối tƣợng window còn
trong NN BOM thì nó là một đối tƣợng ngang cấp với đối tƣợng window, và trong mỗi mô
hình đối tƣợng tƣ liệu đối tƣợng event có các thuộc tính , phƣơng thức khác nhau đƣợc cho
trong các bảng sau, đây là sự khác biệt quan trọng cần lƣu .
Các thuộc tính của đối tƣợng event:
(IE 6: Event Object có 38 thuộc tính, NN 8: Event Object có 201 thuộc tính)
Properties IE NN Diễn tả
altKey x x Trả về true nếu ngƣời sử dụng ấn phím ALT trong khi sự
kiện xảy ra và ngƣợc lại
ctlKey x x Trả về true nếu ngƣời sử dụng ấn phím CTRL trong khi
sự kiện xảy ra và ngƣợc lại
shiftKey x x Trả về true nếu ngƣời sử dụng ấn phím SHIFT trong khi
sự kiện xảy ra và ngƣợc lại
cancelBubble x x Trả về true nếu muốn ngƣng sự nổi bọt sự kiện
clientX, clientY x x Tọa độ góc trên trái của trang web, tính bằng pixel
screenX, screenY x x Tọa độ của màn hình tại vị trí xảy ra sự kiện
pageX, pageY x Tọa độ của cửa số trang tại vị trí xảy ra sự kiện
offsetX, offsetY x Tọa độ của cửa số trang tại vị trí xảy ra sự kiện
fromElement x Trả về phần tử HTML mà từ đó con trỏ chuột đi ra
- 34 -
Properties IE NN Diễn tả
toElement x Trả về phần tử HTML mà từ đó con trỏ chuột đi vào
keyCode x x Phím đƣợc sử dụng để kích họat sự kiện
srcElement x Đối tƣợng mà sự kiện diễn ra trong đó
target x Trả về đối tƣợng đầu tiên mà sự kiện diễn ra
type x x Loại sự kiện
keyCode x x Trả về mã Unicode của phím đƣợc ấn xuống
Ngăn chặn sự nổi bọt sự kiện (Event Bubbling)
Trong BOM, các phần tử của trang web đƣợc tổ chức theo một cây phân cấp, do vậy
một sự kiện xảy ra trên đối tƣợng con có thể đƣợc xảy ra trên đối tƣợng cha của nó, hiện
tƣợng này gọi là sự nổi bọt sự kiện. Ngƣợc lại với sự nổi bọt sự kiện là sự chảy tràn sự kiện
(Event Flow), sự kiện xảy ra ở cấp cao sẽ ảnh hƣởng đến các cấp thấp hơn.
Ví dụ:
function cancelBubble(the){
var str=document.getElementById(the);
if(str.tagName=="P") event.cancelBubble=true; //(1)
/* script này chạy trên IE 6.0 lẫn NN 7.1
có thể thay dòng lệnh (1) bằng event.cancelBubble=true; là đủ */
alert("Thẻ P");
}
PARAGRAPH
Nếu không có dòng lệnh (1) ở trên thì khi click trên PARAGRAPH sẽ lần lƣợt xảy ra
sự kiện onClick trên thẻ rồi trên thẻ và hai hộp hội thoại lần lƣợt xuất hiện.
Dòng lệnh (1) có tác dụng ngăn chặn sự nổi bọt sự kiện, lúc này khi click trên PARAGRAPH
chỉ có hàm CancelBubble đƣợc thực hiện mà thôi.
Trong script trên ta sử dụng các phƣơng thức và thuộc tính đƣợc cả hai trình duyệt
chấp nhận : phƣơng thức getElementByID (sẽ trình bày trong mục Document Object) và
thuộc tính event.cancelBubble (đã trình bày trên), kỹ thuật nhƣ vậy gọi là cross-browser.
Các sự kiện
Tập hợp các sự kiện là thành phần của BOM chứ không phải là thành phần của
JavaScript, mỗi phần tử trên trang web đƣợc kết hợp với một số sự kiện và các sự kiện này
khác nhau trên mỗi trình duyệt hay cách khác mỗi thẻ HTML có những thuộc tính sự kiện xác
định.
Lưu ý: giữa Microsoft và Netscape sử dụng các thuật ngữ liên quan đến mô hình sự
kiện khá khác nhau, tuy nhiên nội dung đều nhƣ nhau: MS gọi event thì Netscape gọi event
handler ...). Để thống nhất, trong giáo trình này chúng ta sử dụng thuật ngữ theo Microsoft.
Cách sử dụng:
- 35 -
...
Danh sách các sự kiện thông dụng đƣợc sử dụng cho IE và NN :
NSD : Ngƣời sử dụng
Event Áp dụng cho phần tử Mô tả & Sử dụng khi
onAbort image NSD dỡ bỏ việc nạp ảnh khi ckick vào một
liên kết hay ấn nút lệnh Stop
onBlur window, frame và cả các
phần tử của form
NSD rời khỏi tiêu điểm từ window, frame hay
tất cả phần tử của form
onFocus window, frame và cả các
phần tử của form
Đƣợc kích họat khi NSD thiết lập tiêu điểm
trên đối tƣợng window, frame,...
onClick link, button, check box,
v.v.
Đƣợc kích họat khi NSD ấn nút trái của chuột
lên đối tƣợng
onChange text field, text area,
select list
Đƣợc kích họat khi NSD thay đổi giá trị của
phần tử
onLoad window, document,
applet, framset, image,
link, object, script, style
Đƣợc kích họat sau khi trình duyệt đã tải xong
tƣ liệu HTML , applet hay image...
onUnLoad window, document,
framset
Đƣợc bẩy (trigger) khi NSD loại bỏ tƣ liệu
HTML khỏi trình duyệt.
onMouseDown button, link, document Đƣợc kích họat khi NSD ấn một phím chuột
onMouseUp button, link, document Đƣợc kích họat khi NSD thả một phím chuột
onMouseOver textarea, link, layer ,
image, button ...
Đƣợc kích họat khi NSD di chuyển con trỏ
chuột trên phần tử
onMouseOut textarea, link, layer,
image, button
Đƣợc kích họat khi NSD di chuyển con trỏ
chuột ra khỏi phần tử
onResize window, frame Đƣợc kích họat khi kích thƣớc đối tƣợng sắp
bị thay đổi
onScroll window, frame Đƣợc kích họat khi NSD sử dụng thanh cuộn
của cửa sổ
onKeyDown textbox, text area Đƣợc kích họat khi NSD ấn một phím
onKeyUp textbox, text area Đƣợc kích họat khi NSD nhả một phím
onKeyPress textbox, text area Đƣợc kích họat khi NSD gõ một phím
Ví dụ 1: Sử dụng sự kiện onLoad để tự động mở trang web khác xuất hiện phía trƣớc
trang web hiện tại.
Đối tƣợng history
Đối tƣợng history lƣu giữ các URL mà ngƣời sử dụng đã mở bằng trình duyệt.
window.history có các thuộc tính và phƣơng thức sau :
Thuộc tính
- lenght : danh sách URL trong history
- current: URL của tƣ liệu HTML hiện hành
- next: URL của tƣ liệu HTML tiếp sau
- 36 -
- previous : URL của tƣ liệu HTML đƣợc mở liền trƣớc.
Các phương thức
- back() : trở lại trang trƣớc
- forward() : đi đến trang kế tiếp
- go() : nhận tham số là một URL hay một số (-1,0,1) để đi đến trang xác định. Trong
IE: -1 tƣơng ứng với trang trƣớc, 0: trang hiện tại, 1: trang kế tiếp.
Đối tƣợng location
Đối tƣợng location chứa các thông tin về giao thức, host, port, liên kết, đƣờng dẫn, tên
tệp tƣ liệu HTML của tệp tƣ liệu HTML đƣợc xem từ client, đồng thời cho phép thiết lập
URL cho đối tƣợng window .
Các thuộc tính
- host : tên webserver
- hostname : tên miền
- href : đƣờng dẫn đầy đủ của liên kết
- pathname : đƣờng dẫn và tên tệp tin của liên kết
- port : cổng URL
- protocol : giao thức thực hiện liên kết.
- search : trả về một chuỗi là thông tin nhận đƣợc từ một trang web khác gửi đến
theo phƣơng pháp GET.
Để biết các thuộc tính của đối tƣợng location ta sử dụng đọan script sau:
for(prop in location){
document.write(prop+": "+location[prop]+"";}
Đối tƣợng navigator
Đối tƣợng navigator chứa các thông tin về trình duyệt: tên, phiên bản, tên mã, ngôn ngữ
thể hiện, hệ điều hành...
Các thuộc tính (đƣợc IE và NN sử dụng):
- Appname : tên trình duyệt
- AppVersion : phiên bản của trình duyệt
- appCodeName : tên mã của trình duyệt
- platform : hệ điều hình của trình duyệt
Để biết các thuộc tính của đối tƣợng navigator ta sử dụng đọan script sau:
for(prop in navigator){
document.write(prop+": "+ navigator [prop]+"";}
Chú ý : Trong IE BOM navigator là đối tƣợng con của window, còn trong NN BOM
navigator ngang cấp với window.
Đối tƣợng screen
Đối tƣợng screen chứa các thuộc tính liên quan đến độ phân giải màn hình, khả năng
màu sắc và kích thƣớc màn hình tính bằng pixel:
- AvailHeight : Chiều cao của màn hình hệ thống, không kể thanh tác vụ
- AvailWidth : Chiều rộng của màn hình hệ thống, không kể thanh tác vụ
- ColorDepth : Số bít dùng để thể hiện màu cho mỗi pixel
- Height : Độ phân giải tính theo chiều đứng của màn hình
- Width : Độ phân giải tính theo chiều ngang của màn hình
- 37 -
Đọan script sau sẽ thay đổi kích thƣớc và canh giữa cửa sổ trình duyệt trên màn hình
của ngƣời sử dụng :
var newTopLeftX=(screen.availWidth-640)/2.0;
var newTopLeftY =(screen.availHeight-480)/2.0;
window.resizeTo(640,480);
window.moveTo(newTopLeftX, newTopLeftY);
Đối tƣợng document
document là đối tƣợng tƣ liệu, chứa tất cả phần tử HTML của trang web. Đây là đối
tƣợng quan trọng nhất trong mô hình đối tƣợng trình duyệt, cho đến nay giữa IE và NN không
có nhiều khác biệt: các đối tƣợng all, filter và selection chỉ có trong IE BOM còn đối tƣợng
layer vốn là một đặc trƣng của NN, nay đã không tồn tại trong các phiên bản NN 6.0 hay cao
hơn.
CÂU HỎI VÀ BÀI TẬP
1. Viết một script cho lại các mục của trình đơn để giải phƣơng trình bậc nhất, phƣơng
trình bậc hai một ẩn
2. Viết một script cho phép nhập dữ liệu vào mãng. Hãy sắp xếp mãng đó theo phƣơng
thức Sort và in ra kết quả (Sử dụng phƣơng thức document.write biến)
3. Viết một script cho phép nhập một chuỗi k tự. Cho biết độ dài của chuỗi, số từ trong
chuỗi, xóa bỏ các khoảng trống không có nghĩa trong chuỗi.
4. Tạo một lịch gồm có các thông tin : ngày, tháng, năm để ngƣời sử dụng có thể tra cứu
thông tin theo thời gian đã lựa chọn (không dùng đối tƣợng ActiveX)
(Tạo lịch giống đối tƣợng ActiveX, nhƣng chỉ sử dụng JavaScript: tham khảo tại địa chỉ
hay thƣ viện JavaScript trên
Các file đính kèm theo tài liệu này:
- lap_trinh_web_p1_9332_6565.pdf