Các tập lệnh có thể được đặt bên trong phần thân hoặc phần đầu của trang HTML hoặc bên trong cả phần đầu và phần thân. Chúng tôi cũng có thể đặt javascript bên ngoài tệp HTML có thể được liên kết bằng cách chỉ định nguồn của nó trong thẻ script
JavaScript trong đầu. Hàm JavaScript được đặt bên trong phần đầu của trang HTML và hàm này được gọi khi nhấp vào nút.
ví dụ.
html
7____18____19
Content-Script-Type: type0
7
Content-Script-Type: type2
9
Content-Script-Type: type4
7
Content-Script-Type: type6
9
81
82
81
84
81
86
Content-Script-Type: type4
88
Content-Script-Type: type6
9
Content-Script-Type: type0
88
Content-Script-Type: type2
9
Content-Script-Type: type0____17
97____19
Content-Script-Type: type4
Content-Script-Type: type00
Content-Script-Type: type0____188
97
9
Content-Script-Type: type0
7
Content-Script-Type: type07
Content-Script-Type: type08
Content-Script-Type: type09
70
71
72
Content-Script-Type: type09
74
9
Content-Script-Type: type4
77
Content-Script-Type: type0
88
Content-Script-Type: type07
9
Content-Script-Type: type0
7
Content-Script-Type: type24
Content-Script-Type: type25
Content-Script-Type: type09
Content-Script-Type: type27
81
Content-Script-Type: type29
Content-Script-Type: type09
91
9
Content-Script-Type: type4
94
Content-Script-Type: type0
88
Content-Script-Type: type24
9
88
8
9
đầu ra.
%Script; -- script statements --> charset %Charset; #IMPLIED -- char encoding of linked resource -- type %ContentType; #REQUIRED -- content type of script language -- src %URI; #IMPLIED -- URI for an external script -- defer [defer] #IMPLIED -- UA may defer execution of script -- >
thẻ bắt đầu. bắt buộc, Thẻ kết thúc. cần thiết
định nghĩa thuộc tính
src = uri [CT]Thuộc tính này chỉ định vị trí của tập lệnh bên ngoài. type = content-type [CI]Thuộc tính này chỉ định ngôn ngữ kịch bản của nội dung phần tử và ghi đè ngôn ngữ kịch bản mặc định. Ngôn ngữ kịch bản được chỉ định làm loại nội dung [e. g. , "văn bản/javascript"]. Tác giả phải cung cấp một giá trị cho thuộc tính này. Không có giá trị mặc định cho thuộc tính này. ngôn ngữ = cdata [CI]Không dùng nữa. Thuộc tính này chỉ định ngôn ngữ kịch bản của nội dung của phần tử này. Giá trị của nó là một mã định danh cho ngôn ngữ, nhưng vì các mã định danh này không phải là tiêu chuẩn nên thuộc tính này không được dùng nữa để thay thế cho loại. defer [CI]Khi được đặt, thuộc tính boolean này cung cấp gợi ý cho tác nhân người dùng rằng tập lệnh sẽ không tạo bất kỳ nội dung tài liệu nào [e. g. , không có "tài liệu. write" trong javascript] và do đó, tác nhân người dùng có thể tiếp tục phân tích cú pháp và hiển thịCác thuộc tính được xác định ở nơi khác
Phần tử SCRIPT đặt một tập lệnh trong tài liệu. Phần tử này có thể xuất hiện nhiều lần trong HEAD hoặc BODY của tài liệu HTML
Tập lệnh có thể được xác định trong nội dung của phần tử SCRIPT hoặc trong một tệp bên ngoài. Nếu thuộc tính src không được đặt, tác nhân người dùng phải diễn giải nội dung của phần tử dưới dạng tập lệnh. Nếu src có giá trị URI, tác nhân người dùng phải bỏ qua nội dung của phần tử và truy xuất tập lệnh qua URI. Lưu ý rằng thuộc tính bộ ký tự đề cập đến mã hóa ký tự của tập lệnh được chỉ định bởi thuộc tính src;
Các tập lệnh được đánh giá bởi các công cụ tập lệnh mà tác nhân người dùng phải biết
Cú pháp của dữ liệu tập lệnh phụ thuộc vào ngôn ngữ tập lệnh
Vì HTML không dựa vào một ngôn ngữ kịch bản cụ thể, tác giả tài liệu phải thông báo rõ ràng cho tác nhân người dùng ngôn ngữ của từng tập lệnh. Điều này có thể được thực hiện thông qua khai báo mặc định hoặc khai báo cục bộ
Ngôn ngữ kịch bản mặc định
Tác giả nên chỉ định ngôn ngữ kịch bản mặc định cho tất cả các tập lệnh trong tài liệu bằng cách đưa khai báo META sau vào HEAD
trong đó "loại" là loại nội dung đặt tên cho ngôn ngữ kịch bản. Ví dụ về các giá trị bao gồm "text/tcl", "text/javascript", "text/vbscript"
Trong trường hợp không có khai báo META, mặc định có thể được đặt theo tiêu đề HTTP "Content-Script-Type"
Content-Script-Type: type
trong đó "loại" lại là một loại nội dung đặt tên cho ngôn ngữ kịch bản
Tác nhân người dùng nên xác định ngôn ngữ kịch bản mặc định cho tài liệu theo các bước sau [mức độ ưu tiên cao nhất đến thấp nhất]
- Nếu bất kỳ khai báo META nào chỉ định "Kiểu tập lệnh nội dung", thì phần cuối cùng trong luồng ký tự sẽ xác định ngôn ngữ tập lệnh mặc định
- Mặt khác, nếu bất kỳ tiêu đề HTTP nào chỉ định "Kiểu tập lệnh nội dung", thì tiêu đề cuối cùng trong luồng ký tự sẽ xác định ngôn ngữ tập lệnh mặc định
Các tài liệu không chỉ định thông tin ngôn ngữ tập lệnh mặc định và có chứa các thành phần chỉ định tập lệnh sự kiện nội tại là không chính xác. Tác nhân người dùng vẫn có thể cố gắng diễn giải các tập lệnh được chỉ định không chính xác nhưng không bắt buộc phải. Công cụ soạn thảo sẽ tạo thông tin ngôn ngữ kịch bản mặc định để giúp tác giả tránh tạo tài liệu không chính xác
Khai báo cục bộ của ngôn ngữ kịch bản
Thuộc tính loại phải được chỉ định cho từng phiên bản phần tử SCRIPT trong tài liệu. Giá trị của thuộc tính loại cho phần tử SCRIPT sẽ ghi đè ngôn ngữ kịch bản mặc định cho phần tử đó
Trong ví dụ này, chúng tôi khai báo ngôn ngữ kịch bản mặc định là "text/tcl". Chúng tôi bao gồm một SCRIPT trong tiêu đề, có tập lệnh nằm trong tệp bên ngoài và ở ngôn ngữ tập lệnh "text/vbscript". Chúng tôi cũng bao gồm một SCRIPT trong nội dung chứa tập lệnh riêng được viết bằng "text/javascript"
A document with SCRIPT
Tham chiếu đến các phần tử HTML từ tập lệnh
Mỗi ngôn ngữ kịch bản có các quy ước riêng để tham chiếu đến các đối tượng HTML từ bên trong một tập lệnh. Thông số kỹ thuật này không xác định cơ chế chuẩn để tham chiếu đến các đối tượng HTML
Tuy nhiên, các tập lệnh nên đề cập đến một phần tử theo tên được chỉ định của nó. Các công cụ tạo tập lệnh nên tuân thủ các quy tắc ưu tiên sau khi xác định một phần tử. thuộc tính tên được ưu tiên hơn id nếu cả hai được đặt. Mặt khác, cái này hay cái kia có thể được sử dụng
Ghi chú. Các tác giả của tài liệu HTML được khuyến cáo rằng các thay đổi có thể xảy ra trong lĩnh vực các sự kiện nội tại [e. g. , cách các tập lệnh được liên kết với các sự kiện]. Nghiên cứu trong lĩnh vực này được thực hiện bởi các thành viên của Nhóm Làm việc Mô hình Đối tượng Tài liệu W3C [xem Trang web W3C tại http. //www. w3. org/ để biết thêm thông tin]
định nghĩa thuộc tính
onload = script [CT]Sự kiện onload xảy ra khi tác nhân người dùng tải xong một cửa sổ hoặc tất cả các khung trong FRAMESET. Thuộc tính này có thể được sử dụng với các phần tử BODY và FRAMESET. onunload = script [CT]Sự kiện onunload xảy ra khi tác nhân người dùng xóa tài liệu khỏi cửa sổ hoặc khung. Thuộc tính này có thể được sử dụng với các phần tử BODY và FRAMESET. title = script [CT]Sự kiện title xảy ra khi nút thiết bị trỏ được nhấp vào một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. ondblclick = script [CT]Sự kiện ondblclick xảy ra khi nút thiết bị trỏ được nhấp đúp vào một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onmousedown = script [CT]Sự kiện onmousedown xảy ra khi nút thiết bị trỏ được nhấn trên một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onmouseup = script [CT]Sự kiện onmouseup xảy ra khi nhả nút thiết bị trỏ trên một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onmouseover = script [CT]Sự kiện onmouseover xảy ra khi thiết bị trỏ được di chuyển lên một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onmousemove = script [CT]Sự kiện onmousemove xảy ra khi thiết bị trỏ được di chuyển khi nó ở trên một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onmouseout = script [CT]Sự kiện onmouseout xảy ra khi thiết bị trỏ được di chuyển ra khỏi phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onfocus = script [CT]Sự kiện onfocus xảy ra khi một phần tử nhận tiêu điểm bằng thiết bị trỏ hoặc bằng cách điều hướng theo tab. Thuộc tính này có thể được sử dụng với các yếu tố sau. A, KHU VỰC, NHÃN, ĐẦU VÀO, CHỌN, VĂN BẢN VÀ NÚT. onblur = script [CT]Sự kiện onblur xảy ra khi một phần tử mất tiêu điểm do thiết bị trỏ hoặc do điều hướng theo tab. Nó có thể được sử dụng với các yếu tố tương tự như onfocus. onkeypress = script [CT]Sự kiện onkeypress xảy ra khi một phím được nhấn và nhả trên một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onkeydown = script [CT]Sự kiện onkeydown xảy ra khi một phím được nhấn xuống trên một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onkeyup = script [CT]Sự kiện onkeyup xảy ra khi một phím được giải phóng trên một phần tử. Thuộc tính này có thể được sử dụng với hầu hết các yếu tố. onsubmit = script [CT]Sự kiện onsubmit xảy ra khi một biểu mẫu được gửi. Nó chỉ áp dụng cho phần tử MẪU. onreset = script [CT]Sự kiện onreset xảy ra khi một biểu mẫu được đặt lại. Nó chỉ áp dụng cho phần tử MẪU. onselect = script [CT]Sự kiện onselect xảy ra khi người dùng chọn một số văn bản trong trường văn bản. Thuộc tính này có thể được sử dụng với các phần tử INPUT và TEXTAREA. onchange = script [CT]Sự kiện onchange xảy ra khi một điều khiển mất tiêu điểm đầu vào và giá trị của nó đã bị sửa đổi kể từ khi đạt được tiêu điểm. Thuộc tính này áp dụng cho các phần tử sau. ĐẦU VÀO, CHỌN và VĂN BẢNCó thể liên kết một hành động với một số sự kiện nhất định xảy ra khi người dùng tương tác với tác nhân người dùng. Mỗi "sự kiện nội tại" được liệt kê ở trên có một giá trị là tập lệnh. Tập lệnh được thực thi bất cứ khi nào sự kiện xảy ra cho phần tử đó. Cú pháp của dữ liệu tập lệnh phụ thuộc vào ngôn ngữ tập lệnh
Các phần tử điều khiển như INPUT, SELECT, BUTTON, TEXTAREA và LABEL đều phản hồi các sự kiện nội tại nhất định. Khi các phần tử này không xuất hiện trong một biểu mẫu, chúng có thể được sử dụng để tăng cường giao diện người dùng đồ họa của tài liệu
Chẳng hạn, tác giả có thể muốn bao gồm các nút nhấn trong tài liệu của họ không gửi biểu mẫu nhưng vẫn giao tiếp với máy chủ khi chúng được kích hoạt
Các ví dụ sau đây cho thấy một số hành vi giao diện người dùng và kiểm soát có thể dựa trên các sự kiện nội tại
Trong ví dụ sau, tên người dùng là trường văn bản bắt buộc. Khi người dùng cố gắng rời khỏi trường, sự kiện onblur sẽ gọi hàm JavaScript để xác nhận rằng tên người dùng có giá trị chấp nhận được
Đây là một ví dụ JavaScript khác
Đây là một ví dụ VBScript về trình xử lý sự kiện cho trường văn bản
Đây là ví dụ tương tự sử dụng Tcl
Dưới đây là một ví dụ JavaScript để ràng buộc sự kiện trong một tập lệnh. Đầu tiên, đây là một trình xử lý nhấp chuột đơn giản
________số 8Đây là một trình xử lý cửa sổ thú vị hơn
Trong Tcl này trông giống như
0
Lưu ý rằng "tài liệu. write" hoặc các câu lệnh tương đương trong trình xử lý sự kiện nội tại tạo và ghi vào tài liệu mới thay vì sửa đổi tài liệu hiện tại
Các tập lệnh được thực thi khi tài liệu được tải có thể tự động sửa đổi nội dung của tài liệu. Khả năng làm như vậy phụ thuộc vào chính ngôn ngữ kịch bản [e. g. , tài liệu. write" trong mô hình đối tượng HTML được một số nhà cung cấp hỗ trợ]Việc sửa đổi động của một tài liệu có thể được mô hình hóa như sau
- Tất cả các phần tử SCRIPT được đánh giá theo thứ tự khi tài liệu được tải
- Tất cả các cấu trúc tập lệnh trong một phần tử SCRIPT nhất định tạo ra CDATA SGML đều được đánh giá. Văn bản được tạo kết hợp của chúng được chèn vào tài liệu thay cho phần tử SCRIPT
- CDATA đã tạo được đánh giá lại
Các tài liệu HTML bị hạn chế tuân theo HTML DTD cả trước và sau khi xử lý bất kỳ phần tử SCRIPT nào
Ví dụ sau minh họa cách tập lệnh có thể sửa đổi tài liệu một cách linh hoạt. kịch bản sau
1
Có tác dụng tương tự như đánh dấu HTML này
2
Các phần sau thảo luận về cách tác giả có thể tạo tài liệu hoạt động cho tác nhân người dùng không hỗ trợ tập lệnh
thẻ bắt đầu. bắt buộc, Thẻ kết thúc. cần thiết
Phần tử NOSCRIPT cho phép tác giả cung cấp nội dung thay thế khi tập lệnh không được thực thi. Nội dung của phần tử NOSCRIPT chỉ được hiển thị bởi tác nhân người dùng nhận biết tập lệnh trong các trường hợp sau- Tác nhân người dùng được định cấu hình để không đánh giá tập lệnh
- Tác nhân người dùng không hỗ trợ ngôn ngữ kịch bản được gọi bởi phần tử SCRIPT trước đó trong tài liệu
Tác nhân người dùng không hỗ trợ tập lệnh phía máy khách phải hiển thị nội dung của phần tử này
Trong ví dụ sau, tác nhân người dùng thực thi SCRIPT sẽ bao gồm một số dữ liệu được tạo động trong tài liệu. Nếu tác nhân người dùng không hỗ trợ tập lệnh, người dùng vẫn có thể truy xuất dữ liệu thông qua liên kết
3
Tác nhân người dùng không nhận ra phần tử SCRIPT có thể sẽ hiển thị nội dung của phần tử đó dưới dạng văn bản. Một số công cụ tạo tập lệnh, bao gồm các công cụ dành cho ngôn ngữ JavaScript, VBScript và Tcl cho phép các câu lệnh tập lệnh được đính kèm trong một nhận xét SGML. Do đó, các tác nhân người dùng không nhận ra phần tử SCRIPT sẽ bỏ qua nhận xét trong khi các công cụ tạo tập lệnh thông minh sẽ hiểu rằng tập lệnh trong nhận xét sẽ được thực thi
Một giải pháp khác cho vấn đề là giữ các tập lệnh trong các tài liệu bên ngoài và tham chiếu chúng bằng thuộc tính src
Nhận xét tập lệnh trong JavaScript
Công cụ JavaScript cho phép chuỗi "" từ trình phân tích cú pháp JavaScript.
Tập lệnh nhận xét trong VBScript
Trong VBScript, một ký tự trích dẫn đơn sẽ khiến phần còn lại của dòng hiện tại được coi là nhận xét. Do đó, nó có thể được sử dụng để ẩn chuỗi "-->" khỏi VBScript chẳng hạn.
5
Nhận xét tập lệnh trong TCL
Trong Tcl, ký tự "#" nhận xét phần còn lại của dòng.
Ghi chú. Một số trình duyệt đóng nhận xét trên ký tự ">" đầu tiên, do đó, để ẩn nội dung tập lệnh khỏi các trình duyệt đó, bạn có thể chuyển vị trí các toán hạng cho các toán tử quan hệ và dịch chuyển [e. g. , hãy sử dụng "y < x" thay vì "x > y"] hoặc sử dụng các lối thoát phụ thuộc vào ngôn ngữ tập lệnh cho ">"