Hỏi-đáp dành cho tác giả web (phần 1)

Tài liệu này trả lời những câu hỏi thường đặt ra bởi các tác giả biên tập web. Dù chú trọng về những câu hỏi liên quan đến HTML, bản hỏi-đáp này cũng trả lời một số câu hỏi liên quan đến CSS, HTTP, JavaScript, cấu hình máy chủ, v.v.

Tài liệu này được bảo trì bởi Darin McGrew <darin@htmlhelp.com> từ nhóm Web Design Group, và được đăng thường xuyên trên nhóm tin tức comp.infosystems.www.authoring.html. Nó được cập nhật lần cuối vào 26/4/2007.

Mục lục vắn tắt

  1. Mở đầu
  2. Các tài liệu khác
  3. Khởi động
  4. Xuất bản web
  5. Thiết kế web
  6. Siêu liên kết
  7. Hình ảnh
  8. Các hiệu ứng trình chiếu
  9. Bảng HTML
  10. Biểu mẫu HTML
  11. Khung HTML

Mục lục đầy đủ

  1. Mở đầu
    1. Bản quyền và từ chối trách nhiệm
    2. Phiên bản mới nhất của tài liệu này ở đâu?
    3. Làm thế nào để đóng góp vào tài liệu này?
    4. Tôi có thể viết email hỏi tác gỉa tài liệu không?
    5. Ghi nhận công trạng
  2. Những tài liệu khác
    1. Tôi có thể tìm học WWW ở đâu?
    2. Tôi có thể tìm học HTML ở đâu?
    3. Tôi có thể tìm học CSS ở đâu?
    4. Tôi có thể tìm học SGML ở đâu?
    5. Tôi có thể tìm học WWW XML (XSL) ở đâu?
    6. Tôi có thể tìm học XHTML ở đâu?
    7. Tôi có thể tìm học SSI (“SHTML”) ở đâu?
    8. Tôi có thể tìm học CGI ở đâu?
    9. Tôi có thể tìm học PHP ở đâu?
    10. Tôi có thể tìm học JavaScript (LiveScript, JScript, ECMAScript, DOM) ở đâu?
  3. Khởi động
    1. Mọi người dùng gì để viết HTML?
    2. Làm thế nào để hiện các ví dụ mã HTML mà chúng không bị hiểu thành phần nội dung văn bản?
    3. Làm thế nào để có được các kí tự đặc biệt trong bản HTML của tôi?
    4. Có nên đặt các ngoặc tròn quan những gía trị thuộc tính hay không?
    5. Làm thế nào để thêm chú thích vào trong bản HTML?
    6. Làm thế nào để tránh dùng nguyên cả URL?
    7. Có nên kết thúc URL đã viết bằng một dấu gạch chéo?
    8. Làm thế nào để kiểm tra lỗi?
    9. Một DOCTYPE là gì? Tôi sẽ sử dụng cái nào?
  4. Xuất  bản Web
    1. Có thể đặt những trang web mới viết ở đâu?
    2. Làm thế nào để lấy một tên miền cho riêng mình?
    3. Làm thế nào để chặn thông tin quảng cáo từ dịch vụ hosting?
    4. Tôi có thể công bố web site của mình ở đâu?
    5. Có cách nào để trang web được đặt danh mục tốt hơn bởi máy tìm kiếm không?
    6. Làm thế nào để tôi ngăn không cho web site của tôi bị đặt danh mục bởi các máy tìm kiếm?
    7. Làm thế nào để chuyển hướng bạn đọc sang trang khác?
    8. Làm thế nào để bảo vệ web site của tôi bằng mật khẩu?
    9. Làm thế nào để tôi không cho trang web của mình khỏi bị lưu cache?
    10. Làm thế nào để vô hiệu hóa tùy chọn kích chuột phải trình duyệt? Làm thế nào để bảo vệ mã nguồn, hình ảnh v.v. của tôi khỏi bị sao chép?
    11. Làm thế nào để ẩn giấu đường URL của tôi?
    12. Làm thế nào để phát hiện xem trình duyệt nào đang được sử dụng?
    13. Làm thế nào để lấy được các địa chỉ email của khách xem trang?
    14. Tại sao thông điệp 404 Not Found mà tôi quy định lại không hiển thị được?
  5. Thiết kế Web
    1. Làm thế nào để gói trọn 1 file trong file khác?
    2. Làm thế nào để chạy một chương trình trên trang web của tôi?
    3. Tôi nên dùng cái gì, &entityname; hay &#number; ?
    4. Tôi nên viết các thẻ bằng chữ in hay chữ thường?
    5. Tôi nên viết trang web với kích cỡ màn hình nào?
    6. Tại sao trang web tôi viết lại hiển thị bình thường trong trình duyệt này nhưng không đúng hoặc không hiển thị trong trình duyệt khác?
    7. Tại sao trình duyệt lại hiển thị mã nguồn HTML tôi viết?
    8. Làm thế nào để cố định được URL hiển thị trên trình duyệt của bạn đọc?
    9. Làm thế nào để đặt đường link dọc theo lề trái của trang?
    10. Làm thế nào để chỉ định các màu?
    11. Làm thế nào để thay đổi màu của một số chữ?
    12. Làm thế nào để chỉ định màu thanh trượt?
    13. Làm thế nào để chỉ định các font trong trang web của tôi?
  6. Siêu liên kết
    1. Làm thế nào để tạo một liên kết?
    2. Làm thế nào để liên kết đến một chỗ giữa văn bản HTML?
    3. Làm thế nào để tạo một kết nối mở ra một cửa sổ mới?
    4. Làm thế nào để tạo một kết nối mở ra một cửa sổ mới có kích thước cụ thể?
    5. Làm thế nào để cho phép mọi người tải về một file từ trang web của tôi?
    6. Làm thế nào để bắt buộc trình duyệt tải về một file? Làm thế nào để buộc trình duyệt hiển thị/phát nhạc một file? Làm thế nào để buộc phải mở file bằng một chương trình phần mềm cụ thể?
    7. Làm thế nào để tạo ra một nút có vai trò như một đường kết nối?
    8. Làm thế nào để tạo ra một nút quay trở lại trên trang web của tôi?
    9. Làm thế nào để tạo ra nút tự động đánh dấu trang trên website của tôi?
    10. Làm thế nào để tạo nên một nút để in trang web của tôi?
    11. Làm thế nào để tạo ra một nút để đóng cửa sổ?
    12. Làm thế nào để tạo ra một đường link để gửi email cho tôi?
    13. Làm thế nào để chỉ định một chủ đề cho đường link gửi email?
    14. Làm thế nào để ẩn gạch chân trên đường link?
    15. Làm thế nào để có 2 bộ đường link với màu khác nhau?
    16. Làm thế nào để làm cho đường link thay đổi khi hươ con trỏ chuột qua chúng?
    17. Tại sao các đường link của tôi lại ra sai hay không nạp?
    18. Tại sao đường link của tôi ở trình duyệt này thì chạy được nhưng trình duyệt khác thì không?
    19. Tại sao đường link của tôi đến một file … lại tải về một đống kí tự?

Mục 1: Mở đầu

1.1. Bản quyền và từ chối trách nhiệm

Copyright © 1996-2007 by the Web Design Group. Tài liệu này có thể được phân phối chỉ phải tuân theo các điều khoản quy định trong giấy phép Open Publication License, phiên bản 1.0 hay mới hơn (bản mới nhất hiện có ở http://www.opencontent.org/openpub/).

Thông tin này được cung cấp với ý tốt cùng hi vọng rằng nó có ích, song không đảm bảo hoàn toàn chính xác, được cập nhật hay thích hợp cho mục tiêu cụ thể bất kì. Tác giả không chịu trách nhiệm pháp lý về bản thân thông tin trong tài liệu hay những hoạt động sử dụng gắn với nó.

1.2. Phiên bản mới nhất của tài liệu này ở đâu?

Trang chủ chính thức của tài liệu này trên Web là:

Một bản dịch tiếng Hà Lan của tài liệu này có ở:

Một bản dịch tiếng Pháp của tài liệu này có ở:

LƯU Ý: Nếu bạn muốn chép bản FAQ này lên website của bạn thuộc máy chủ mà mọi người xem được, hãy đảm bảo để nó được cập nhật.

Các nguồn khác được biết đến bao gồm:

1.3. Làm thế nào để đóng góp vào nội dung tài liệu?

Nếu bạn muốn đóng góp  nội dung cho bản hỏi đáp này, hãy gửi email tới <darin@htmlhelp.com>. Tất cả những đóng góp sẽ được liệt kê trong mục công trạng.

1.4. Tôi có thể gửi câu hỏi qua email đến tác giả không?

Đừng gửi tôi các câu hỏi qua email. Hãy đăng những câu hỏi lên một diễn đàn công cộng thích hợp, ở đó họ sẽ đọc những câu hỏi này (và có thể sẽ trả lời/thảo luận), có nhiều người còn hiểu biết sâu hơn tôi. Hãy nghĩ kĩ trước khi đăng câu hỏi; bạn sẽ nhận được câu trả lời hữu ích hơn nếu đăng được câu hỏi rõ ràng, đầy đủ.

Nếu bạn nghĩ có điều trong tài liệu này cần được làm rõ, hoặc nếu bạn muốn đề xuất một câu trả lời gọn gàng, hay cho một câu hỏi thường gặp mà vẫn chưa có trong tài liệu này, thì đừng ngại gửi tôi email.

1.5. Công trạng

Tất cả những thông tin có trong bản hỏi đáp này ban đầu được biên soạn bởi nhóm Web Design Group, chủ yếu là Arnoud “Galactus” Engelfriet, John Pozadzides, và Darin McGrew. Bản dịch tiếng Hà Lan của tài liệu này được Rijk van Geijtenbeek chuẩn bị. Bản dịch tiếng Pháp của tài liệu này được Cédrik Rousseau chuẩn bị.

Những thông tin thêm được cung cấp bởi Boris Ammerlaan, Martin Atkins, Lori Atwater, Alex Bell, Robert Breeser, Stan Brown, Roger  Carbol, Alex Chapman, Jim Dabell, Warden Dave, Curtis Dyer, Jan Roland Eriksson, Jon Erlandson, Mark Evans, Peter Evans, Joe Faulds, Vladimir P. Filipovic, Alan Flavell, Peter Flynn, Phillip Freck, Rijk van Geijtenbeek, Lucie Gelinas, Bjoern Hoehrmann, Tina Marie Holmboe,  Cliff Howard, Bruce Huntington, Thomas Jespersen, Peter Jones, Nick Kew, Jukka Korpela, Simon Lee, Jim Ley, Nick Lilavois, Kelly Martin, Neal McBurnett, Glen McDonald, Dan McGarry, Brendan Murray, Ken O’Brien, Stephen Poley, Timothy Prodin, Steve Pugh, Liam Quinn, Colin Reynolds, Kai Schätzl, Randal L. Schwartz, Doug Sheppard, Sue Sims, Henri Sivonen, Toby Speight, Warren Steel, John Stockton, Ian Storms, Gérard Talbot, Peter Thomson, Daniel Tobias, Frederiek van Beckum, Diane Wilson, và tất nhiên là những người khác tôi quên không nhắc đến.

Cám ơn tất cả các bạn! Những bình luận, phê bình và đề xuất của các bạn đã góp phần đáng kể nâng cao chất lượng của bản hỏi đáp này.

Mục 2: Những tài liệu khác

2.1. Tôi có thể học về WWW ở đâu?

World Wide Web là “thế giới của thông tin truy cập được qua mạng (có sẵn qua máy tính của bạn, điện thoại, tivi hay tủ lạnh được nối mạng).” World Wide Web khởi đầu dưới dạng một dự án thông tin nối mạng tại CERN.

Xem thêm

2.2. Tôi có thể học HTML ở đâu?

HyperText Markup Language (HTML, ngôn ngữ đánh dấu siêu văn bản) là một ngôn ngữ đánh dấu đơn giản để tạo ra các “siêu” văn bản  không phụ thuộc nền tảng hệ thống trên mạng World Wide Web. Đa số các siêu văn bản trên mạng đều được viết bằng HTML.

Bản đề xuất mới nhất của W3C là XHTML 1.0, vốn là một bản viết lại HTML 4.01 dưới dạng ứng dụng XML. HTML 4.01 là bản cập nhật với một chút chỉnh sửa HTML 4.0. HTML 4 mở rộng thêm HTML 3.2 về khả năng hỗ trợ các khung (frame), quốc tế hóa (cho phép dùng nhiều ngôn ngữ), các tờ phong cách (style sheet), các bảng (table) nâng cao, cùng nhiều thứ nữa. Những đánh dấu mới được giới thiệu trong HTML 4 không được hỗ trợ tốt bởi các trình duyệt thời bấy giờ [2007] nhưng đa phần đều có thể sử dụng được trong những trình duyệt không hỗ trợ.

Xem thêm

2.3. Tôi có thể học CSS ở đâu?

Cascading Style Sheet là một cơ chế dựa theo chuẩn để định hướng phong cách trình chiếu (như font chữ, màu sắc, bố cục) của các văn bản HTML. CSS rất linh hoạt và chạy được trên nhiều nền tảng hệ thống, và được thiết kế để duy trì tính truy cập được vào nội dung cấu trúc của văn bản (ngay cả khi toàn bộ hoặc một phần mẫu stlye sheet của tác gỉa bị bỏ qua không dùng). Một mẫu style có thể được dùng bởi nhiều văn bản để định hướng một phong cách thống nhất; cách này hiệu qủa hơn dùng đi dùng lại các định dạng markup riêng cho từng văn bản.

Xem thêm

2.4. Tôi có thể học SGML ở đâu?

Standard Generalized Markup Language là một ngôn ngữ dùng để định nghĩa cú pháp của các ngôn ngữ đánh dấu. HTML là một ứng dụng SGML (nghĩa là một ngôn ngữ đánh dấu được định nghĩa trong SGML).

Xem thêm

2.5. Tôi có thể học XML (XSL) ở đâu?

Extensible Markup Language là một ngôn ngữ khác được dùng để định nghĩa cú pháp của các ngôn ngữ đánh dấu. XML là một tập con của SGML, và được thiết kế để biểu thị các dữ liệu cấu trúc tùy ý dưới dạng chữ. XSL là một ngôn ngữ stylesheet để đặt phong cách cho các văn bản XML.

Xem thêm

2.6. Tôi có thể học XHTML ở đâu?

Extensible HyperText Markup Language thực hiện tái lập, hình thành những tập hợp con, và mở rộng HTML, được tái cấu trúc dưới dạng một ứng dụng XML. XHTML 1.0 thì giống hệt như HTML 4.01, chỉ trừ các yêu cầu cú pháp đặt ra bởi XML. XHTML Basic là một tập con tối thiểu của XHTML cho các máy khách Web (clients) với tính năng hạn chế. XHTML 1.1 là bản tái lập của XHTML 1.0 Strict có dùng các XHTML Module.

Xem thêm

2.7. Tôi có thể học SSI (“SHTML”) ở đâu?

Các Server-Side Include (SSI) cho phép nhiều dạng định hướng (directive) (chẳng hạn để bao kèm nội dung một file khác) có thể nhúng được bên trong các tài liệu web. Máy chủ web xử lý các định hướng SSI mỗi lần văn bản có dùng SSI được gọi đến. Các tài liệu có dùng đến SSI thường được nhận diện bằng phần mở rộng có tên .shtml song không có ngôn ngữ nào gọi là “SHTML”. Các hình thức thực hiện thì khác nhau giữa các máy chủ web; bạn cần xem tài liệu hướng dẫn máy chủ web hiện dùng.

Xem thêm

2.8. Tôi có thể học CGI ở đâu?

Common Gateway Interface là một giao diện chuẩn giữa các chương trình ngoài và các máy chủ web. Khác với những văn bản HTML tĩnh, các chương trình CGI có thể tạo nên những thông tin động dựa trên dữ liệu người dùng cấp cho, hoặc thông tin trong một cơ sở dữ liệu, hay bất kì dữ liệu nào mà chương trình đó lấy được.

Lưu ý rằng mặc dù nhiều chương trình CGI được viết bằng ngôn ngữ Perl, so chương trình CGI có thể được viết bằng nhiều ngôn ngữ khác (gồm C, C++, Python, Visual Basic, và nhiều ngôn ngữ shell trong hệ Unix).

Xem thêm

2.9. Tôi có thể học PHP ở đâu?

PHP: Hypertext Preprocessor là một ngôn ngữ văn lệnh chạy trên nhiều nền hệ thống với công dụng chung. PHP thường được dùng làm các đoạn mã lệnh nhúng phía máy chủ trong các trang web động.

Xem thêm

  • Nhóm PHP (bài hướng dẫn, hỏi-đáp, tải về, v.v.)
  • PHP Resource Index (mã lệnh hoàn chỉn, các ví dụ, hướng dẫn, v.v.)

2.10. Tôi có thể học JavaScript (LiveScript, JScript, ECMAScript, DOM) ở đâu?

JavaScript là một ngôn ngữ hướng đối tượng, được thông dịch trên nhiều nền tảng, được thiết kế ban đầu là để viết mã lệnh web phía máy khách. Các thành phần của trang web có thể được chỉnh sửa bằng JavaScript, dưới dạng các đối tượng quy định trong mô hình Document Object Model (DOM). Điều này cho phép các hiệu ứng động như lật hình và hiệu ứng tương tác như các trang web thay đổi theo phản hồi của người dùng mà không cần tải lại từ server (máy chủ).

LiveScript là tên gọi ban đầu mà Netscape đặt cho JavaScript. JScript là phiên bản ngôn ngữ mà Microsoft thiết lập nên. ECMAScript là một phiên bản chuẩn hóa dựa trên JavaScript của Netscape và JScript của MicroSoft.

Xem thêm

Mục 3: Khởi động

3.1. Mọi người viết HTML bằng gì?

Mỗi người có ý thích riêng về chọn công cụ phù hợp nhất. Hãy nhớ rằng nếu công cụ đó càng yêu cầu bạn biết ít kiến thức về HTML thì sản phẩm HTML bạn tạo ra sẽ càng dở. Nói cách khác, bạn sẽ luôn làm tốt hơn nếu chịu khó dành thời gian học một chút HTML.

Xem thêm

3.2. Làm thế nào để cho thấy các ví dụ HTML mà không để chúng bị coi là phần nội dung tài liệu của tôi?

Bên trong ví dụ HTML đó, trước hết hãy thay thế kí tự “&” bằng “&amp;” ở mọi chỗ nó xuất hiện. Sau đó thay thế kí tự “<” bằng “&lt;” và kí tự “>” bằng “&gt;” theo cách tương tự. Lưu ý rằng có thể dùng được các phần tử CODE và/hoặc PRE khi hiển thị các ví dụ HTML. Ngoài ra, câu hỏi đáp tiếp theo cũng đề cập những vấn đề tổng qúat hơn về cách biểu diễn kí tự bất kì trong văn bản HTML.

3.3. Làm cách nào để có được những kí tự đặc biệt trong HTML của tôi?

Mục hỏi-đáp trước đã đề cập đến trường hợp riêng với các dấu nhỏ hơn (‘<‘), lớn hơn (‘>’), và (‘&’). Nói chung, cách an toàn nhất để viết  HTML là bằng mã US-ASCII (ANSI X3.4, một loại mã 7-bit), qua việc biểu diễn các kí tự của nửa trên của mã 8-bit bằng các thực thể HTML.

Việc dùng các kí tự 8-bit cũng có thể thành công trong nhiều trường hợp thực tế: Unix và MS-Windows (dùng Latin-1), và cả Mac (với một số trường hợp dành riêng).

Latin-1 (ISO-8859-1) được thiết kế riêng cho tiếng Anh, Pháp, Đức, Tây Ban Nha, Bồ Đào Nha và một số ngôn ngữ Tây Âu khác.
(Nó không đủ cho nhiều ngôn ngữ trung Âu và Đông Âu cũng như nhiều vùng khác, chứ chưa nói đến các ngôn ngữ không dùng bảng mã La Mã.) Trên Web, chỉ đó là những kí tự được hỗ trợ một cách đáng tin cậy. Nói riêng, các kí tự từ mã số 128 đến 159 có dùng trong MS-Windows lại không phải là thành phần của tập mã ISO-8859-1 và sẽ không được hiển thị như người dùng Windows trông mong. Những kí tự này bao gồm dấu gạch dài, gạch ngắn, dấu nháy uốn cong, dấu chấm đầu dòng (hoa thị), dấu thương hiệu; những cái này thỉ cả kí tự lẫn kí hiệu &#nnn; tương ứng đều không đúng trong HTML. Hơn nữa, ISO-8859-1 không bao gồm dấu tiền Euro. (Xem thêm đoạn cuối mục hỏi đáp này về những kí tự như vậy.)

Trên nền những hệ thống mà mã kí tự không phải ISO-8859-1, như MS-DOS và Mac OS, có thể phát sinh vấn đề: bạn phải dùng cách chuyển từ bảng mã riêng của hệ thống đến ISO-8859-1 (chẳng hạn, Fetch cho máy Mac), hoặc chuyển đổi độc lập (như GNU recode). Việc dùng 7-bit ASCII với các thực thể sẽ tránh được những vấn đề như vậy, song bài hỏi-đáp này qúa ngắn, không thể hướng dẫn chi tiết những trường hợp khác nữa.

Nếu bạn chạy một web server (httpd) trên nền hệ thống mà bộ mã không phải là ISO-8859-1, như Mac hay một máy IBM mainframe, thì trách nhiệm máy chủ là phải chuyển đổi văn bản chữ về dạng ISO-8859-1 khi gửi những văn bản này lên mạng.

Nếu bạn muốn dùng các kí tự không thuộc ISO-8859-1, bạn phải dùng HTML 4 hay XHTML thay vì HTML 3.2, chọn một bộ kí tự thay thế thích hợp (và với những bộ kí tự cụ thể, chọn luôn cả hệ thống mã  encoding), và dùng cách này hay khách khác để chỉ định bộ mã được chọn.

Xem thêm

3.4. Tôi có nên đặt dấu nháy quanh các gía trị thuộc tính không?

Không có gì sai trái khi đặt dấu nháy cho những gía trị thuộc tính, và nhiều người khuyến nghị phải nháy tất cả những gía trị dù cho việc làm đó cũng chỉ là tùy thích, trên phương diện kĩ thuật. XHTML 1.0 yêu cầu tất cả các gía trị thuộc tính phải được nháy. Cũng như những chỉ định HTML trước đó, HTML 4 cho phép các gía trị thuộc tính vẫn để nguyên không nháy trong nhiều trường hợp (ví dụ khi gía trị này chỉ là 1 chữ cái, hay chỉ là con số).

Hãy cẩn thạn khi gía trị bạn nhập bản thân nó lại có dấu nháy, chẳng hạn khi bạn muốn dòng chữ ALT kiểu như “Vị “Vua hài kịch” giương cung” đặt cho một hình ảnh. Chúng ta thì hiểu được chỗ nào kết thúc nháy, nhưng trình duyệt thì không. Bạn phải viết giá trị thuộc tính cẩn thận để cho cái dấu nháy đầu tiên không báo hiệu kết thúc gía trị qúa sớm. Có hai kĩ thuật chủ  yếu sau:

  • Thoát mọi dấu nháy nằm tbên trong gía trị bằng ” để cho gía trị không bị kết thúc sớm: ALT=”the “King of Comedy” takes a bow”.
  • Dùng các dấu nháy đơn để chỉ định gía trị thuộc tính: ALT=’the “King of Comedy” takes a bow’.

Cả hai cách này đều đúng nếu xét theo quy định và cũng được các trình duyệt hiện thời hỗ trợ, song một số trình duyệt cũ thì không. Nên an toàn nhất là viết lại dòng chữ để gía trị không có dấu nháy nào, hay thay thế dấu nháy kép của gía trị thì dấu nháy đơn, như sau: ALT=”the ‘King of Comedy’ takes a bow”.

Xem thêm

3.5. Làm thế nào để bao gồm các lời chú thích trong HTML?

Về mặt kĩ thuật, bởi HTML là một ứng dụng SGML, nên HTML dùng kí hiệu chú thích của SGML. Tuy nhiên, kí hiệu đầy đủ thì phức tạp, và các trình duyệt không hỗ trợ toàn vẹn được. Cho nên, hãy dùng quy tắc đơn giản sau để tạo các chú thích HTML vừa đúng cú pháp lại hiệu dụng trong các trình duyệt:

Một chú thích HTML bắt đầu bằng “<!--“, kết thúc bằng “-->“, và không chứa bất kì “--” hay “>” trong chú thích đó.

Các dòng sau là những ví dụ chú thích HTML:

  • <!-- Đây là một chú thích. -->
  • <!-- Đây là một chú thích khác,
    và nó tiếp tục xuống dòng dưới. -->
  • <!---->

Đừng đặt những chú thích bên trong các thẻ (tức là đặt giữa “<” và “>“) trong HTML.

Xem thêm

3.6. Làm thế nào để tránh sử dụng toàn bộ URL?

Cấu trúc URL định nghĩa một cấu trúc phân cấp tương tự như phân cấp thư mục trong hệ thống file dùng trong đa số các điều hành máy tính. Các phần của URL được phân cách bởi các dấu gạch chéo (“/”). Khi duyệt qua cấu trúc URL, đoạn cuối của URL (tức là mọi thứ sau dấu gạch chéo cuối cùng) thì tương đương với một file trong hệ thống file. Còn những phần khác của URL thì giống những thư mục con trong hệ thống file.

Một URL tương đối thì bỏ qua một phần thông tin cần thiết để định vị đến tài liệu được chỉ định. Những thông tin đã bỏ qua này được coi là giống với những tài liệu giữ vị trí cơ sở (mốc) có chứa URL tương đối đó. Việc này rút ngắn những URL cần để chỉ tới các tài liệu liên quan, và cho phép cây tài liệu được truy cập đến qua nhiều hình thức khác nhau (chẳng hạn, “file”, “http”, và “ftp”) hoặc có thể di chuyển được mà không thay đổi gì đến các URL ghi trong những tài liệu đó.

Trước khi trình duyệt có thể dùng URL tương đối, nó phải phân giải được URL tương đối đó để tạo thành một URL tuyệt đối. Nếu URL tương đối đó bắt đầu bằng một cặp dấu gạch chéo (chẳng hạn, //www.htmlhelp.com/faq/html/), thì nó chỉ thừa kế hình thức của URL cơ sở. Nếu URL tương đối bắt đầu bằng một dấu gạch chéo (chẳng hạn, /faq/html/), thì nó sẽ thừa kế cả hình thức lẫn vị trí mạng từ URL cơ sở.

Còn nếu URL tương đối chẳng bắt đầu bằng dấu gạch chéo nào (chẳng hạn, all.html , ./all.html hoặc ../html/), thì nó có một đường dẫn tương đối và sẽ được phân giải như sau.

  1. Trình duyệt sẽ gạt bỏ tất cả những gì đứng sau dấu gạch chéo cuối cùng trong URL của tài liệu cơ sở và nối URL tương đối vào kết qủa.
  2. Mỗi phần “.” được xóa đi (ví dụ, ./all.html cũng giống như all.html, và ./ thì chỉ “thư mục” hiện thời trong cấu trúc phân cấp URL).
  3. Mỗi phần “..” sẽ có tác dụng di chuyển lên một cấp cao hơn trong thang bậc phân cấp URL; phần “..” được xóa bỏ đi, cùng với phần đứng trước nó (chẳng hạn, foo/../all.html cũng giống như all.html, và ../ chỉ đến “thư mục” cha mẹ trong phân cấp URL).

Một vài ví dụ có thể giúp hiểu thêm vấn đề. Nếu tài liệu cơ sở là <URL:http://www.htmlhelp.com/faq/html/basics.html&gt;, thì

Lưu ý ràng trình duyệt mới thực hiện phân gỉai các URL tương đối chứ không phải máy chủ làm điều này. Máy chủ (server) chỉ nhìn thấy URL tuyệt đối sau khi xử lí mà thôi. Hơn nữa, các URL tương đối thì di chuyển trong cấu trúc phân cấp URL. Mối liên hệ (nếu có) giữa thang bậc phân cấp URL và hệ thống file máy chủ thì không có ảnh hưởng gì cả.

Xem thêm

3.7. Tôi có nên kết thúc các URL viết ra bằng một dấu gạch chéo hay không?

Cấu trúc URL định nghĩa một hệ thống phân cấp tương tự như phân cấp hệ thống file thành các thư mục con. Các phần của mỗi URL được phân tách bởi dấu gạch chéo (“/”). Khi di chuyển trong cấu trúc phân cấp URL, thì phần cuối cùng của URL (tức là tất cả những gì đứng sau dấu gạch chéo cuối) đều gioosng một file trong hệ thống file. Các phần khác của URL thì giống các thư mục con trong hệ thống file.

Khi phân giải các URL tương đối (xem câu trả lời cho hỏi-đáp liền trước), đầu tiên trình duyệt sẽ lược bỏ moi thứ đứng sau dấu gạch chéo cuối cùng trong URL của văn bản hiện thời. Nếu URL của văn bản hiện thời kết thúc bằng một dấu gạch chéo, thì phần của cùng (hay “file”) của URL bị bỏ trống. Nếu bạn xóa dấu gạch chéo này, thì phần cuối cùng của URL sẽ không còn bỏ trống nữa; nó là thứ đứng sau dấu gạch chéo còn lại trước đó. Như vậy việc xóa dấu gạch chéo sẽ thay đổi URL; cái URL sau thay đổi sẽ tham chiếu tới một văn bản khác và các URL tương đối sẽ phân giải khác nhau.

Chẳng hạn, phần cuối của URL http://www.htmlhelp.com/faq/html/ là không có gì; bởi không có gì sau dấu gạch chéo cuối cùng. Trong văn bản này, URL tương đối all.html sẽ phân giải thành http://www.htmlhelp.com/faq/html/all.html (một văn bản có sẵn). Nếu dấu gạch chéo đứng sau bị bỏ qua, thì phần cuối cùng của URL đã sửa đổi http://www.htmlhelp.com/faq/html là “html”. Trong văn bản này (không tồn tại), URL tương đối all.html sẽ phân giải thành http://www.htmlhelp.com/faq/all.html (một văn bản không tồn tại khác).

Khi nhận được một yêu cầu bị thiếu dấu gạch chéo cuối cùng, các máy chủ web không thể bỏ qua dấu gạch chéo bị thiếu này và dù sao thì cũng gửi văn bản đi. Làm như vậy sẽ phá vỡ mọi URL tương đối trong văn bản này. Nói chung, các máy chủ được cấu hình để gửi một thông báo điều hướng khi nhận được đề nghị kiểu như vậy. Để phản hồi thông báo điều hướng này, trình duyệt yêu cầu URL đúng, rồi sau đó máy chủ gửi tài liệu được yêu cầu. (Dù sao, bản thân trình duyệt không và cũng không thể tự sửa lại URL đó được; chỉ có máy chủ mới có thể xác định được xem URL có bị thiếu dấu gạch chéo sau cùng không.)

Quy trình sửa lỗi này có nghĩa rằng các URL không có dấu gạch chéo thì vẫn hoạt động được. Nhưng qúa trình này làm tốn thời gian và tài nguyên mạng. Nếu bạn viết cả dấu gạch chéo cuối cùng lúc cần, thì trình duyệt sẽ không phải gửi yêu cầu thứ hai đến máy chủ nữa.

Một ngoại lệ chỉ là khi bạn đề cập đến URL chỉ với tên của host (như http://www.htmlhelp.com). Trong trường hợp này, trình duyệt sẽ coi như bạn muốn chỉ mục chính (“/”) từ máy chủ, và bạn không cần phải viết dấu gạch chéo ở cuối. Tuy nhiên, nhiều người cho rằng viết cả gạch chéo ở cuối vẫn là một phong cách tốt.

Xem thêm

3.8. Làm thế nào để kiểm tra lỗi?

Công cụ kiểm định HTML (validator) nhằm kiểm tra các văn bản HTML theo một định nghĩa quy củ về cú pháp HTML và rồi xuất ra một loạt các lỗi. Việc kiểm định là quan trọng để cho cơ hội lớn nhất để văn bản hoạt động đúng trên nhiều trình duyệt chưa biết (cả những trình duyệt đã có mà bạn chưa biết hay những trình duyệt trong tương lai chưa được lập).

Trình kiểm tra (HTML checker hay linter) cũng hữu ích. Những chương trình này kiểm tra các tài liệu xem có vấn đề cụ thể nào không, bao gồm một số vấn đề gây nên bởi những đánh dấu (markup) không hợp lệ và những lỗi trình duyệt thông thường. Trình kiểm tra có thể bỏ lọt một số tài liệu không hợp lệ hay bắt một số tài liệu hợp lệ.

Tất cả công cụ kiểm định về tính năng thì đều tương đương nhau; dù cách thức thông báo của chúng có thể khác nhau nhưng đều tìm thấy những lỗi giống nhau nếu file đầu vào là như nhau. Các bộ kiểm tra khác nhau được lập trình để tìm kiếm những vấn đề khác nhau, bởi vậy báo cáo do chúng tạo ra sẽ khác hẳn nhau. Ngoài ra, một số chương trình có tên công cụ kiểm định (như “CSE HTML Validator”) thực ra lại là trình kiểm tra. Chúng vẫn có ích, nhưng ta không nên nhầm với các công cụ kiểm định HTML thực sự.

Khi lần đầu kiểm tra một web site để tìm lỗi, thường nên nhận ra những vấn đề chung xuất hiện lặp đi lặp lại trong bản tài liệu của bạn. Hãy sửa những vấn đề tương tự ở các chỗ khác trong văn bản (bằng công cụ tự động nếu có thể), rồi quay lại nhận diện và sửa chữa những vấn đề còn lại.

Các trình kiểm tra kết nối thì theo tất cả những đường link trong một web site rồi thông báo những link nào không còn hoạt động nữa. Trình kiểm tra CSS thì thông báo các vấn đề liên quan đến các CSS style sheet.

Xem thêm

3.9. Một DOCTYPE là gì? Tôi sẽ sử dụng cái nào?

Căn cứ theo tiêu chuẩn HTML, mỗi tài liệu HTML đều bắt đầu bằng một lời khai báo DOCTYPE để chỉ định xem phiên bản nào của  HTML được văn bản sử dụng. Từ hồi đầu, lời khai báo DOCTYPE chỉ được dùng bởi các công cụ dựa trên SGML như kiểm chứng HTML, vốn cần để xác định phiên bản nào của HTML được tài liệu sử dụng (hoặc tuyên bố sử dụng).

Ngày nay, nhiều trình duyệt sử dụng lời khai báo DOCTYPE của văn bản để xác định xem liệu có dùng một chế độ trình bày chặt chẽ, theo chuẩn hơn, hay dùng chế độ trình bày mẹo mực để cố gắng phỏng theo những trình duyệt cũ có nhiều lỗi.

Xem thêm

Mục 4: Xuất bản Web

4.1. Tôi có thể đặt những trang web mới viết ở đâu?

Nhiều ISP (nhà cung cấp dịch vụ Internet) bán dung lượng web cho khách hàng. Dung lượng lưu trữ và băng thông sẽ được hạn chế, và cũng có thể có hạn chế khác; chẳng hạn nhiều nhà cung cấp không cho phép khách hàng sử dụng dung lượng đó để kinh doanh.

Có những công ti và cá nhân mời dung lượng web “miễn phí”. Đa số họ đều được hỗ trợ kinh phí bằng những thông tin qủa cáo xuất hiện trên trang web của tác gỉa. Thường có những điều hạn chế, cũng như dịch vụ hosting do ISP cung cấp cho khách hàng.

Cũng có nhiều nhà cung cấp dung lượng web (tức là cung cấp sự hiện hữu); họ sẽ bán cho bạn dung lượng trên máy chủ của họ. Gía thành có nhiều mức từ US$1 mỗi tháng đến US$100 hoặc hơn mỗi tháng, tùy theo nhu cầu. Các dung lượng web không-ảo (non-virtual) thường là loại rẻ nhất; họ cung cấp một URL như: http://www.webhost.example/yourname/ Thêm một ít tiền, cộng với chi phí đăng kí một tên miền, bạn có thể nhận dung lượng web ảo (virtual), vốn cho phép bạn có một URL như http://www.yourname.example/.

Nếu bạn có kết nối lâu dài đến Internet, chẳng hạn như đường dây thuê bao từ nhà mạng (ISP) thì bạn có thể cài đặt một httpd và vận hành máy chủ Web của riêng mình. Có một số máy chủ Web sẵn cho hầu hết các nền tảng hệ thống khác nhau.

Nếu bạn chỉ muốn chia sẻ thông tin với các người dùng địa phương khác, hay với mọi người qua mạng nội bộ LAN hay mạng diện rộng WAN, bạn có thể chỉ cần có thể đặt các file HTML bạn viết lên mạng LAN cho mọi người cùng truy cập; hoặc nếu mạng LAN chỗ bạn hỗ trợ TCP/IP thì có thể cài đặt một máy chủ Web vào máy tính cá nhân của bạn.

Xem thêm

4.2. Làm thế nào để lấy được tên miền cho riêng mình?

Tổ chức Internet Corporation for Assigned Names and Numbers (ICANN) duy trì một danh sách các điểm đăng kí được cấp phép. Bất kì công ti nào trong danh sách này cũng có thể đăng kí một tên miền cho bạn.

4.3. Làm thế nào để chặn những quảng cáo từ nhà cung cấp dịch vụ của tôi?

Hãy kiểm tra thỏa thuận điều khoản dịch vụ (Terms of Service, TOS) với nhà cung cấp dịch vụ cho bạn. Hầu như trong đó đều ngăn cấm việc can thiệp vào những thông tin quảng cáo mà họ lồng vào các trang web của bạn. Nếu bạn tự tiện dùng mẹo nào đó để chặn những quảng cáo như vậy thì dịch vụ hosting của bạn có thể sẽ xóa bỏ tài khoản của bạn vì đã vi phạm điều khoản nêu trên.

Tuy vậy, cũng có những lựa chọn khác. Một số nhà dịch vụ hosting sẽ xóa bỏ quảng cáo nếu bạn trả một khoản phí nhỏ hàng tháng. Một số khác sẽ xóa bỏ những quảng cáo bật ra mặc định nếu bạn tự bổ sung các banner tĩnh.

4.4. Tôi có thể công bố site của mình ở đâu?

4.5. Có cách nào để được chỉ mục tốt hơn từ những máy tìm kiếm không?

Không có một kĩ thuật đơn lẻ nào, nhưng một vài điều sau có thể giúp bạn.

  • Các máy tìm kiếm đặt chỉ mục cho phần nội dung chữ trong site của bạn; bởi vậy hãy dùng một <TITLE>, có ý nghĩa, dùng các tiêu đề mục có ý nghĩa (<H1>, <H2>, v.v.), và đặt tiêu đề ALT có ý nghĩa cho các hình ảnh.
  • Nhiều máy tìm kiếm bỏ qua các khung (frame), cho nên hãy tránh dùng khung; và đảm bảo rằng bạn cung cấp nội dung NOFRAMES có ích trong trường hợp phải dùng khung.
  • Đa số máy tìm kiếm bỏ qua các map hình ảnh (cách quy định từng phần hình ảnh ứng với từng nội dung riêng), các biểu mẫu (form), và JavaScript; bởi vậy hãy đảm bảo rằng việc di chuyển trên site của bạn không phụ thuộc vào những cách thức trên. Hãy đặt các đường link thường để di chuyển trên site. Hãy tránh dùng META refresh, vì nhiều máy tìm kiếm sẽ đánh gía thấp những site dùng cách này (META refresh thường được dùng để đối phó với các máy tìm kiếm).
  • Chương trình đặt chỉ mục của một số máy tìm kiếm (bao gồm AltaVista và Infoseek) cũng sẽ tính tới những thẻ <META NAME="keywords" CONTENT="..."> nào xuất hiện trong phần <HEAD> thuộc văn bản của bạn. Tuy nhiên, các từ khóa META đã từng được dùng để “lừa” các máy tìm kiếm, nên rất nhiều máy sẽ bỏ qua danh sách từ khóa của bạn trong trường hợp một từ khóa bị lặp lại qúa nhiều. Lúc viết bài này, mức độ “qúa nhiều” có nghĩa là “hơn 7 lần” đối với một số máy thông dụng, nhưng mức này có thể sẽ bị thay đổi trong tương lai vì những chương trình đặt chỉ mục sẽ được điều chỉnh để tránh các mẹo lừa.
  • Nếu bạn đưa một thẻ <META NAME="description" CONTENT="..."> vào trong phần <HEAD> của các văn bản bạn viết, thì một số máy tìm kiếm sẽ dùng nội dung trong thẻ này làm lời mô tả website của bạn khi hiển thị kết qủa tìm kiếm. Điều này sẽ không ảnh hưởng đến thứ hạng tìm kiếm, nhưng có thể giúp cho những người tìm kiếm hiểu được website của bạn làm gì khi họ tìm thấy kết qủa đến site của bạn.

Thuộc tính CONTENT của các từ khóa META và các thẻ mô tả trong đó có thể chứa đến 1022 kí tự, nhưng không có đánh dấu gì ngoài các thực thể.

Bạn có thể muốn xem trước website của bạn bằng một trình duyệt chữ kiểu như Lynx, để hình dung xem website của bạn hiện ra như thế nào ở máy tìm kiếm.

Sau cùng, hãy lưu ý rằng một số máy tìm kiếm lờ đi những website được mở (host) bởi các dịch vụ host miễn phí thông dụng. Một số máy tìm kiếm khác chỉ đánh chỉ mục một số lượng văn bản nhất định trên mỗi server, vì vậy khách hàng nào đặt dịch vụ miễn phí trước sẽ được đánh chỉ mục còn sau này có thể bị bỏ qua.

Xem thêm

4.6. Làm thế nào để tránh cho website của tôi khỏi bị đánh chỉ mục bởi máy tìm kiếm?

Giao thức “Robots Exclusion Protocol” cho phép admin của các Web site chỉ định những phần thuộc website của họ khỏi bị robot ghé thăm, bằng cách tạo một file văn bản /robots.txt .

Thẻ META trong đó cho phép tác gỉa HTML chỉ định xem liệu robot có thể đánh chỉ mục văn bản không, và liệu các robot có truy được những URL khác từ văn bản không. Thẻ META robot thì không cần quyền admin server.

Xem thêm

4.7. Làm thế nào để điều hướng người truy cập đến trang khác?

Cách tin cậy nhất là đặt cấu hình máy chủ để nó gửi đi chỉ dẫn điều hướng khi URL cũ được yêu cầu. Lúc đó trình duyệt sẽ tự động nhận lấy URL mới. Đây là cách nhanh nhất và hiệu quả nhất, và cũng là cách duy nhất được đề cập trong bài hỏi-đáp này mà có thể thuyết phục được các robot đặt chỉ mục để chúng gạch bỏ URL cũ đi. Chi tiết cấu hình như thế nào, hãy hỏi admin quản lý server hay tài liệu hướng dẫn (với các server NCSA hay Apache, cần dùng một lệnh Redirect ở .htaccess).

Nếu bạn không thể đặt điều hướng, thì vẫn còn những khả năng khác. Những cách như vậy đều “yếu” hơn vì chúng bảo máy tìm kiếm rằng vẫn còn trang web ở vị trí cũ chứ không phải là trang được chuyển đến một vị trí mới. Nhưng nếu bạn không thể cấu hình một điều hướng ở máy chủ của mình, thì có hai cách làm thay thế sau:

  • Lập nên một trang web đơn gỉan với dòng chữ kiểu như “This page has moved to http://new.url/ — please adjust your bookmarks.” (Trang web này đã được chuyển đến … — hãy sửa lại đánh dấu trang của bạn.)
  • Một tag META Refresh không phải lúc nào cũng làm việc với mọi browser và có thể làm hỏng nút “back”. Chẳng hạn:<meta http-equiv="Refresh" content="[x]; URL=[newURL]"> thì sẽ tải [newURL] sau [x] giây. Cái này phải được đặt vào HEAD của văn bản. Song nếu bạn làm vậy, hãy kèm thêm một dòng chữ “Document moved to [newURL]” (Văn bản được chuyển đến … ” với các trình duyệt khác.

Xem thêm

4.8. Làm thế nào để bảo vệ website của tôi bằng mật khẩu?

Việc bảo vệ bằng mật khẩu được thực hiện qua cơ chế chứng thực HTTP (authentication). Chi tiết cách cấu hình hóa khác nhau tùy từng máy chủ, bởi vậy bạn cần đọc đoạn chứng thực của hướng dẫn server đang dùng. Hãy liên hệ với người quản trị server nếu cần trợ giúp.

Các đoạn mã lệnh mật khẩu JavaScript chỉ là mặt tiền của bảo mật. Ở cấp độ nền tảng, chúng hoạt động theo một trong 2 cách. Một số mã lệnh biến đổi mật khẩu thành một URL; điều này giữ bảo mật cho văn bản qua việc giới hạn số người biết URL đó. Một số mã lệnh lại kiểm tra mật khẩu rồi đến một URL cụ thể khác, vốn bảo vệ văn bản khỏi bị xem bởi những người không biết xem mã nguồn JavaScript để tìm URL của văn bản đó. Cả hai cách đều không thật bảo mật.

Xem thêm

4.9. Làm thế nào để ngăn không cho các trang của tôi bị lưu tạm (cache)?

Các trình duyệt đều lưu tạm các văn bản; chúng lưu trữ những bản sao của văn bản vào máy để tăng tốc những lần truy cập lên tiếp đến những văn bản mà không bị thay đổi. Hơn nữa, nhiều trình duyệt còn được cấu hình để sử dụng các khu lưu trữ ủy quyền công cộng (public proxy) vốn phục vụ nhiều người dùng (chẳng hạn tất cả khách hàng của một dịch vụ ISP, hay tất cả những nhân viên đằng sau tường lửa một công ty). Để kiểm soát một cách hiệu qủa cách mà văn bản được lưu tạm, bạn cần cấu hình hóa máy chủ để gửi những header HTTP phù hợp.

Header có tên Expires coi như được hiểu bởi tất cả khu lưu trữ. Văn bản đã lưu sẽ được tự động lấy lại một khi nó đã bị hết hạn. Header Expires hoạt động dựa trên ngày giờ  HTTP, vốn là giờ chuẩn Anh Quốc (Greenwich Mean Time, GMT), chứ không phải giờ địa phương.

HTTP 1.1 giới thiệu header tên Cache-Control, để cung cấp sự linh hoạt hơn trong việc báo cho kho lưu (cache) cách xử lý văn bản thế nào.

Những chi tiết về cấu hình hóa sẽ khác nhau tùy server, nên bạn phải kiểm tra lại tài liệu server hiện dùng.

Header có tên Pragma nói chung không có hiệu lực gì bởi ý nghĩa của nó vẫn chưa được chuẩn hóa và chỉ số ít kho lưu cache ủng hộ nó. Việc sử dụng các phần tử <META HTTP-EQUIV=...> trong những tài liệu HTML nói chung cũng vô hiệu; một số trình duyêt có thể ủng hộ những đánh dấu như vậy, song những kho lưu cache khác sẽ phớt lờ hoàn toàn.

Xem thêm

4.10. Làm thế nào để vô hiệu hóa các tùy chọn kích chuột phải trong trình duyệt? Làm thế nào để bảo vệ mã nguồn trang web, những hình ảnh tôi đăng lên v.v. khỏi bị sao chép?

Bằng HTML thì bạn không thể can thiệp vào tùy chọn kích chuột phải trong trình duyệt được. Song đôi khi dùng JavaScript thì có thể:

  • Những mã lệnh này làm phiền những khách thăm nào đã mất quyền truy cập sẵn sàng vào các chức năng menu ngữ cảnh thông thường trong trình duyệt họ dùng (chẳng hạn như “Open in new window” hay “Bookmark link”). Các mã lệnh này cũng có thể can thiệp vào những đặc điểm như cử chỉ của chuột.
  • Không có gì (kể cả những đoạn mã lệnh) có thể ngăn cản người khác copy mã nguồn hay hình ảnh. Trình duyệt không thể hiện thị văn bản mà không có mã nguồn hay hình ảnh được, bởi vậy máy chủ web của bạn phải gửi mã lệnh và hình ảnh về trình duyệt. Ngay cả khi không có những tính năng lưu (“save”) trong các trình duyệt hiện này, người khác vẫn có thể lấy được các mã nguồn hay hình ảnh của bạn từ kho lưu cache của trình duyệt, hoặc bằng cách dùng công cụ nào đó để yêu cầu máy chủ, hoặc dùng phần mềm chụp màn hình để sao chép hình ảnh.
  • Những mã lệnh đó không làm gì nếu JavaScript bị vô hiệu hóa hay chưa có sẵn trên máy, hay khi quyền truy cập JavaScript trong sự kiện kích chuột phải bị vô hiệu hóa, hoặc với máy tính không có chuột hoặc chỉ có chuột loại 1 nút.

Xem thêm

4.11. Làm thế nào để ẩn giấu URL của tôi?

Bạn không thể. URL là phần cơ bản để di chuyển trong WWW. URL rất cần thiết để trình duyệt có thể lấy được văn bản của bạn về. Không thể ẩn URL của một tài nguyên/văn bản từ trình duyệt được.

Nói vậy, song cũng có thể phần nào che khuất các URL bằng một chức năng lỗi của các khung (frame).

Xem thêm

4.12. Làm thế nào để phát hiện xem loại trình duyệt nào được dùng?

Nhiều trình duyệt tự nhận diện chúng khi chúng yêu cầu một văn bản. Một đoạn mã CGI sẽ có thông tin này sẵn trong biến môi trường HTTP_USER_AGENT, và trình duyệt có thể dùng nó để gửi ra một phiên bản của tài liệu được tối ưu hóa cho loại trình duyệt đó.

Lưu ý rằng không phải tất cả các trình duyệt đều có thể nhận diện đúng về chúng. Chẳng hạn, Microsoft Internet Explorer tự nhận nó là Netscape
Navigator, và nhiều trình duyệt khác lại nhận chúng là Microsoft Internet Explorer.

Và dĩ nhiên, nếu như một cache proxy lưu giữ thông tin phiên bản quy định cho một trình duyệt này thì người khác với trình duyệt khác thì lại lấy phải phiên bản đó chứ không phải phiên bản dành cho trình duyệt khác.

Vì lí do này hay lí do khác, việc chơi trò đoán trình duyệt đều không phải ý kiến hay.

Xem thêm

4.13. Làm thế nào để lấy được địa chỉ email của khách ghé thăm?

Bạn không thể. Dù mỗi yêu cầu tài liệu thường được ghi lại cùng với tên hoặc địa chỉ của host từ xa, nhưng tên thực của người dùng thường không bao giờ được ghi lại cùng. Điều này chủ yếu là để đảm bảo hiệu năng,vì nếu ghi lại như vậy sẽ đòi hỏi máy chủ phải sử dụng giao thức nhận diện (ident) để xem ai đang ở đầu kia. Việc này làm mất thời gian. Và nếu một ủy quyền lưu trữ thực hiện yêu cầu này thì bạn không thu được điều gì có nghĩa lý cả.

Nhưng hãy dừng lại để nghĩ một chút … có thực bạn muốn tất cả những website nào bạn ghé thăm đều biết được địa chỉ email của bạn không? Hãy tưởng tượng hàng đống những thư từ cảm ơn bạn sẽ nhận được. Nếu bạn ghé thăm 20 website thì bạn sẽ nhận được ít nhất 20 email ngày đó, và chắc chắn sẽ thêm những email do họ mời chào bạn ghé thăm tiếp. Sẽ thật là cơn ác mộng cũng như sự xâm phạm quyền riêng tư!

Ở Netscape 2.0, có thể tự động nộp (submit) một mẫu (form) với mailto là hành động, bằng JavaScript. Việc này sẽ gửi email đến chủ tài liệu, với địa chỉ mà người khách đã cấu hình ở dòng From. Dĩ nhiên, đó có thể là  “mickey.mouse@disney.com”. Điều này đã được sửa trong Netscape 2.01.

Cách đáng tin cậy nhất là lập một form, đề nghị người khách điền địa chỉ email vào. Để tăng khả năng họ thực hiện, có thể đền đáp họ bằng cách này hoặc cách khác.

4.14. Tại sao thông điệp mà tôi chỉnh sửa từ 404 Not Found lại không xuất hiện?

Nếu không có trình duyệt nào hiển thị được thông điệp 404 Not Found mà bạn đã điều chỉnh, thì có lẽ máy chủ của bạn chưa được cấu hình đúng.

Nếu chỉ có Internet Explorer phớt lờ thông điệp 404 Not Found của bạn, thì bạn đã bị boắt bởi cơ chế “friendly” HTTP error messages của IE. Khi một phản hồi HTTP đặc biệt (chẳng hạn một phản hồi 404 Not Found) ngắn hơn 512 bytes, thì Internet Explorer sẽ thay thế phản hồi từ server bằng phản hồi riêng của mình. Là người dùng Internet Explorer, bạn có thể vô hiệu hóa đặc điểm này trong mục tùy chọn “Advanced”. Là tác gỉa viết web, biện pháp của bạn chỉ còn là viết thông điệp 404 Not Found dài hơn.

Mục 5: Thiết kế Web

5.1. Làm thế nào để gói một file vào trong file khác?

Bản thân HTML thì không cho cách nào gói nội dung một file vào file khác một cách trơn tru.

Việc gói bằng cách “động” theo đúng nghĩa để đưa một tài liệu HTML (dù dùng bộ kí tự  “charset” riêng) vào trong tài liệu  khác thì có thể thực hiện bằng phần tử OBJECT, nhưng do hạn chế của các phiên bản trình duyệt đang sử dụng, có vẻ như chưa nên trông cậy vào tính năng này khi thao tác với nội dung quan trọng. Với IFRAME cũng tương tự.

Hai cách phổ biến để bao gói trơn tru nội dung một file vào trong file khác ở WWW là preprocessing inclusion (bao gói tiền xử lý) và server-side inclusion (bao gói phía máy chủ). Công cụ tiền xử lý sẽ chuyển đổi mã nguồn của nó thành tài liệu HTML “thuần chủng” mà bạn xuất bản lên máy chủ. Trái lại, những tài liệu có dùng bao gói phía máy chủ thì được xử lý mỗi khi tài liệu được lấy về từ server.

Các kĩ thuật tiền xử lý thì có C preprocessor và các phương pháp xử lý văn bản chữ tổng quát khác, cùng một số công cụ xử lý riêng cho HTML.

Cẩn thận kẻo làm cho “mã nguồn” bạn viết trở nên không khả chuyển giữa các hệ thống. Ngoài ra, HTML chỉ có thể được kiểm định sau khi tiền xử lý, bởi vậy chu trình tiêu biểu “Edit, Check, Upload” (biên tập, kiểm tra, tải lên) trở thành “Edit, Preprocess, Check, Upload” ((biên tập, tiền xử lý, kiểm tra, tải lên). (Ở đây, “Kiểm tra” bao gồm mọi công đoạn bạn dùng để xem trước trang web: thẩm định, lint, quản lý rà soát (management walk-through ?) v.v.; còn “tải lên” có nghĩa là bất kì việc làm của bạn để xuất bản trang web mới lên máy chủ web.)

Một kĩ thuật tiền xử lý mạnh mẽ và linh hoạt hơn nhiều là dùng một bộ xử lý SGML (như gói SP) để phát sinh nên mã HTML của bạn; sản phẩm có thể tự thẩm định được.

Các ví dụ cho việc bao gói phía máy chủ bao gồm Server Side Includes (SSI, được hỗ trợ bởi Apache, NCSA, và các máy chủ khác), và ActiveServer Pages của Microsoft (ASP, hỗ trợ bởi MS IIS). Khâu xử lý xảy ra tại thời điểm những tài liệu được thực sự lấy về. Một cách bao gói tiêu biểu như sau:

<!--#include virtual="/urlpath/to/myfile.htm" -->

Tuy vậy, hãy chắc rằng bạn đã tham khảo tài liệu về máy chủ bạn dùng, vì các phiên bản sẽ hơi khác nhau về chi tiết. Trong cách làm trên, toàn bộ dẫn hướng sẽ được thay thế bởi nội dung của file cụ thể.

Sử dụng cách bao gói phía máy chủ (một công cụ tiềm năng mạnh) chẳng qua là một cách đặt những file tĩnh như các đoạn đầu/cuối (header/footer) có ảnh hưởng rõ rệt đến tốc độ truy cập và tải lượng (load) trên máy chủ, và tốt hơn là ta tránh dùng cách này trên những server chịu tải nặng. Nếu bạn dùng cách này, hãy thử làm cho kết qủa trở nên lưu trữ được bằng cache (chẳng hạn qua “XBitHack full” trên Apache; đặt các thuộc tính của đối tượng “Response” trong ASP).

Việc thẩm định HTML đúng đắn trong cách bao gói phía máy chủ chỉ thực hiện được sau khi xử lý phía máy chủ được hoàn thành (chẳng hạn bằng việc dùng một on-line validator (trình thẩm định trực tuyến) có khả năng lấy tài liệu từ máy chủ).

Một cách làm khác là tạo một web site có cơ sở dữ liệu “chống lưng”, như được mô tả trong bài Philip and Alex’s Guide to Web Publishing. Một thay đổi đơn giản trong bản mẫu cơ sở dữ liệu sẽ lập tức thay đổi toàn bộ web site.

Sau cùng, lưu ý rằng nếu các file bao gói có chứa văn bản chữ thuần túy thì cần công sức để chuyển các kí tự “&” và “<” (trong file chữ thuần túy) thành các thực thể “&amp;” và “&lt;” (trong tài liệu HTML).

Xem thêm

5.2. Làm thế nào để chạy một chương trình trên trang web của tôi?

Các trình duyệt không cho phép tác gỉa web tải vè và chạy các chương trình tùy ý trên hệ thống máy khách, bởi vậy sẽ có rủi ro an ninh không chấp nhận được. Người dùng sẽ không được thoải mái truy cập các web site không đáng tin cậy.

Bạn có thể đặt link đến một file chương trình chạy được, cho phép người dùng tải nó về. Sau đó người dùng có thể lựa chọn chạy chương trình, tất nhiên là trên hệ điều hành của họ, nếu như họ không lo về khoản virus phần mềm.

Nếu bạn muốn chạy chương trình ngay trên máy chủ, thì hãy kiểm tra tài liệu máy chủ hiện dùng về chi tiết cấu hình các chương trình phía máy chủ.

Khi công cụ văn lệnh phía máy khách (client-side scripting, như JavaScript) được cho phép hoạt động trên hệ thống khách (tức là trên trình duyệt), thì nó có thể dùng để thực hiện tính toán và xử lý số liệu cũng như diện mạo của trang web.

Nếu bạn muốn mở một trình xem file cụ thể cho một loại file nhất định, chẳng hạn chương trình Adobe Acrobat Reader khi người khách đi theo link đến file PDF, thì điều này cần được thực hiện tự động bởi trình duyệt của khách, tất nhiên là nó phải được cấu hình đúng. Bạn chỉ cần cấu hình hóa máy chủ để gửi file đi với kiểu MIME đúng.

Xem thêm

5.3. Tôi nên dùng thứ gì, &tênthựcthể; hay &#consố; ?

Trong HTML, các kí tự có thể được biểu diễn theo 3 cách:

  1. kí tự được đặt mã đúng, trong phần encoding chỉ định bởi thuộc tính “charset” thuộc header “Content-type:”;
  2. một thực thể kí tự (&tênthựcthể;), từ chỉ định HTML phù hợp (HTML 2.0/3.2, HTML 4, v.v.);
  3. một tham chiếu kí tự số (&#number;) để chỉ định tham chiếu Unicode đến kí tự mong muốn. Chúng tôi khuyên bạn dùng tham chiếu theo số thập phân; còn các tham chiếu theo hệ thập lục phân thì ít được hỗ trợ phổ biến.

Về lý thuyết thì các cách này đều đúng và tương đương. Trên thực tế, sẽ khó hơn do sự tiện lợi của tác gỉa web và sự hỗ trợ có hạn từ phía trình duyệt.

HTTP là một giao thức đảm bảo “8-bit đúng”, bạn có thể thoải mái gửi đi các kí tự 8-bit hay nhiều byte, trong các quy cách coding được hỗ trợ bởi trình duyệt.

A. HTML 2.0/3.2 (Latin-1)

Đến giờ dường như không có lý do nào thật thuyết phục để chọn &entityname; hay &#number;, bởi vậy bạn cứ chọn cái nào bạn thấy tiện hơn.

Nếu bạn tự tin có thể xử lý các kí tự mã hóa 8-bit thì điều này cũng tốt, có lẽ là thích hợp nhất để viết các thứ tiếng châu Âu có “dấu”. Hãy cẩn thận nếu lập web trên các hệ không dựa theo chuẩn ISO-8859 như Mac, Psion, máy tính lớn IBM (mainframe) v.v. vì khi đó kĩ thuật tải lên sẽ phải bàn giao một tài liệu được mã hóa đúng đến máy chủ. Việc dùng & sẽ tránh được những vấn đề như vậy.

B. Một cách khác hơn Latin-1

Trong những cách mã hóa như ISO-8859-7 Greek (Hy Lạp), koi8-r Russian Cyrillic (Nga), và Trung-Nhật-Hàn (CJK), việc dùng những kí tự được mã hóa là cách được hỗ trợ phổ biến và tiến hành nhiều nhất.

Dù không được đề cập bởi HTML 3.2, nhưng các trình duyệt đã hỗ trợ điều đó khá phổ biến được một thời gian rồi; và đó là một lựa chọn hợp lệ trong chỉ định HTML 4–hãy dùng một công cụ thẩm định như the WDG HTML Validator hay the W3C HTML Validation Service vốn hỗ trợ HTML 4 để hiểu được những cách mã hóa khác nhau cho kí tự.

Việc hỗ trợ từ phía trình duyệt cho các kí tự mã hóa có thể tùy thuộc vào cấu hình hóa và nguồn font. Trong một số trường hợp, các chương trình phụ trợ hay “add-in” sẽ hỗ trợ font ảo cho trình duyệt.

Những chương trình “add-in” trước đây được dùng để hỗ trợ tham chiếu dạng số đến những giao thức mã 15-bit hay 16-bit như Chinese Big5 hay Chinese GB2312.

Về lý thuyết bạn có thể bao gói được không chỉ những kí tự được mã hóa mà còn cả những tham chiếu số Unicode, song sự hỗ trợ phía trình duyệt nhìn chung đều kém. Các tham chiếu số đến các mã hóa “chỉ định theo bộ kí tự” có thể sẽ hiện đúng kí tự trên một số trình duyệt, song đây là cách làm sai và nên tránh không dùng. Các thực thể kí tự cũng có thể gây rắc rối, bên cạnh những kí tự có ý nghĩa trong HTML như &lt;, &amp; v.v.

C. Quốc tế hóa bằng HTML 4

Những phiên bản gần đây của các trình duyệt thông dụng đều hỗ trợ một trong những đặc điểm này, song tại lúc tác gỉa viết bài dường như sẽ không hay nếu chỉ dựa vào điều trên khi viết web cho giới độc gỉa rộng rãi.

Xem thêm

5.4. Tôi nên viết thẻ bằng chữ in hay chữ thường?

Trong HTML, tên các phần tử và thuộc tính trong các thẻ đều không phân biệt chữ in/thường, nên chẳng quan trọng. Việc lựa chọn chỉ theo phong cách và thói quen từng người. (Bạn có thể nhận thấy rằng bài hỏi-đáp này còn không thống nhất cách viết chữ in.) Nhiều người ưa dùng chữ in hơn để cho các thẻ hiện rõ trên nền văn bản, và khiến cho việc tìm kiếm các phần tử và tên thuộc tính bằng công cụ Search được dễ dàng hơn. Người khác lại thích dùng chữ thường để các thẻ hòa lẫn vào nội dung văn bản hơn, và XHTML cũng yêu cầu vậy.

Lưu ý rằng một số gía trị thuộc tính thì lại phân biệt chữ in-thường. Chẳng hạn, <OL TYPE="A"><ol type="A"> là giống nhau, nhưng <ol type="a"> thì khác cả hai. Để nói rõ hơn thì rất nên dùng đúng thuật ngữ. Trong ví dụ này, OL là phần tử, TYPE là tên thuộc tính, còn A hay a là gía trị thuộc tính. Thẻ là <OL TYPE="A">.)

Các tên thực thể như &nbsp; đôi khi được nói nhầm là thẻ. Chúng có phân biên chữ in-thường. Chẳng hạn cả hai &Eacute;&eacute; đều hợp lệ và là hai thứ khá nhau. Và &nbsp; là thực thể hợp lệ còn &NBSP; thì không.

Lưu ý rằng XHTML yêu cầu tất cả các phần tử và tên thuộc tính phải được viết chữ thường.

5.5. Tôi nên viết web cho cỡ màn hình nào?

HTML không phụ thuộc vào cỡ màn hình. Thường thì dòng chữ dài qúa bề rộng phần hiển thị sẽ được trình duyệt tự ngắt xuống dòng. (Lưu ý rằng các trình duyệt đồ họa thường được dùng với các cửa sổ nhỏ hơn bề rộng toàn màn hình.)

Các dòng được định dạng trước (chữ giữa các phần tử <PRE>) chỉ nên vượt qúa 70 kí tự nếu nội dung bắt buộc vậy. Các dòng dài sẽ hình thành nên những chố ngắt dòng xấu xí treen các trình duyệt chế độ chữ, và sẽ buộc phải dùng đến thanh trượt ngang trên các trình duyệt đồ họa. Người đọc rất ghét trượt ngang, trừ khi họ nhận thấy rằng nội dung buộc phải như vậy.

Các hình ảnh không thể ngắt xuống dòng được, nên bạn phải cẩn thận với chúng. Dường như rằng một bề rộng 600 pixel (điểm ảnh) là hợp lý; bất kì hình nào rộng hơn sẽ khiến cho một số người phải trượt ngang mới nhìn thấy hết phần bên phải của hình đó. Số người như vậy càng tăng nếu hình càng rộng. (Lưu ý rằng không phải ai xem mạng cũng mở cửa sổ toàn màn hình!)

Những người dùng MSN TV (trước đây là WebTV) không có cách nào trượt ngang, bởi vậy bất kì hình nào qúa 544 pixel sẽ bị nén lại bởi trình duyệt của họ. Các thiết bị khác (đặc biệt là thiết bị di động) sẽ còn hạn chế hơn về tính năng.

Việc dùng các bảng để trình bày, đặc biệt khi các ô có độ rộng cố định, là một cách làm đơn giản thông dụng để tránh cho các trang khỏi phải điều chỉnh độ rộng theo cửa sổ.

Xem thêm

5.6. Tại sao trang web tôi viết thì hiển thị tốt ở trình duyệt này nhưng bị khác đi hoặc không hiển thị được ở trình duyệt khác?

Có vài khả năng.

Trước hết,  có thể bạn đã viết sai cú pháp HTML hoặc CSS. Các trình duyệt khác nhau thì cũng khác nhau về khả năng phán đoán trúng ý của bạn, và các trình duyệt khác nhau khi vấp phải lỗi cũng sẽ phục hồi theo cách khác nhau.

Thứ hai, bạn có thể có những mã lệnh  HTML và CSS hợp lệ song các trình duyệt khác nhau lại diễn giải theo cách riêng. Chẳng hạn, chỉ định CSS cho phép các trình duyệt tương thích có thể bỏ lờ đi những thuộc tính và gía trị nhất định. Hơn nữa, chỉ thị cũng không cho biết rõ rằng cần làm gì với một chuỗi các kí tự &nbsp;. Một số trình duyệt sẽ dồn chúng lại thành một dấu cách thôi; số khác thì lại để một dấu cách ứng với mỗi &nbsp;.

Thứ ba, máy chủ của bạn có thể đã gửi kiểu MIME không đúng cho một số file của bạn. Internet Explorer thì đã không đúng khi lờ đi các kiểu MIME cung cấp bởi server, do vậy đôi khi nó lại “làm điều đúng” khi máy chủ bị cấu hình hóa sai. Những trình duyệt khác thì chúy ý đúng những kiểu MIME cung cấp bởi máy chủ, bởi vậy chúng sẽ bộ lộc các cấu hình hóa sai của máy chủ. Điều này bao gồm các style sheet bên ngoài, vốn đáng bị gửi dưới dạng “text/css”.

Thứ tư, bạn đã gặp phải một lỗi của trình duyệt. Chẳng hạn, nhiều trình duyệt thông dụng xử lý CSS tốt hơn khi mà các tài liệu HTML có kèm theo các thẻ đóng tùy chọn như </p>, </li>, và </td>.

Một khả năng khác là các cài đặt tùy chọn người dùng khác nhau trong những trình duyệt.

Xem thêm

5.7. Tại sao trình duyệt lại hiển thị mã nguồn HTML của tôi?

Nếu Microsoft Internet Explorer hiển thị tài liệu của bạn một cách bình thường nhưng các trình duyệt khác chỉ hiển thị mã nguồn HTML thuần túy, thì nhiều khả năng là máy chủ web của bạn đã gửi tài liệu đi với kiểu “text/plain”. Máy chủ web của bạn cần được cấu hình hóa để gửi đi tên file đó với kiểu MIME là “text/html”. Thông thường, chỉ cần dùng đuôi file “.html” hay “.htm” là đủ.

Nếu bạn thấy biểu hiện như vậy trong qúa trình xem các tài liệu HTML trên hệ thống file thuộc Windows của bạn thì có thể rằng trình soạn thảo của bạn đã tự động thêm phần đuôi file là “.txt”. Bạn cần phải chuyển tên file từ filename.html.txt sang filename.html để cho Windows coi file đó như một tài liệu HTML.

Xem thêm

5.8. Làm thế nào để cố định URL hiển thị trên trình duyệt của người khách?

Đây là một “đặc điểm” của sử dụng khung: Trình duyệt chỉ hiện URL của tài liệu bộ khung chứ không phải của từng tài liệu khung.

Tuy nhiên, biểu hiện này có thể dễ dàng khắc phục bởi người dùng. Nhiều trình duyệt cho phép người dùng mở các đường link trong các cửa sổ riêng, đánh dấu trang tài liệu trong một khung cụ thể (thay vì trong một tài liệu bộ khung), hay đánh dấu các đường link. Bởi vậy, không có cách nào đảm bảo ngăn chặn được người dùng lấy URL của một tài liệu cụ thể.

Ngoài ra, việc ngăn người dùng không cho họ đánh dấu những tài liệu cụ thể thậm chí còn gây đối địch với người dùng. Một thẻ đánh dấu hay đường dẫn mà không đưa đến tài liệu mong muốn thì vô dụng, và thậm chí có thể bị lờ đi hoặc xóa đi.

Xem thêm

5.9. Làm thế nào để đặt các đường link dọc theo lề trái trang web của tôi?

Một cách thông dụng để làm việc này là dùng một bảng hai cột với các đường link bên cột trái và nội dung ở cột phải. Điều này thường được kết hợp với một hình nền để tạo nên một dải màu phía bên trái, dưới những đường link. Hình nền có thể xếp dọc lần lượt từ trên xuống, nhưng phải đủ rộng để không bị xếp ngang (chẳng hạn rộng 1600 điểm ảnh).

Một biến thể của cách này (vốn giảm thiểu một số vấn đề phát sinh với các bảng khi bố trí nội dung) đó là dùng bảng chỉ có 1 ô với ALIGN=”left”. Chỉ có các đường links được xếp vào trong bảng này, vì vậy sẽ dạt hết về phía trái. Còn nội dung tài liệu sẽ tự sắp xếp và lấp đầy chỗ trống bên phải và phía dưới của “bảng”. Sau đây là một ví dụ:

<table align="left">
<tr><td><!-- các link cho vào đây --></td></tr>
</table>
<!-- nội dung vào đây -->

Các bảng bài trí có thể hoàn toàn không cần đến nếu dùng CSS. Các đường link và nội dung chính được đặt trong các phần tử DIV riêng, và sau đó CSS sẽ được dùng để định vị các phần tử DIV này so với nhau. Style sheet này có thể dùng một hình nền nhỏ hơn, xếp nó về bên trái và lặp lại hình theo chiều dọc, chẳng hạn:

body { color: black;
background: white url(foo.gif) repeat-y left }

Sau cùng, một dải định vị bên trái có thể thực hiện được bằng khung. Tuy nhiên, khung có thể gây nên trục trặc và tốt nhất là tránh dùng chúng.

Xem thêm

5.10. Làm thế nào để chỉ định màu sắc?

Nếu bạn muốn những người khác xem trang web của bạn với màu sắc cụ thể thì cách làm thích hợp nhất là gợi ý các màu theo một style sheet. Cascading Style Sheet dùng các thuộc tính colorbackground-color để chỉ định màu chữ và màu nền. Để tránh xung đột giữa các màu mặc định của độc gỉa và màu do tác gỉa gợi ý thì hai thuộc tính trên luôn cần được sử dụng cùng nhau.

Với HTML, bạn có thể gợi ý các màu bằng những thuộc tính TEXT, LINK, VLINK (các đường link đã ghé thăm), ALINK (link hoạt động), và BGCOLOR (màu nền) của phần tử BODY.

Lưu ý rằng những thuộc tính trên đều bị lỗi thời ở HTML 4. Hơn nữa, nếu động đến một trong các thuộc tính trên thì tất cả thuộc tính đó phải được sử dụng cùng nhau để đảm bảo rằng màu mặc định của độc gỉa không can thiệp vào những màu được tác gỉa gợi ý. Sau đây là một ví dụ:

<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#000080">

Tác gỉa không nên dựa vào các màu chỉ định vì các trình duyệt cho phép người dùng của họ ghi đè lên những màu quy định cho tài liệu.

Xem thêm

5.11. Làm thế nào để đổi màu chữ?

Cách thích hợp nhất là sử dụng đánh dấu cấu trúc phù hợp, và gợi ý màu mong muốn bằng style sheet. Nếu bạn muốn chỉ định một màu chỉ với những trường hợp riêng của loại phần tử nào đó, thì bạn có thể dùng một lớp (class) để chỉ định những trường hợp nào là đặc biệt. Ví dụ CSS sau đây chỉ định rằng dòng chữ nhấn mạnh bằng lớp “special” phải có màu xanh (trên nền trắng):

em.special { color: green; background: white; }

Khi hiển thị theo bộ quy tắc CSS này, thì dòng chữ nhấn mạnh trong ví dụ HTML sẽ được hiển thị màu xanh

normal text <em class="special">emphasized text</em> normal text

Với HTML, phần tử FONT cũng dùng được để đề xuất các màu. Lưu ý rằng phần tử FONT bị  lỗi thời ở HTML 4. Cũng lưu ý rằng việc dùng phần tử FONT mang đến nhiều vấn đề về tính tiện dụng cùng khả năng khai thác.

Xem thêm

5.12. Làm thế nào để chỉ định màu sắc cho thanh trượt?

Trong Internet Explorer 5.5, Microsoft đã giới thiệu các thuộc tính CSS riêng cho màu sắc thanh trượt. Từ đó, những trình duyệt khác (như KDE Konqueror, Opera) cũng hỗ trợ thêm các thuộc tính này. Các thuộc tính gồm có: scrollbar-3dlight-color, scrollbar-arrow-color, scrollbar-base-color, scrollbar-darkshadow-color, scrollbar-face-color, scrollbar-highlight-color, và scrollbar-shadow-color.

Xem thêm

5.13. Làm thế nào để chỉ định font cho trang web của tôi?

Nếu bạn muốn độc gỉa xem trang web của bạn dưới một font riêng thì cách làm thích hợp nhất là đề xuất font đó với một style sheet. Các Cascading Style Sheet sử dụng thuộc tính font-family để chỉ định loại font.

Với HTML, phần tử BASEFONT có thể được dùng để sử dụng để đề xuất các font riêng cho toàn bộ tài liệu.

Với HTML, phần tử FONT cũng có thể được dùng để đề xuất những font cụ thể. Phần tử FONT phải được lặp lại trong ỗi phần tử ở cấp độ khối (block) vì nó chỉ có thể chứa các phần tử ở cấp độ cùng với dòng chữ (inline). Việc dùng phần tử FONT kéo theo nhiều vấn đề về sử dụng và truy cập.

Dù có chỉ định font với CSS hay HTML, các tác gỉa đều có khả năng gặp khó khăn khi trên máy người dùng có một font cùng tên nhưng khác hẳn. Chẳng hạn, “Chicago” có thể là một font chữ đẹp, một font hiển thị với các chữ cái lỗ chỗ, hay một font mới toanh chứa hình ảnh của các cao ốc (để tạo nên “đường chân trời”).

Ngoài ra, tác gỉa cũng cần dùng các font (hoặc nhóm font tương đồng) thông dụng trên nhiều máy, hoặc phải cung cấp các font động cho người đọc. Độc gỉa nào không cài sẵn các font cụ thể như vậy, hay không tải về những font động mà tác gỉa cung cấp, thì sẽ chỉ nhìn thấy font mặc định. Một số trình duyệt có thể dùng font thay thế khó coi hơn các font mặc định ở máy, trong trường hợp không tìm thấy font mà tác gỉa nêu tên. Internet Explorer thì hỗ trợ các font nhúng bằng công cụ Web Embedding Fonts Tool của Microsoft (WEFT).

Xem thêm

Mục 6: Hyperlink (siêu liên kết)

6.1. Tạo một liên kết bằng cách nào?

Hãy dùng một phần tử neo (anchor). Thuộc tính HREF chỉ định URL của tài liệu mà bạn muốn liên kết tới. Trong ví dụ sau, dòng chữ “Web Authoring FAQ” được kết nối đến <URL:http://www.htmlhelp.com/faq/html/&gt;:

<A HREF="http://www.htmlhelp.com/faq/html/">Web Authoring FAQ</A>

Xem thêm

6.2. Làm thế nào để liên kết đến điểm giữa của một tài liệu HTML?

Trước hết, hãy gắn nhãn chỗ đích đến của liên kết. Cách làm cũ là dùng neo với thuộc tính NAME. Chẳng hạn:

<h2><a name="section2">Mục 2: Beyond Introductions</a></h2>

Cách hiện đại là gắn nhãn đích đến bằng một thuộc tính ID. Chẳng hạn:

<h2 id="section2">Mục 2: Beyond Introductions</h2>

Tiếp theo là đặt liên kết tới điểm đích đã gắn nhãn. URL chính là URL của tài liệu, với “#” và gía trị của thuộc tính NAME hoặc ID đi cùng. Tiếp tục ví dụ nêu trên, ở bất kì chỗ nào trong cùng tài liệu bạn có thể viết:

<a href="#section2">đi đến Mục 2</a>

Tương tự, trong một tài liệu khác bạn có thể viết:

<a href="book.html#section2">đến Mục 2 trong cuốn sách của tôi</a>

6.3. Làm thế nào để tạo liên kết mở ra cửa sổ mới?

<a target="_blank" href=...> sẽ mở ra một cửa sổ mới, không có tên.

<a target="example" href=...> mở ra một cửa sổ mới có tên “example”, miễn là trước đó chưa có cửa sổ hay khung nào trùng với tên này.

Lưu ý rằng thuộc tính TARGET không thuộc về HTML 4 Strict. Trong HTML 4 Strict, các cửa sổ mới chỉ có thể tạo được bằng JavaScript. (Xem mục hỏi đáp tiếp theo.) Ngoài ra, các liên kết mở cửa sổ mới sẽ có thể làm độc gỉa khó chịu nếu không nhằm mục đích hợp lý (mà điều này lại theo ý kiến chủ quan của độc gỉa).

6.4. Làm thế nào để tạo nên liên kết mở ra một cửa sổ mới với kích cỡ định trước?

Bằng HTML, không cách nào có thể kiểm soát được kích thước (hay cách bài trí hoặc đặc điểm khác) của một của sổ mới. Tuy nhiên, bằng JavaScript bạn có thể chỉ định những chi tiết như vậy khi dùng hàm window.open(). Bắt đầu từ một liên kết HTML thông thường (có thể là cái liên kết mở cửa sổ mới của mục hỏi-đáp trước). Sau đó dùng thuộc tính ONCLICK để bật ra một cửa sổ mới với kiểu dáng mong muốn cho độc gỉa có trình duyệt hỗ trợ và đã bật JavaScript. Ví dụ sau đây quy định một cửa sổ  “popup” có kích cỡ 300 pixel × 150 pixel.

<a href="example.html" target="popup" onclick="window.open('example.html', 'popup', 'width=300,height=150'); return false">View Foo</a>

Bằng cách này, JavaScript có thể chỉ định một cửa sổ mới với dáng vẻ như mong muốn, mà không ngăn cản truy cập khi JavaScript không được hỗ trợ hoặc bị vô hiệu hóa.

Bên cạnh những tham số heightwidth (vốn nhận gía trị là số pixel), thì tham số thứ ba cho window.open() có thể bao gồm các tham số boole sau đây (nhận gía trị "yes" hoặc "no"): directories, location, menubar, resizable, scrollbars, status, and toolbar. Các tham số boole này kiểm soát sự hiện diện của các thành phần tương ứng trong cửa sổ được tạo nên.

Xem thêm

6.5. Làm thế nào để cho người dùng tải về một file từ trang web của tôi?

Một khi file đã được tải lên máy chủ, bạn chỉ cần dùng một thẻ tham chiếu neo để liên kết đến nó. Một ví dụ như là:
<a href="../files/foo.zip">Download Foo Now! (100kb ZIP)</a>

Có thể máy chủ cần được cấu hình với các loại file khác nhau. (Xem mục hỏi đáp tiếp theo.)

Xem thêm

6.6. Làm thế nào để buộc trình duyệt phải tải về một file? Làm thế nào buộc trình duyệt bản thân nó phải hiển thị hoặc chạy một file? Làm thế nào để buộc file phải được mở bằng một chương trình cụ thể?

Bạn không thể chắc làm được bất cứ việc nào trong số trên, bởi Web không hoạt động theo cách đó.

Khi trình duyệt yeu cầu một tài liệu (siêu văn bản, hình ảnh, âm thanh, đa phương tiện, v.v.) thì máy chủ sẽ báo trình duyệt về kiểu của file đó. Máy chủ cần được cấu hình hóa để nhận diện đúng kiểu của dữ liệu văn bản.

Sau đó trình duyệt sẽ quyết định phải làm gì với nó. Các trình duyệt khác nhau có thể hiển thị, và cũng được cấu hình hóa để hiển thị, các dạng tài liệu khác nhau. Các trình duyệt thường được cấu hình hóa những kiểu file khác bằng cách dùng các trình trợ giúp thích hợp hoặc bằng cách đề nghị người dùng lưu tài liệu vào hệ thống file.

RFC 2183 mô tả header Content-disposition, vốn có thể được dùng để gợi ý cách trình duyệt xử lý tài liệu thế nào. Gía trị “inline” gợi ý rằng tài liệu cần được tự động hiển thị, và gía trị “attachment” gợi ý rằng người dùng cần được nhắc trước khi tài liệu được hiển thị (hay sao lưu). Chú ý rằng cơ chế này có những ngụ ý quan trọng về an ninh, vốn được trình bày trong bản RFC.

Đa số các trình duyệt đều cho phép người dung tải về đĩa nếu họ muốn. Nếu file cần được lưu vào đĩa, nếu thực sự không còn cách nào khác để xử lý nó, thì kiểu MIME có thể là “application/octet-stream”. Tuy vậy, điều này nghĩa là “Tôi không thể hoặc sẽ không cho bạn biết nội dung này là gì.” Hơn nữa, kiểu MIME  “application/octet-stream” kích hoạt các ứng xử không đúng trong phiên bản HTTP của MSIE. Một cách làm tốt hơn có thể là một kiểu MIME tùy chỉnh như “application/x-some-explanation”, vốn sẽ tránh được những vấn đề này.

Xem thêm

6.7. Làm thế nào để tạo ra một nút bấm hoạt động như một liên kết?

Việc này tốt nhất là nên làm với một form nhỏ:

<FORM ACTION="[URL]" METHOD=GET>

<INPUT TYPE=submit VALUE="Text on button">

</FORM>

Nếu bạn muốn dàn hàng các nút cạnh nhau thì bạn sẽ phải đặt chúng vào một bảng 1 hàng, trong đó mỗi nút chiếm một ô riêng.

Lưu ý rằng các máy tìm kiếm có thể không tìm thấy tài liệu đích trừ khi có một đường liên kết bình thường khác ở trong trang đó.

Một nút, để đi đến trang khác, cũng có thể được lập bằng JavaScript, nhưng cách làm trên là với HTML chuẩn và hoạt động được cho nhiều người đọc hơn.

6.8. Làm thế nào để tạo một nút quay lại trên trang web của tôi?

Bạn không thể làm điều này bằng HTML. Việc quay trở lại nghĩa là đến vị trí trước đây trong lịch sử. Bạn có thể tạo ra một đường liên kết tới URL được chỉ định trong đoạn đầu HTTP Referer (có ở biến môi trường HTTP_REFERER trong các chương trình CGI), nhưng điều này tạo nên một đường dẫn tiến đến một vị trí mới trong lịch sử máy của bạn. Ngay cả khi đó, thông tin từ đoạn đầu Referer có thể là sai. Một số trình duyệt gửi đoạn đầu Referer sai cách khi người dùng nhập URL bằng tay hoặc dùng công cụ đánh dấu trang (bookmark). Một số không bao giowf gửi đoạn đầu Referer (điều này tùy ý, không bắt buộc). Bạn có thể dùng phương thức history.back() của JavaScript để tạo nên một nút (hoặc link) quay lui. Lẽ tự nhiên, điều này chỉ hoạt động được khi JavaScript được hỗ trợ và bật lên.

Hơn nữa, cần lưu ý ràng ngoài tính năng “quay lại” thì chỉ có một công cụ di chuyển khác được dùng phổ biến hơn, đó chính là link. Các độc gỉa chắc sẽ phải biết dùng tính năng quay lại trên trình duyệt của họ. Các độc gỉa không biết các dùng tính năng cơ bản của tình duyệt sẽ thấy lẫn khi các trang web khác nhau bắt chước những tính năng đó theo cách khác nhau.

Xem thêm

6.9. Làm thế nào để tạo một nút cho phép tự động đánh dấu trang trên website của tôi?

Bạn không thể làm điều này bằng HTML. Tuy nhiên, Internet Explorer 4+ hỗ trợ phương thức window.external.AddFavorite(), một phần mở rộng riêng của Microsoft cho JavaScript để mở một hộp thoại “Add to Favorites”. Ví dụ sau tránh tạo ra một nút không hoạt động với những người dùng trình duyệt khác hay với những trình duyệt vô hiệu hóa JavaScript:

function addf() {
    window.external.AddFavorite('http://www.htmlhelp.com/', 'Web Design Group'); }
if (window.external && typeof window.external.AddFavorite != 'undefined'){
        document.write(''); }

Lưu ỷ rằng các độc gỉa đã biết dùng tính năng đánh dấu trang thì chắc hẳn sẽ đánh dấu được trên website của bạn. Tương tự, số ít độc gỉa không biết dùng đánh dấu trang thì có lẽ cũng không biết dùng tính năng đánh dấu mà bạn tạo cho họ. Các độc gỉa không biết các dùng tính năng cơ bản của tình duyệt sẽ thấy lẫn khi các trang web khác nhau bắt chước những tính năng đó theo cách khác nhau.

6.10. Làm thế nào để tạo một nút để in trang đang xem?

Bạn không thể làm điều này bằng HTML. Tuy nhiên, một số trình duyệt hỗ trợ phương thức window.print() của JavaScript, vốn mở ra một cửa sổ “Print”. Ví dụ sau tránh tạo ra một nút không hoạt động với những người dùng trình duyệt khác hay với những trình duyệt vô hiệu hóa JavaScript:

if (window.print) {
    document.write(''); }

Lưu ý rằng các độc gỉa có máy in thì chắc sẽ biết dùng tính năng in từ trình duyệt. Các độc gỉa không biết các dùng tính năng cơ bản của tình duyệt sẽ thấy lẫn khi các trang web khác nhau bắt chước những tính năng đó theo cách khác nhau.

Xem thêm

6.11. Làm thế nào để tạo một nút để đóng cửa sổ đang mở?

Bạn không thể làm điều này bằng HTML. Tuy nhiên, phương thức window.close() của JavaScript sẽ đóng một cửa sổ. Ví dụ sau tránh tạo ra một nút không hoạt động với những người dùng trình duyệt khác hay với những trình duyệt vô hiệu hóa JavaScript:

if(self.close) {
    document.write(''); }

Lưu ý rằng các độc gỉa có thể đã quen thuộc với thao tác cơ bản đóng cửa sổ trên hệ thống của họ. Các độc gỉa không biết các dùng tính năng cơ bản của tình duyệt sẽ thấy lẫn khi các trang web khác nhau bắt chước những tính năng đó theo cách khác nhau.

6.12. Làm thế nào để tạo đường link có nhiệm vụ gửi email cho tôi?

Hãy dùng một liên kết mailto, kiểu như

Send me email at <A HREF="mailto:me@mydomain.com">me@mydomain.com</A>.

Lưu ý rằng  bất kì địa chỉ email nào bạn xuất bản lên WWW thế này có thể sẽ phải nhận hàng đống thư thương mại mà không được phép trước. Tốt hơn là bảo vệ địa chỉ email thực sự của bạn (chẳng hạn, bằng cách lọc thư đến, hay dùng một địa chỉ riêng cho các đường kết nối mailto).

6.13. Làm thể nào để chỉ định một chủ đề trong thư gửi theo đường link mailto?

Bạn không thể chắc chắn làm điều này. Các phương thức thường được đăng không có hiệu qủa trong tất cả tổ hợp giữa trình duyệt và phần mềm email (ngay cả giữa những tổ hợp thông dụng nhất), và trong số đó nhiều cái có nhược điểm lớn: khi chúng bị lỗi thì email sẽ mất.

Nếu bạn thực sự cần có tiêu đề, thì có thể làm được bằng cách cung cấp một form (mẫu) trên trang web của bạn, vốn đệ trình (submit) dữ liệu đến một chương tình CGI có tác dụng gửi email dữ liệu form đó với dòng chủ đề bạn muốn. Tuy nhiên, trong form đó phải có một dòng nhập địa chỉ email người nhận, và bạn phải hi vọng độc gỉa nhập vào đúng.

Sau đây là một số cách khác để chuyển thông tin kiểu chủ đề:

  • Tạo ra các tên email khác chỉ dùng riêng cho các đường kết nối mailto, nhờ vậy bạn sẽ biết rằng mọi thứ gửi đến email khó đó là nhằm phản hồi đến các trang web tương ứng.
  • Bộ phận xử lý mail cho nhiều trình duyệt web có kèm theo một đoạn đầu (header) “X-Url” nhằm chỉ định URL của trang Web có chứa đường kết nối mailto đó. Nếu bạn cấu hình hóa trình đọc mail của bạn để hiển thị đoạn đầu này thì nhiều lúc bạn sẽ thấy được người gửi cần phải hồi đến trang web nào.  Nếu bạn cấu hình hóa trình đọc mail của bạn để hiển thị tiêu đề đầu này, bạn sẽ thấy trang web mà người gửi thường phản hồi tới.
  • Dùng <a href="mailto:user@site" title="Your Subject">. Đa số trình duyệt sẽ lờ đi thuộc tính TITLE, nhưng vài trình duyệt nhỏ sẽ dùng nó như một chủ đề của email. Tất cả trình duyệt sẽ gửi email này.
  • Dùng <a href="mailto:user@site?subject=Your%20Subject">, vốn đặt “Your Subject” (dấu cách được mã hóa thành “%20“) trong trường đầu đề “Subject” của nội dung thư, ở hầu hết trình duyệt hiện đại. Tuy vậy cần lưu ý rằng bạn sẽ mất thư từ những người dùng trình duyệt cũ, nên bạn cần cân nhắc xem cách làm chủ đề tự động này có đáng để bị mất các thư đó không.

Xem thêm

6.14. Làm thế nào để ẩn dấu gạch chân dưới các đường link?

Nếu bạn muốn ẩn các dấu gạch chân đường link mà bạn xem trong trình duyệt, thì hãy kiểm tra các tùy chọn cấu hình của trình duyệt đó. Chẳng hạn, trong Mozilla Firefox hãy xem phần Tools > Options… > Fonts & Colors… với tùy chọn Underline links, trong Opera thì Tools > Preferences… > Web pages với các tùy chọn Underline normal links và Underline visited links, còn trong MSIE 6 xem Tools > Internet Options > Advanced > Browsing với tùy chọn Underline links.

Nếu bạn muốn tránh không cho các đường link trông trang bị gạch dưới khi người dùng thấy [hươ chuột qua?] chúng thì không có cách nào bằng HTML để hoàn thành việc này. Bạn có thể đề xuất cách biểu thị này bằng style sheet qua việc định nghĩa

a:link, a:visited, a:active {text-decoration: none}

6.15. Làm thế nào để có hai bộ đường link với màu sắc khác nhau?

Bạn có thể đề xuất cách biểu thị này bằng style sheet. Trước hết, hãy chỉ định màu sắc cho các đường link thường, như:

a:link              {color: blue;   background: white}
a:visited           {color: purple; background: white}
a:active            {color: red;    background: white}

Tiếp theo, xác định các đường link mà bạn muốn có màu khác nhau. Bạn có thể dùng thuộc tính CLASS trong HTML của bạn như sau:

<a class="example1" href="[URL]">[link text]</a>

Tiếp theo, trong style sheet của bạn, hãy dùng selector (chỉ định) với các link có thuộc tính CLASS như thế này:

a.example1:link     {color: yellow; background: black}
a.example1:visited  {color: white;  background: black}
a.example1:active   {color: red;    background: black}

Một cách làm khác, bạn có thể xác định một phần tử có chứa các đường link mà bạn muốn có màu khác nhau, như thế này:

 ...

Sau đó, trong your sheet của bạn, hãy dùng selector (chỉ định) với các link trong phần tử chứa này:

.example2 a:link    {color: yellow; background: black}
.example2 a:visited {color: white;  background: black}
.example2 a:active  {color: red;    background: black}

Xem thêm

6.16. Làm thế nào để làm đường link thay đổi khi di chuột qua chúng?

Trong style sheet của bạn, hãy dùng gỉa lớp hover để chỉ định một diện mạo khác với các link mà con trỏ chuột hươ qua. Hãy chỉ định gỉa lớp hover theo sau các gỉa lớp linkvisited. Chẳng hạn:

A:link { color: blue ; background: white }
A:visited { color: purple ; background: white }
A:hover { color: red ; background: white }

Xem thêm

6.17. Tại sao các đường link của tôi bị hiện ra sai hoặc không tải được?

Mã lệnh HTML của bạn có thể chứa lỗi cú pháp có ảnh hưởng đến link. Chảng hạn, có thể không có dấu nháy quanh các gía trị thuộc tính đòi hỏi dấu nháy, hoặc có thể thiếu mất một dấu đóng nháy sau cuối gía trị thuộc tính HREF.

Thậm chí mã lệnh markup hoàn toàn hợp lệ vẫn có thể phạm phải các lỗi của trình duyệt. Chẳng hạn, ngay cả kí tự “>” là hợp lệ bên trong các gía trị thuộc tính (được nháy), nhưng một số trình duyệt cổ vẫn nghĩ rằng thẻ kết thúc ở đây, bởi vậy phần còn lại của thuộc tính thẻ được hiển thị như chữ thường. Tương tự, kí tự “>” bên trong dòng chú thích vẫn có thể phạm lỗi trình duyệt tương tự.

Một ví dụ khác, những phiên bản cũ hơn của Netscape Navigator có vấn đề với các đường link tới neo có tên khi mà các neo này được đặt trong bảng có dùng thuộc tính ALIGN.

Cũng có thể là các URL của bạn không đúng. Chẳng hạn phần mềm viết web của bạn có thể dùng các URL file (như file:C:\path\file.html). Nếu vậy, bạn phải thay thế chúng bằng các URL tương đối (như file.html) hay URL http (như http://example.com/path/file.html).

Các trình thẩm định HTML sẽ tìm ra lỗi cú pháp trong mã lệnh bạn viết. Các bộ kiểm tra/lint HTML có thể tìm một số lỗi cú pháp và cả mã lệnh hợp lệ như gây lỗi ở trình duyệt. Các bộ kiểm tra lint có thể tìm các đường link tớiURL không đúng.

Xem thêm

6.18. Tại sao đường link của tôi hoạt động được trong một trình duyệt này nhưng không được ở trình duyệt khác?

Liệu có một dấu cách, dấu #, ?, hay kí tự đặc biệt khác trong đường dẫn hay tên file không? Các dấu cách không hợp lệ trong URL. Nếu bạn mã hóa dấu cách bằng việc thay thế nó với %20, đường link của bạn sẽ có hiệu lực.

Bạn có thể mã hóa kí tự bất kì trong URL bằng dấu % cùng với hai chữ số gía trị hex (hệ thập lục phân) của kí tự đó. (Các “chữ số” A-F có thể viết in hay viết thường đều được.) Theo tiêu chuẩn, thì chỉ những chữ cái, chữ số và các kí tự đặc biệt -_.!*'() là không cần phải mã hóa.

Bạn nên mã hóa tất cả các kí tự khác khi chúng xuất hiện trong một URL, trừ khi chúng được sử dụng với mục đích riêng. Chẳng hạn, nếu bạn muosn chuyển gía trị “Jack&Jill” tới một văn lệnh CGI, bạn cần phải mã hóa kí tự “&” thành “%26”, và URL có thể sẽ là: http://www.foo.com/foo.cgi?rhyme=Jack%26Jill&audience=child

Lưu ý rằng kí tự “?” và các kí tự “&” khác trong URL này lại không được mã hóa vì chúng được dành riêng cho mục đích đặc biệt. Tuy vậy, khi URL này được dùng làm thuộc tính trong một tài liệu HTML, thì dấu “&” phải được mã hóa thành “&amp;”, như sau: <a href="http://www.foo.com/foo.cgi?rhyme=Jack%26Jill&amp;audience=child">

Xem thêm

6.19. Tại so đường link của tôi đến một file … lại tải về một đống các kí tự?

Nếu bạn đang cố gắng kết nối đến một kiểu file cụ thể và không nhận được két qủa mong muốn thì có thể là máy chủ cần phải cấu hình kiểu file đó. Hãy trao đổi với người quản trị để bổ sung các kiểu file này vào danh sách kiểu nội dung (content type). Sau đây là một loạt các kiểu thông dụng mà bạn có thể phải cấu hình hóa:

Kiểu nội dung Mô tả
application/msword Microsoft Word Document
application/octet-stream Unclassified binary data (often used for compressed file or
executable)
application/pdf PDF Document
application/vnd.ms-excel Microsoft Excel spreadsheet
application/zip ZIP archive
audio/x-wav WAV audio format
audio/midi MIDI audio format
audio/x-pn-realaudio RealAudio
image/gif GIF, định dạng hình ảnh
image/jpeg JPEG, định dạng hình ảnh
image/png PNG, định dạng hình ảnh
text/css CSS style sheet
text/html HTML document
text/plain Plain text
video/mpeg MPEG, định dạng video
video/quicktime QuickTime, định dạng video
video/x-msvideo AVI, định dạng video

Một cách khác để đảm bảo rằng file của bạn được gửi tới máy khách là hãy nén nó dưới dạng chuẩn. Gần như tất cả các máy chủ đều được định trước để xử lý đuôi .zip và loại file này cũng được nhiều người nhận biết.

Một số máy chủ (NCSA, Apache, v.v.) có thể được cấu hình hóa để hỗ trợ các kiểu nội dung người dùng cấu hình hóa. Về chi tiết thì phụ thuộc vào từng máy chủ, nên hãy hỏi người quản trị hoặc tham khảo tài liệu.

Lưu ý rằng Internet Explorer lại lờ đi một cách sai lầm những kiểu MIME được máy chủ cung cấp, nên đôi khi nó lại “làm đúng” khi server bị cấu hình hóa sai. Những trình duyệt khác thì nhất nhất tuân theo các kiểu MIME được máy chủ cấp, nên chúng sẽ làm lộ ra những cấu hình sai từ phía máy chủ.

Xem thêm

3 bình luận

Filed under Tin học

3 responses to “Hỏi-đáp dành cho tác giả web (phần 1)

  1. Pingback: Save links | Jack Vo space

  2. Pingback: Hỏi – đáp bên lề dành cho tác giả Web (phần 2) | Blog của Chiến

  3. Pingback: Học lập trình Java qua 9 tài liệu Java chọn lọc này - ITviec blog

Bình luận về bài viết này