Mô tả:
tạo các scrip_làm việc trong mọi trình duyệt
168
Chương 7: Tạo các script làm việc trong mọi trình duyệt
Tọo cóc script làm việc
trong mọi trình duụệt
T ro n g ch ư ơ n g n à y b ạ n sẽ h ọ c n h ữ n g đ iểm ch ín h sa u đây:
B Tìm hiển các điểm khác biệt của trình dĩiyệt
K Phát hiện loại trình dĩiyệt nào mà người dừng đanq chạy
B Tnty 1 ’ấn mồ hình Ỳài liêi/
B Tuân theo các chuẩn web
M Viết mã nhiều trình duyệt
rong những ngày đầu p h át triển JavaS cript, việc xử lý những
sự b ất thường giữa những n h à sản xuất trìn h duyệt và các
phiên bản khác nhau đã là m ột công việc khó khăn. Sau cùng,
m ột số trìn h duyệt đã không hỗ trợ JavaS cript gì cả (như N etscape 1.0).
Thậm chí nếu bạn có m ột trìn h duyệt hỗ trợ JavaS cript, mô h ìn h tài liệu
(DOM) nền tản g là khác nhau giữa các trìn h duyệt khác nhau, nghĩa là
các lỗi Jav aS crip t rấ t phổ biến.
T
Sự khó k h ăn này của việc p h át triến m ã Jav aS crip t vôn đã làm việc
chính xác trong mọi trìn h duyệt đã xảy ra chủ yếu do m ột sô" yếu tố:
K Các phiên bản trình duỵệt mới cách vài tháng
* Một cuộc cạnh tranh đang diễn ra giữa các công ty trình duyệt để
thêm các tính năng mới
Chương 7: Tạo các script làm việc trong mọi trình duyệt
__________________ 169
M Thiếu một cktiẩn HTML h(,át JavaScript
M ất m ột số thời gian, nhưng cuối cùng các vân đề b ắ t đầu biến m ất
khi Jav aS crip t ổn định. Và khi người dùng bắt đầu dần dần nâng cấp
lên các trìn h duyệt phiên bản 4.0 trở lên, các nhà phát triển JavaS cript
có thời gian dễ dàng để p h át triển mã tương thích nhiều trìn h duyệt.
T h ật không may, m ột số thay đối sắp tới đối với Jav aS crip t sẽ buộc
các iilià p h á t triều v/eb p h ả’ tắ t đầu vLế'., 1-iã lại cho các điểm khác biệt
của trìn h duyệt. Các lý do cho thời điểm không ổn định mới này có th ể
bao gồm:
M Sự hỗ trợ không nhất quán cho JavaScript 2.0
R Các phiên bản trình duyệt mới cácr? ìibau J’ải tháng (cụ thể từ Mozilla)
m Sự hỗ trợ trôn JavaScript không nhất qỉián cho nhũng công nghệ
mới, chẳng ban nhítXML và css
Chỉ có thời gian mới cho biết những yếu tố này sẽ khiến cho các nhà
p h át triể n web phâi đau đầu như th ế nào.
Tìm h iểu các điểm khác biệt cua trình duyệt
Theo m ột C U Ộ I , khảo sát gầii (iây, Microsoft In te rn e t Sxploie) (IE)
được sử dụng bởi khoảng 94% những người lướt web. N etscape và Mozilla
có một mức sử dụng khoáng 2%. 4% còn lại được phân chia giữa những
công ty khác chẳng h ạn như Opera hoặc bị m ất do làm tròn.
Nl-ững cor số nAy có vhổ vh;iy đổi trong cấc tháag- và n:\rn ¡’ắp tớK
N hà cuug cấp dịch vn.. in te rn e t (ISF) lớn nhất r Mỹ gần đây đã thông
báo nó sẽ b ắ t đầu sử dung Netscape làm trìn h duyêt mặc định cùa nó
và có th ể có tác động lơn đối với nhừng con số này.
ĩ*Th'in kỹ h t r n ệ t chút £ố liôu th o o f kê V‘1 tín h th cn g d ụ n f trìnb
duyệt gần đây như trong bang 7.1, chung ta có th ể th ầv răn g một nửa
những người lướt \veđ đã chưa nâng cấp lên các phiên bản gần đây của
các trin h đuyội- web .jfu tiên
họ
54% những người lướt web sử đụnEí các trìn h duyệt không phải là
phiên bản mới n h ất "';ừ Microsoft hoặc Netscape. Do đó hãy cẩn thận
khi tạo các chương trìn h JavaScript phụ thuộc quá nhiều vào các tính
năng độc quyền hoặc các tín h năng mới được bổ sung. Sử dụng các tính
năng m à không áp dụng những biện pháp phòng ngừa toàn bộ có th ể
gây ra các lỗi cho một phần khán giả đáng kể th ậm chí nếu ứng dụng
hoạt động tố t trong trìn h duyệt được cài đặt trê n PC.
C ác loại lỗi có thể xảy ra?
Khi th iế t k ế bất kỳ chương trìn h máy tính, điều quan trọng là phải
ghi nhớ rằ n g các lỗi có th ể xảy ra bất kể nhà lập trìn h cô" gắng h ế t m ình
để trá n h chúng. Điều này đặc biệt đúng đối với các chương trìn h JavaScript
170
Chương 7: Tạo các script làm việc trong mọi trình duyệt
được sử dụng qua nhiều trìn h duyệt và hệ điều h à n h khác nhau. Khi
p h át triể n m ã JavaS cript, bạn có th ể tìm th ấ y các nguồn lỗi sau đây:
B Nhĩing điểm khác biệt trong D ocum ent Object M odel của mỗi phiên
bản trình duyệt
R Các m áy tính client chạy các trình duyệt cũ (chẳng h ạ n n h ư Netscape
3.0) không hỗ trợ chức năng JavaScript nhất đ ịn k
B Các m áy tính client có những công nghệ n h ấ t địnb được tắt, chẳng
hạn n h ư cookie hoặc Java
B Các công nghệ được bật web mới, chẳng h ạ n n h ư các thiết bị xách
tay, thiết bị di động, hoặc thậm chí các thiết bị gia dụng, chẳng hạn
rưrntủ lạnh
Chương này sẽ xem xét m ột sô" kỹ th u ậ t chung để trá n h những loại
lỗi này.
Bảng 7.1 Thông sỗ' kỹ thuật sử dụng trình duyệt web gần đây
Trình duyệt
IE 6
IE 5
IE 4
Netscape 4
Netscape 6, Netscape 7, Mozilla (gộp chung)
IE cũ
Netscape cũ hơn
Mức sử dụng
46%
44%
2%
2%
1%
nhỏ hơn 1%
nhỏ hơn 1%
Phái hiện ỉoại trinh duyệt nào mà ngưừi dũng đang chạy
Chạy m ột chương trìn h JavaS cript hiện đại hoặc phức tạp trong
m ột trìn h duyệt cũ hơn có th ể gây ra vô số sự số. Có lẽ cách dễ n h ất để
trá n h những loại lỗi này là p h át hiện loại trìn h duyệt nào m à người
dùng đang chạy và sau đó tắ t (disable) m ột số tín h n ă n g chương trìn h
hoặc cung cấp m ã th ay th ế vốn thực h iện cùng m ột tác vụ bằng một
cách hơi khác.
C ¡&
cỆ a»
-------------------------------------------------------------------------------
P h át kiện tliông tin tên và phiên bđn trình duLjệi tliưồnq được
qọi
là
ẩánli hơi ỈPÌnh duqệt (Lpowsep sniffinq). Giốnq nkỉểu như mội con chó
có tíiế phát hiện mủi dutj nliốỉ của một cá nkân, một bpowsep sniffep cố
ptiát liiện và tp<3 về nliữnq chi tiết dui) nliđt c ủa phđn mềm trìnk dui^ệt.
Để p h át hiện n h à sản xuất trìn h duyệt và m ột sô" p h iên bản, chúng
ta sẽ phụ thuộc vào đối tượng navigator DOM. Đối tượng navigator có
m ột số phương thức và thuộc tính, nhưng b a phương thức và thuộc tính
Chương 7: Tạo các script làm việc trong mọi trình duyệt
171
m ả chúng ta quan tầm vào lúc riàv là appN am e, appV ersion, và
userA gent.
var browserString = navigator.appName;
var browserVersion = navigator.appVersion;
var browserAgent = navigator.userAgent;
a.ert (orowserString);
alert (browserVersion';
________ alert (browserAgent);_____________________________________________________________
Điều bạn cẩn biết?
X ác đ ịn h c á c s ố p h iê n bản J a v a S crip t
C á c nhà sản xuất trình duyệt bắt đầu với những mục đích tốt nhất. Cả
Netscape và IE cho phép các nhà phát triển xác định một số phiên bản
JavaScript bên trong thuộc tinh ngôn ngữ của thẻ