Hướng dẫn javascript.info ebook part 2 - ebook javascript.info phần 2

Permalink

bậc thầy

Chuyển nhánh/thẻ

Không thể tải các nhánh

Không có gì để hiển thị

{{refname}}

Tên đã được sử dụng

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh GIT chấp nhận cả tên thẻ và tên chi nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi bất ngờ. Bạn có chắc là bạn muốn tạo chi nhánh này?

Đi nộp

  • Đi nộp
  • Sao chép đường dẫn
  • Sao chép permalink

Không thể lấy lại những người đóng góp tại thời điểm này

3,65 MB

Tải xuống

  • Mở với máy tính để bàn
  • Tải xuống
  • Xóa tài liệu

Xin lỗi, có lỗi xảy ra. Tải lại?

Xin lỗi, chúng tôi không thể hiển thị tệp này.

Xin lỗi, tệp này không hợp lệ nên nó không thể được hiển thị.

Mục lục: Môi trường trình duyệt, Thông số kỹ thuật ...... Trang 4DO cây ...... Trang 7 : Nhập, thẻ và nội dung ...... Trang 36Attributes và Thuộc tính ...... Trang 50 Điều chỉnh tài liệu ...... trang 60Style và lớp học ...... trang 79 Kích thước và cuộn ... ... Trang 87 Kích thước và cuộn kích thước và cuộn ...... trang 102Coordinates ...... trang 106 Giới thiệu sự kiện ...... trang 116 Giới thiệu cho các sự kiện của trình duyệt ...... trang 117bubble và chụp ... ... Trang 132Event Phái đoàn ...... Trang 139Browser Hành động mặc định ...... Trang 150Dispatching Sự kiện tùy chỉnh ...... Trang 159 Sự kiện cơ bản /leave......Page 173Drag'n'drop với các sự kiện chuột ...... trang 180Keyboard: Keydown và Keyup ...... trang 189Scrolling ...... trang 195Forms, điều khiển ... ... Trang 198 Tính chất và phương pháp ...... Trang 199F Focusing: Focus/Blur ...... Trang 206Events: Thay đổi, đầu vào, cắt, sao chép, dán ...... trang 213Forms: thậm chí T và Phương thức Gửi ...... trang 217 Trang: DomContentLoaded, Tải, trước khiun, dỡ tải ...... trang 220Scripts: Async, Defer ...... Trang 227Resource Tải: onload và onerror ..... .Page 232Muting Observer ...... trang 238Selection và phạm vi ...... Trang 244Event Vòng lặp: microtasks và macrotasks ...... trang 259
Browser environment, specs......Page 4
DOM tree......Page 7
Walking the DOM......Page 18
Searching: getElement*, querySelector*......Page 28
Node properties: type, tag and contents......Page 36
Attributes and properties......Page 50
Modifying the document......Page 60
Styles and classes......Page 79
Element size and scrolling......Page 87
Window sizes and scrolling......Page 102
Coordinates......Page 106
Introduction to Events......Page 116
Introduction to browser events......Page 117
Bubbling and capturing......Page 132
Event delegation......Page 139
Browser default actions......Page 150
Dispatching custom events......Page 159
Mouse events basics......Page 166
Moving: mouseover/out, mouseenter/leave......Page 173
Drag'n'Drop with mouse events......Page 180
Keyboard: keydown and keyup......Page 189
Scrolling......Page 195
Forms, controls......Page 198
Form properties and methods......Page 199
Focusing: focus/blur......Page 206
Events: change, input, cut, copy, paste......Page 213
Forms: event and method submit......Page 217
Page: DOMContentLoaded, load, beforeunload, unload......Page 220
Scripts: async, defer......Page 227
Resource loading: onload and onerror......Page 232
Mutation observer......Page 238
Selection and Range......Page 244
Event loop: microtasks and macrotasks......Page 259

.

Hiển thị hậu duệ trên cây để nối văn bản cho từng

Chúng ta có thể thay đổi dữ liệu nút văn bản.

Mở giải pháp trong hộp cát.

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

", và sau đó gán nó cho bên trong. Thuật toán: 1. Tạo tiêu đề bảng với

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

", và sau đó gán nó cho bên trong. Thuật toán: 1. Tạo tiêu đề bảng với

và tên ngày trong tuần. 2. Tạo đối tượng ngày d = ngày mới (năm, tháng 1). Đó là ngày đầu tiên của tháng (có tính đến các tháng trong JavaScript bắt đầu từ 0, không phải 1). 3. Một vài tế bào đầu tiên cho đến ngày đầu tiên của tháng D.GetDay () có thể trống. Hãy để chúng điền vào chúng với

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

", và sau đó gán nó cho bên trong. Thuật toán: 1. Tạo tiêu đề bảng với

và tên ngày trong tuần. 2. Tạo đối tượng ngày d = ngày mới (năm, tháng 1). Đó là ngày đầu tiên của tháng (có tính đến các tháng trong JavaScript bắt đầu từ 0, không phải 1). 3. Một vài tế bào đầu tiên cho đến ngày đầu tiên của tháng D.GetDay () có thể trống. Hãy để chúng điền vào chúng với

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

", và sau đó gán nó cho bên trong. Thuật toán: 1. Tạo tiêu đề bảng với

và tên ngày trong tuần. 2. Tạo đối tượng ngày d = ngày mới (năm, tháng 1). Đó là ngày đầu tiên của tháng (có tính đến các tháng trong JavaScript bắt đầu từ 0, không phải 1). 3. Một vài tế bào đầu tiên cho đến ngày đầu tiên của tháng D.GetDay () có thể trống. Hãy để chúng điền vào chúng với

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

", và sau đó gán nó cho bên trong. Thuật toán: 1. Tạo tiêu đề bảng với

và tên ngày trong tuần. 2. Tạo đối tượng ngày d = ngày mới (năm, tháng 1). Đó là ngày đầu tiên của tháng (có tính đến các tháng trong JavaScript bắt đầu từ 0, không phải 1). 3. Một vài tế bào đầu tiên cho đến ngày đầu tiên của tháng D.GetDay () có thể trống. Hãy để chúng điền vào chúng với

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

", và sau đó gán nó cho bên trong. Thuật toán: 1. Tạo tiêu đề bảng với

và tên ngày trong tuần. 2. Tạo đối tượng ngày d = ngày mới (năm, tháng 1). Đó là ngày đầu tiên của tháng (có tính đến các tháng trong JavaScript bắt đầu từ 0, không phải 1). 3. Một vài tế bào đầu tiên cho đến ngày đầu tiên của tháng D.GetDay () có thể trống. Hãy để chúng điền vào chúng với

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

...

", và sau đó gán nó cho bên trong. Thuật toán: 1. Tạo tiêu đề bảng với

và tên ngày trong tuần. 2. Tạo đối tượng ngày d = ngày mới (năm, tháng 1). Đó là ngày đầu tiên của tháng (có tính đến các tháng trong JavaScript bắt đầu từ 0, không phải 1). 3. Một vài tế bào đầu tiên cho đến ngày đầu tiên của tháng D.GetDay () có thể trống. Hãy để chúng điền vào chúng với

đến lịch. Nếu đó là một ngày chủ nhật, sau đó thêm một dòng mới

vào đó, để làm cho nó vuông. Mở giải pháp trong hộp cát.

Đồng hồ màu với SetInterval trước, hãy để HTML/CSS. Mỗi thành phần của thời gian sẽ trông tuyệt vời trong riêng của mình:

Phần 2

Trình duyệt: tài liệu, sự kiện, giao diện

Ilya Kantor

Được xây dựng vào ngày 10 tháng 7 năm 2019 Phiên bản cuối cùng của hướng dẫn là tại https://javascript.info. Chúng tôi liên tục làm việc để cải thiện hướng dẫn. Nếu bạn tìm thấy bất kỳ sai lầm, xin vui lòng viết tại GitHub của chúng tôi. ●

// Thay đổi màu nền thành tài liệu màu đỏ.body.style.background = "màu đỏ"; // Thay đổi nó trở lại sau 1 giây setTimeout (() => document.body.style.background = "", 1000);

Ở đây chúng tôi đã sử dụng document.body.style, nhưng có rất nhiều, nhiều hơn nữa. Các thuộc tính và phương thức được mô tả trong đặc điểm kỹ thuật: ●

Tiêu chuẩn sống của Dom tại https://dom.spec.whatwg.org

DOM không chỉ dành cho trình duyệt

Thông số kỹ thuật DOM giải thích cấu trúc của một tài liệu và cung cấp các đối tượng để thao tác nó. Có những dụng cụ không phải là các công cụ sử dụng nó quá. Chẳng hạn, các công cụ phía máy chủ tải xuống các trang HTML và xử lý chúng sử dụng DOM. Họ có thể chỉ hỗ trợ một phần của đặc điểm kỹ thuật mặc dù.

DOM không chỉ dành cho trình duyệt

Thông số kỹ thuật DOM giải thích cấu trúc của một tài liệu và cung cấp các đối tượng để thao tác nó. Có những dụng cụ không phải là các công cụ sử dụng nó quá. Chẳng hạn, các công cụ phía máy chủ tải xuống các trang HTML và xử lý chúng sử dụng DOM. Họ có thể chỉ hỗ trợ một phần của đặc điểm kỹ thuật mặc dù.

CSSOM cho kiểu dáng

Các quy tắc và kiểu dáng CSS không được cấu trúc như HTML. Có một đặc điểm kỹ thuật riêng biệt CSSOM giải thích cách chúng được biểu diễn dưới dạng đối tượng và cách đọc và viết chúng. CSSOM được sử dụng cùng với DOM khi chúng tôi sửa đổi các quy tắc kiểu cho tài liệu. Trong thực tế, CSSOM hiếm khi được yêu cầu, bởi vì thông thường các quy tắc CSS là tĩnh. Chúng tôi hiếm khi cần thêm/loại bỏ các quy tắc CSS khỏi JavaScript, vì vậy chúng tôi đã giành chiến thắng ngay bây giờ.

BOM (Mô hình đối tượng Trình duyệt) Mô hình đối tượng Trình duyệt (BOM) là các đối tượng bổ sung được cung cấp bởi trình duyệt (môi trường máy chủ) để hoạt động với mọi thứ ngoại trừ tài liệu. Ví dụ: ●

DOM không chỉ dành cho trình duyệt

Thông số kỹ thuật DOM giải thích cấu trúc của một tài liệu và cung cấp các đối tượng để thao tác nó. Có những dụng cụ không phải là các công cụ sử dụng nó quá. Chẳng hạn, các công cụ phía máy chủ tải xuống các trang HTML và xử lý chúng sử dụng DOM. Họ có thể chỉ hỗ trợ một phần của đặc điểm kỹ thuật mặc dù.

CSSOM cho kiểu dáng

Các quy tắc và kiểu dáng CSS không được cấu trúc như HTML. Có một đặc điểm kỹ thuật riêng biệt CSSOM giải thích cách chúng được biểu diễn dưới dạng đối tượng và cách đọc và viết chúng. CSSOM được sử dụng cùng với DOM khi chúng tôi sửa đổi các quy tắc kiểu cho tài liệu. Trong thực tế, CSSOM hiếm khi được yêu cầu, bởi vì thông thường các quy tắc CSS là tĩnh. Chúng tôi hiếm khi cần thêm/loại bỏ các quy tắc CSS khỏi JavaScript, vì vậy chúng tôi đã giành chiến thắng ngay bây giờ.

BOM (Mô hình đối tượng Trình duyệt) Mô hình đối tượng Trình duyệt (BOM) là các đối tượng bổ sung được cung cấp bởi trình duyệt (môi trường máy chủ) để hoạt động với mọi thứ ngoại trừ tài liệu. Ví dụ: ●

Đối tượng Navigator cung cấp thông tin cơ bản về trình duyệt và hệ điều hành. Có nhiều thuộc tính, nhưng hai thuộc tính được biết đến rộng rãi nhất là: navigator.useragent - về trình duyệt hiện tại và navigator.platform - về nền tảng (có thể giúp khác biệt giữa Windows/Linux/Mac, v.v.). Vị trí  Đối tượng cho phép chúng tôi đọc URL hiện tại và có thể chuyển hướng trình duyệt đến một trình duyệt mới.

Ở đây, cách chúng ta có thể sử dụng đối tượng vị trí: cảnh báo (vị trí.href); // hiển thị url hiện tại if (xác nhận ("Truy cập wikipedia?")) {vị trí.href = "https://wikipedia.org"; // Chuyển hướng trình duyệt sang URL khác}

Các chức năng Cảnh báo/Xác nhận/Lời nhắc cũng là một phần của BOM: chúng không liên quan trực tiếp đến tài liệu, nhưng đại diện cho các phương thức giao tiếp Trình duyệt thuần túy với người dùng. BOM là một phần của đặc tả HTML chung

.

Có, bạn nghe nói rằng ngay. Thông số kỹ thuật HTML tại https://html.spec.whatwg.org  không chỉ về ngôn ngữ HT HTML (thẻ, thuộc tính), mà còn bao gồm một loạt các đối tượng, phương thức và phần mở rộng DOM dành riêng cho trình duyệt. Đó là "HTML trong rộng

điều kiện". Ngoài ra, một số phần có thông số kỹ thuật bổ sung được liệt kê tại https://spec.whatwg.org.

Tóm tắt Nói về các tiêu chuẩn, chúng tôi có: Đặc điểm kỹ thuật của DOM mô tả cấu trúc tài liệu, thao tác và sự kiện, xem https://dom.spec.whatwg.org. Thông số kỹ thuật CSSOM mô tả các kiểu dáng và quy tắc kiểu, thao tác với chúng và liên kết của chúng với các tài liệu, xem https://www.w3.org/tr/cssom-1/. Thông số kỹ thuật HTML mô tả ngôn ngữ HTML (ví dụ: thẻ) và cả BOM (mô hình đối tượng trình duyệt) - Các hàm trình duyệt khác nhau: SetTimeout, ALERT, Vị trí, v.v., xem https://html.spec.whatwg.org. Nó lấy đặc điểm kỹ thuật của DOM và mở rộng nó với nhiều thuộc tính và phương thức bổ sung. Ngoài ra, một số lớp được mô tả riêng biệt tại https://spec.whatwg.org/. Xin lưu ý các liên kết này, vì có rất nhiều thứ để tìm hiểu nó không thể bao gồm và nhớ mọi thứ. Khi bạn muốn đọc về một tài sản hoặc một phương thức, hướng dẫn sử dụng mozilla tại https://developer.mozilla.org/en-us/search  cũng là một tài nguyên đẹp, nhưng thông số kỹ thuật tương ứng có thể tốt hơn: nó phức tạp và dài hơn để đọc, nhưng sẽ làm cho kiến ​​thức cơ bản của bạn âm thanh và đầy đủ. Để tìm một cái gì đó, thường rất thuận tiện khi sử dụng một tìm kiếm trên internet, whatwg [thuật ngữ] hoặc hoặc mdn [thuật ngữ], ví dụ, https://google.com? Q = mdn+LocalStorage. Bây giờ chúng tôi sẽ xuống học tập DOM, bởi vì tài liệu đóng vai trò trung tâm trong UI.

Xin lưu ý các ký tự đặc biệt trong các nút văn bản: ●

Một dòng mới: ↵ (trong JavaScript được gọi là \ n)

một không gian: ␣

Spaces và Newlines - là các ký tự hoàn toàn hợp lệ, chúng tạo thành các nút văn bản và trở thành một phần của DOM. Vì vậy, ví dụ, trong ví dụ trên thẻ chứa một số khoảng trống trước đó và văn bản đó trở thành nút #Text (nó chỉ chứa một dòng mới và một số không gian). Chỉ có hai loại trừ cấp cao nhất: 1. Không gian và dòng mới trước đây bị bỏ qua vì lý do lịch sử, 2. Nếu chúng ta đặt một cái gì đó sau đó, thì điều đó sẽ tự động di chuyển bên trong cơ thể Phải ở bên trong. Vì vậy, có thể không có không gian sau. Trong các trường hợp khác, mọi thứ đều đơn giản - nếu có không gian (giống như bất kỳ ký tự nào) trong tài liệu, thì chúng trở thành nút văn bản trong DOM và nếu chúng ta xóa chúng, thì sẽ giành được bất kỳ. Dưới đây không có nút văn bản chỉ có không gian:

Về sự thật về Elks. elem.style.backgroundcolor z-index => elem.style.zindex biên giới-left-width => elem.style.borderleftwidth

Ví dụ:

document.body.style.backgroundColor = prompt ('màu nền?', 'màu xanh lá cây');

Thuộc tính tiền tố

Các thuộc tính có trình duyệt như -moz-Border-Radius, -webkitbandder-Radius cũng tuân theo quy tắc tương tự, ví dụ: bettyle.style.mozbeterradius = '5px'; nút.style.webkitborderradius = '5px';

Đó là: một dấu gạch ngang "-" trở thành một chữ hoa.

Đặt lại thuộc tính kiểu đôi khi chúng tôi muốn gán một thuộc tính kiểu, và sau đó xóa nó. Chẳng hạn, để ẩn một phần tử, chúng ta có thể đặt elem.style.display = "none".

Sau đó, chúng ta có thể muốn loại bỏ style.display như thể nó không được đặt. Thay vì xóa elem.style.display, chúng ta nên gán một chuỗi trống cho nó: elem.style.display = "". // Nếu chúng tôi chạy mã này, tài liệu "nhấp nháy ".body.style.display =" none "; // Ẩn setTimeout (() => document.body.style.display = "", 1000); // trở lại bình thường

Nếu chúng tôi đặt hiển thị thành một chuỗi trống, thì trình duyệt áp dụng các lớp CSS và các kiểu tích hợp của nó một cách thông thường, như thể không có thuộc tính hiển thị như vậy.

Thuộc tính tiền tố

Các thuộc tính có trình duyệt như -moz-Border-Radius, -webkitbandder-Radius cũng tuân theo quy tắc tương tự, ví dụ: bettyle.style.mozbeterradius = '5px'; nút.style.webkitborderradius = '5px';

Đó là: một dấu gạch ngang "-" trở thành một chữ hoa.

Đặt lại thuộc tính kiểu đôi khi chúng tôi muốn gán một thuộc tính kiểu, và sau đó xóa nó. Chẳng hạn, để ẩn một phần tử, chúng ta có thể đặt elem.style.display = "none".

Sau đó, chúng ta có thể muốn loại bỏ style.display như thể nó không được đặt. Thay vì xóa elem.style.display, chúng ta nên gán một chuỗi trống cho nó: elem.style.display = "". // Nếu chúng tôi chạy mã này, tài liệu "nhấp nháy ".body.style.display =" none "; // Ẩn setTimeout (() => document.body.style.display = "", 1000); // trở lại bình thường

Nếu chúng tôi đặt hiển thị thành một chuỗi trống, thì trình duyệt áp dụng các lớp CSS và các kiểu tích hợp của nó một cách thông thường, như thể không có thuộc tính hiển thị như vậy.

Viết lại đầy đủ với style.csstext

Thông thường, chúng tôi sử dụng phong cách.* Để gán các thuộc tính kiểu riêng lẻ. Chúng ta có thể thiết lập phong cách đầy đủ như div.style = "color: red; width: 100px", vì div.style là một đối tượng và nó chỉ đọc. Để đặt phong cách đầy đủ thành một chuỗi, có một kiểu thuộc tính đặc biệt.csstext: nút

Thuộc tính này hiếm khi được sử dụng, bởi vì bài tập như vậy sẽ loại bỏ tất cả các kiểu hiện có: nó không thêm, nhưng thay thế chúng. Đôi khi có thể xóa một cái gì đó cần thiết. Nhưng chúng ta có thể sử dụng nó một cách an toàn cho các yếu tố mới, khi chúng ta biết rằng chúng ta đã thắng xóa một phong cách hiện có. Điều tương tự có thể được thực hiện bằng cách đặt một thuộc tính: Div.SetAttribution ('Style', 'Color: Red ...').

Tâm trí các đơn vị

Các đơn vị CSS phải được cung cấp trong các giá trị kiểu. Chẳng hạn, chúng ta không nên đặt elem.style.top thành 10, mà là 10px. Nếu không thì nó sẽ hoạt động:

Thuộc tính tiền tố

Các thuộc tính có trình duyệt như -moz-Border-Radius, -webkitbandder-Radius cũng tuân theo quy tắc tương tự, ví dụ: bettyle.style.mozbeterradius = '5px'; nút.style.webkitborderradius = '5px';

Đó là: một dấu gạch ngang "-" trở thành một chữ hoa.

Đặt lại thuộc tính kiểu đôi khi chúng tôi muốn gán một thuộc tính kiểu, và sau đó xóa nó. Chẳng hạn, để ẩn một phần tử, chúng ta có thể đặt elem.style.display = "none".

Sau đó, chúng ta có thể muốn loại bỏ style.display như thể nó không được đặt. Thay vì xóa elem.style.display, chúng ta nên gán một chuỗi trống cho nó: elem.style.display = "". // Nếu chúng tôi chạy mã này, tài liệu "nhấp nháy ".body.style.display =" none "; // Ẩn setTimeout (() => document.body.style.display = "", 1000); // trở lại bình thường

GetComputedStyle yêu cầu tên toàn bộ

Chúng ta phải luôn luôn yêu cầu tài sản chính xác mà chúng ta muốn, như paddingleft hoặc margintop hoặc biên giới. Nếu không thì kết quả chính xác không được đảm bảo. Chẳng hạn, nếu có các thuộc tính paddingleft/paddingtop, thì chúng ta nên nhận gì cho getComputedStyle (ELEM) .padding? Không có gì, hoặc có thể là một giá trị được tạo ra trên mạng từ các mái chèo đã biết? Không có quy tắc tiêu chuẩn ở đây. Có những mâu thuẫn khác. Ví dụ, một số trình duyệt (Chrome) hiển thị 10px trong tài liệu bên dưới và một số trong số chúng (Firefox) - không:

Các phong cách liên kết đã truy cập vào các liên kết được ẩn!

Các liên kết được truy cập có thể được tô màu bằng cách sử dụng: Visit CSS Pseudoclass. Nhưng GetComputedStyle không cung cấp quyền truy cập vào màu đó, bởi vì nếu không, một trang tùy ý có thể tìm hiểu xem người dùng có truy cập liên kết hay không bằng cách tạo nó trên trang và kiểm tra các kiểu. JavaScript có thể không thấy các kiểu được áp dụng bởi: đã truy cập. Ngoài ra, có một giới hạn trong CSS cấm áp dụng các kiểu thay đổi hình học trong: đã truy cập. Điều đó để đảm bảo rằng không có trang nào cho một trang xấu xa để kiểm tra xem một liên kết đã được truy cập và do đó phá vỡ sự riêng tư.

Tóm tắt Để quản lý các lớp, có hai thuộc tính DOM: ●

ClassName - Giá trị chuỗi, tốt để quản lý toàn bộ tập hợp các lớp. Danh sách lớp - đối tượng có các phương thức Thêm/Xóa/Chuyển đổi/Chứa, Tốt cho các lớp riêng lẻ.

Để thay đổi các kiểu: ●

ClassName - Giá trị chuỗi, tốt để quản lý toàn bộ tập hợp các lớp. Danh sách lớp - đối tượng có các phương thức Thêm/Xóa/Chuyển đổi/Chứa, Tốt cho các lớp riêng lẻ.

Để thay đổi các kiểu: ●

Thuộc tính phong cách là một đối tượng với các kiểu Camelcased. Đọc và viết cho nó có ý nghĩa tương tự như sửa đổi các thuộc tính riêng lẻ trong thuộc tính "kiểu". Để xem cách áp dụng những thứ quan trọng và các thứ hiếm khác - có một danh sách các phương thức tại MDN. Thuộc tính style.csStext tương ứng với toàn bộ thuộc tính "kiểu", chuỗi đầy đủ của các kiểu.

Để đọc các kiểu đã được giải quyết (liên quan đến tất cả các lớp, sau khi tất cả các CS được áp dụng và các giá trị cuối cùng được tính toán): ●

GetComputedStyle (elem [, giả]) trả về đối tượng giống như kiểu dáng với chúng. Chỉ đọc.

Nhiệm vụ tạo ra một tầm quan trọng thông báo: 5 Viết chức năng hiển thị (Tùy chọn) tạo ra một thông báo: với nội dung đã cho. Thông báo

Nên tự động biến mất sau 1,5 giây. Các tùy chọn là: // hiển thị một phần tử với văn bản "Xin chào" gần đỉnh bên phải của cửa sổ hiển thị ({top: 10, // 10px từ trên cùng của cửa sổ (theo mặc định 0px) phải: 10, // 10px từ cạnh phải của cửa sổ (theo mặc định 0px) html: "Xin chào!", // HTML của ClassName thông báo: "Chào mừng" // Một lớp bổ sung cho div (tùy chọn)});

Bản demo trong cửa sổ mới

Nên tự động biến mất sau 1,5 giây. Các tùy chọn là: // hiển thị một phần tử với văn bản "Xin chào" gần đỉnh bên phải của cửa sổ hiển thị ({top: 10, // 10px từ trên cùng của cửa sổ (theo mặc định 0px) phải: 10, // 10px từ cạnh phải của cửa sổ (theo mặc định 0px) html: "Xin chào!", // HTML của ClassName thông báo: "Chào mừng" // Một lớp bổ sung cho div (tùy chọn)});

Bản demo trong cửa sổ mới

Sử dụng định vị CSS để hiển thị phần tử ở tọa độ hàng đầu/bên phải đã cho. Các tài liệu nguồn có các phong cách cần thiết. Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Kích thước phần tử và cuộn Có nhiều thuộc tính JavaScript cho phép chúng tôi đọc thông tin về chiều rộng phần tử, chiều cao và các tính năng hình học khác. Chúng ta thường cần chúng khi di chuyển hoặc định vị các yếu tố trong JavaScript, để tính toán chính xác tọa độ.

Phần tử mẫu như một phần tử mẫu để chứng minh các thuộc tính mà chúng tôi sẽ sử dụng một phần dưới đây:

Nên tự động biến mất sau 1,5 giây. Các tùy chọn là: // hiển thị một phần tử với văn bản "Xin chào" gần đỉnh bên phải của cửa sổ hiển thị ({top: 10, // 10px từ trên cùng của cửa sổ (theo mặc định 0px) phải: 10, // 10px từ cạnh phải của cửa sổ (theo mặc định 0px) html: "Xin chào!", // HTML của ClassName thông báo: "Chào mừng" // Một lớp bổ sung cho div (tùy chọn)});

Bản demo trong cửa sổ mới

Sử dụng định vị CSS để hiển thị phần tử ở tọa độ hàng đầu/bên phải đã cho. Các tài liệu nguồn có các phong cách cần thiết. Mở một hộp cát cho nhiệm vụ.

Các phong cách liên kết đã truy cập vào các liên kết được ẩn!

Các liên kết được truy cập có thể được tô màu bằng cách sử dụng: Visit CSS Pseudoclass. Nhưng GetComputedStyle không cung cấp quyền truy cập vào màu đó, bởi vì nếu không, một trang tùy ý có thể tìm hiểu xem người dùng có truy cập liên kết hay không bằng cách tạo nó trên trang và kiểm tra các kiểu. JavaScript có thể không thấy các kiểu được áp dụng bởi: đã truy cập. Ngoài ra, có một giới hạn trong CSS cấm áp dụng các kiểu thay đổi hình học trong: đã truy cập. Điều đó để đảm bảo rằng không có trang nào cho một trang xấu xa để kiểm tra xem một liên kết đã được truy cập và do đó phá vỡ sự riêng tư.

Tóm tắt Để quản lý các lớp, có hai thuộc tính DOM: ●

ClassName - Giá trị chuỗi, tốt để quản lý toàn bộ tập hợp các lớp. Danh sách lớp - đối tượng có các phương thức Thêm/Xóa/Chuyển đổi/Chứa, Tốt cho các lớp riêng lẻ.

offsetparent, offsetleft/top Các thuộc tính này hiếm khi cần thiết, nhưng chúng vẫn là các thuộc tính hình học bên ngoài nhất, vì vậy chúng tôi sẽ bắt đầu với chúng. Tùy bù là tổ tiên gần nhất, trình duyệt sử dụng để tính toán tọa độ trong quá trình kết xuất. Đó là tổ tiên gần nhất, thỏa mãn các điều kiện sau: 1. vị trí của CSS (vị trí là tuyệt đối, tương đối, cố định hoặc dính), 2. hoặc

,,, 3. Hoặc. Các thuộc tính offsetleft/offsetTop cung cấp tọa độ x/y so với góc trên bên trái của nó. Trong ví dụ bên dưới bên trong có sự thay đổi và offsetleft/offsettop chuyển từ góc trên bên trái của nó (180):

... message.remove (), 5000);

Mã này có thể được sửa đổi để hiển thị thông báo ở bên trái, bên phải, bên dưới, áp dụng hình ảnh CSS để Fade Fade It trong phạm vi, v.v. Điều đó dễ dàng, vì chúng ta có tất cả các tọa độ và kích thước của yếu tố. Nhưng lưu ý các chi tiết quan trọng: khi trang được cuộn, thông báo sẽ chảy ra khỏi nút. Lý do là hiển nhiên: phần tử tin nhắn dựa vào vị trí: đã sửa, vì vậy nó vẫn ở cùng một vị trí của cửa sổ trong khi trang cuộn đi. Để thay đổi điều đó, chúng ta cần sử dụng tọa độ và vị trí dựa trên tài liệu: Tuyệt đối.

Tọa độ tài liệu tọa độ liên quan đến tài liệu bắt đầu từ góc trên bên trái của tài liệu, không phải cửa sổ. Trong CSS, tọa độ cửa sổ tương ứng với vị trí: Đã sửa lỗi, trong khi tọa độ tài liệu tương tự như vị trí: tuyệt đối trên đỉnh. Chúng ta có thể sử dụng vị trí: Tuyệt đối và TOP/Bên trái để đặt một cái gì đó ở một vị trí nhất định của tài liệu, để nó ở đó trong một cuộn trang. Nhưng chúng ta cần tọa độ phù hợp đầu tiên. Để rõ ràng, chúng tôi sẽ gọi tọa độ cửa sổ (clientX, clienty) và tọa độ tài liệu (trang, pagey). Khi trang không được cuộn, thì tọa độ cửa sổ và tọa độ tài liệu thực sự giống nhau. Điểm không phù hợp của họ quá:

Và nếu chúng ta cuộn nó, thì (clientx, clienty) thay đổi, vì chúng tương đối với cửa sổ, nhưng (pagex, pagey) vẫn giữ nguyên. Ở đây, cùng một trang sau cuộn dọc:

Khách hàng của tiêu đề "từ bài viết nổi bật của ngày hôm nay" đã trở thành 0, bởi vì phần tử hiện đang ở trên đầu cửa sổ. ClientX đã không thay đổi, vì chúng tôi đã cuộn theo chiều ngang. PageX và tọa độ pagey của phần tử vẫn giống nhau, bởi vì chúng liên quan đến tài liệu.

Nhận tọa độ tài liệu ở đó, không có phương pháp tiêu chuẩn nào để có được tọa độ tài liệu của một yếu tố. Nhưng nó dễ dàng viết nó. Hai hệ tọa độ được kết nối bằng công thức: ●

Khách hàng của tiêu đề "từ bài viết nổi bật của ngày hôm nay" đã trở thành 0, bởi vì phần tử hiện đang ở trên đầu cửa sổ. ClientX đã không thay đổi, vì chúng tôi đã cuộn theo chiều ngang. PageX và tọa độ pagey của phần tử vẫn giống nhau, bởi vì chúng liên quan đến tài liệu.

Nhận tọa độ tài liệu ở đó, không có phương pháp tiêu chuẩn nào để có được tọa độ tài liệu của một yếu tố. Nhưng nó dễ dàng viết nó. Hai hệ tọa độ được kết nối bằng công thức: ●

pagey = clienty + chiều cao của phần thẳng đứng cuộn ra của tài liệu. pagex = clientX + chiều rộng của phần ngang cuộn ra của tài liệu.

Hàm getCoords (ELEM) sẽ lấy tọa độ cửa sổ từ elem.getBoundingClientRect () và thêm cuộn hiện tại vào chúng: // Nhận tọa độ tài liệu của hàm phần tử GetCoords (elem) {

Đặt hộp = elem.getBoundingClientRect (); return {top: box.top + pageyoffset, trái: box.left + pageXoffset}; }

1

Tóm tắt Bất kỳ điểm nào trên trang đều có tọa độ: 1. Liên quan đến cửa sổ - elem.getBoundingClientRect (). 2. Liên quan đến tài liệu - elem.getBoundingClientRect () cộng với cuộn trang hiện tại. Các tọa độ cửa sổ là tuyệt vời để sử dụng với vị trí: cố định và tọa độ tài liệu làm tốt với vị trí: Tuyệt đối. Cả hai hệ thống tọa độ đều có các hệ thống của họ, và các hệ thống của họ, có những lúc chúng ta cần một hoặc một hệ thống khác, giống như vị trí CSS tuyệt đối và cố định.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

4

Nhiệm vụ Tìm tọa độ cửa sổ về tầm quan trọng của trường: 5 Trong iframe bên dưới, bạn có thể thấy một tài liệu với trường màu xanh lá cây. Sử dụng JavaScript để tìm tọa độ cửa sổ của các góc được chỉ bằng các mũi tên. Có một tính năng nhỏ được thực hiện trong tài liệu để thuận tiện. Một nhấp chuột tại bất kỳ nơi nào cho thấy tọa độ ở đó.

2

Nhấp vào bất cứ nơi nào để có được tọa độ cửa sổ. Đó là để kiểm tra, để kiểm tra kết quả bạn nhận được bởi JavaScript. (Nhấp vào tọa độ hiển thị ở đây) 3

Để giải pháp

Hiển thị một ghi chú gần tầm quan trọng của phần tử: 5 Tạo một vị trí chức năng (neo, vị trí, ELEM) định vị ELEM, tùy thuộc vào vị trí ở đầu ("trên cùng"), phải ("phải") hoặc dưới cùng ("dưới cùng") của phần tử neo. Gọi nó bên trong hàm hiển thị (neo, vị trí, html) hiển thị một phần tử với lớp "ghi chú" và văn bản HTML tại vị trí đã cho gần

Cái mỏ neo. Hiển thị các ghi chú như ở đây: Lorem rất cà rốt, nhà phát triển cà chua. Các chuyến bay bị chỉ trích và đau đớn để rơi vào những thú vui của sai lầm để tránh vui vẻ! Lòng thù hận trong thời gian, do đó không ai xứng đáng với lợi ích của việc cung cấp rắc rối, là thời điểm của tất cả được chấp nhận để tuân theo các dịch vụ của người khôn ngoan. Lưu ý ở trên

"

Lưu ý ở bên phải

Giáo viên: Tại sao bạn đến muộn? Sinh viên: Có một người đàn ông mất một hóa đơn trăm đô la. Giáo viên: Thật tuyệt. Bạn có giúp anh ấy tìm nó không? Học sinh: Không. 1 đang đứng trên nó.

Lưu ý dưới đây

Lorem rất cà rốt, nhà phát triển cà chua. Các chuyến bay bị chỉ trích và đau đớn để rơi vào những thú vui của sai lầm để tránh vui vẻ! Lòng thù hận trong thời gian, do đó không ai xứng đáng với lợi ích của việc cung cấp rắc rối, là thời điểm của tất cả được chấp nhận để tuân theo các dịch vụ của người khôn ngoan.

P.S. Ghi chú nên có vị trí: Đã sửa cho nhiệm vụ này. Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Hiển thị một ghi chú gần tầm quan trọng của phần tử: 5 Tạo một vị trí chức năng (neo, vị trí, ELEM) định vị ELEM, tùy thuộc vào vị trí ở đầu ("trên cùng"), phải ("phải") hoặc dưới cùng ("dưới cùng") của phần tử neo. Gọi nó bên trong hàm hiển thị (neo, vị trí, html) hiển thị một phần tử với lớp "ghi chú" và văn bản HTML tại vị trí đã cho gần

Cái mỏ neo. Hiển thị các ghi chú như ở đây: Lorem rất cà rốt, nhà phát triển cà chua. Các chuyến bay bị chỉ trích và đau đớn để rơi vào những thú vui của sai lầm để tránh vui vẻ! Lòng thù hận trong thời gian, do đó không ai xứng đáng với lợi ích của việc cung cấp rắc rối, là thời điểm của tất cả được chấp nhận để tuân theo các dịch vụ của người khôn ngoan. Lưu ý ở trên

"

Lưu ý ở bên phải

Giáo viên: Tại sao bạn đến muộn? Sinh viên: Có một người đàn ông mất một hóa đơn trăm đô la. Giáo viên: Thật tuyệt. Bạn có giúp anh ấy tìm nó không? Học sinh: Không. 1 đang đứng trên nó.

Lưu ý dưới đây

Lorem rất cà rốt, nhà phát triển cà chua. Các chuyến bay bị chỉ trích và đau đớn để rơi vào những thú vui của sai lầm để tránh vui vẻ! Lòng thù hận trong thời gian, do đó không ai xứng đáng với lợi ích của việc cung cấp rắc rối, là thời điểm của tất cả được chấp nhận để tuân theo các dịch vụ của người khôn ngoan.

"

Lưu ý ở bên phải

Giáo viên: Tại sao bạn đến muộn? Sinh viên: Có một người đàn ông mất một hóa đơn trăm đô la. Giáo viên: Thật tuyệt. Bạn có giúp anh ấy tìm nó không? Học sinh: Không. 1 đang đứng trên nó.

Giáo viên: Tại sao bạn đến muộn? Sinh viên: Có một người đàn ông mất một hóa đơn trăm đô la. Giáo viên: Thật tuyệt. Bạn có giúp anh ấy tìm nó không? Học sinh: Không. 1 đang đứng trên nó.

Lưu ý dưới đây

Lorem rất cà rốt, nhà phát triển cà chua. Các chuyến bay bị chỉ trích và đau đớn để rơi vào những thú vui của sai lầm để tránh vui vẻ! Lòng thù hận trong thời gian, do đó không ai xứng đáng với lợi ích của việc cung cấp rắc rối, là thời điểm của tất cả được chấp nhận để tuân theo các dịch vụ của người khôn ngoan.

P.S. Ghi chú nên có vị trí: Đã sửa cho nhiệm vụ này. Mở một hộp cát cho nhiệm vụ.

Hiển thị một ghi chú gần phần tử (hoàn toàn) tầm quan trọng: 5 Sửa đổi giải pháp của tác vụ trước đó để ghi chú sử dụng vị trí: tuyệt đối thay vì vị trí: cố định. Điều đó sẽ ngăn chặn "chạy trốn" của nó khỏi phần tử khi trang cuộn. Lấy giải pháp của nhiệm vụ đó như một điểm khởi đầu. Để kiểm tra cuộn, thêm phong cách. Để giải pháp

Định vị ghi chú bên trong (hoàn toàn) tầm quan trọng: 5

Mở rộng tác vụ trước đây hiển thị một ghi chú gần phần tử (hoàn toàn): Dạy vị trí chức năng (neo, vị trí, elem) để chèn elem bên trong mỏ neo. Giá trị mới cho vị trí: ●

Lưu ý ở bên phải

Lưu ý ở bên phải

Lưu ý ở bên phải

Lưu ý ở bên phải

Giáo viên: Tại sao bạn đến muộn? Sinh viên: Có một người đàn ông mất một hóa đơn trăm đô la. Giáo viên: Thật tuyệt. Bạn có giúp anh ấy tìm nó không? Học sinh: Không. 1 đang đứng trên nó.

Lưu ý dưới đây

Lorem rất cà rốt, nhà phát triển cà chua. Các chuyến bay bị chỉ trích và đau đớn để rơi vào những thú vui của sai lầm để tránh vui vẻ! Lòng thù hận trong thời gian, do đó không ai xứng đáng với lợi ích của việc cung cấp rắc rối, là thời điểm của tất cả được chấp nhận để tuân theo các dịch vụ của người khôn ngoan.

Lưu ý ở bên phải

Giáo viên: Tại sao bạn đến muộn? Sinh viên: Có một người đàn ông mất một hóa đơn trăm đô la. Giáo viên: Thật tuyệt. Bạn có giúp anh ấy tìm nó không? Học sinh: Không. 1 đang đứng trên nó.

Lưu ý dưới đây

Lorem rất cà rốt, nhà phát triển cà chua. Các chuyến bay bị chỉ trích và đau đớn để rơi vào những thú vui của sai lầm để tránh vui vẻ! Lòng thù hận trong thời gian, do đó không ai xứng đáng với lợi ích của việc cung cấp rắc rối, là thời điểm của tất cả được chấp nhận để tuân theo các dịch vụ của người khôn ngoan.

P.S. Ghi chú nên có vị trí: Đã sửa cho nhiệm vụ này. Mở một hộp cát cho nhiệm vụ.

Hiển thị một ghi chú gần phần tử (hoàn toàn) tầm quan trọng: 5 Sửa đổi giải pháp của tác vụ trước đó để ghi chú sử dụng vị trí: tuyệt đối thay vì vị trí: cố định. Điều đó sẽ ngăn chặn "chạy trốn" của nó khỏi phần tử khi trang cuộn. Lấy giải pháp của nhiệm vụ đó như một điểm khởi đầu. Để kiểm tra cuộn, thêm phong cách. Để giải pháp

Định vị ghi chú bên trong (hoàn toàn) tầm quan trọng: 5

Mở rộng tác vụ trước đây hiển thị một ghi chú gần phần tử (hoàn toàn): Dạy vị trí chức năng (neo, vị trí, elem) để chèn elem bên trong mỏ neo. Giá trị mới cho vị trí: ●

Top-out, phải, từ dưới cùng-hoạt động giống như trước đây, họ chèn ELEM trên / phải / dưới neo. Top-in, bên phải, dưới cùng-chèn ELEM bên trong neo dính vào cạnh trên / phải / dưới.

Ví dụ: // hiển thị ghi chú trên các vị trí blockquote (blockquote, "top-out", note); // hiển thị ghi chú Blockquote, ở vị trí trên cùng (ghi chú "blockquote" top-in ");

HTML-attribution Một trình xử lý có thể được đặt trong HTML với một thuộc tính có tên trên. Chẳng hạn, để gán một trình xử lý nhấp chuột cho đầu vào, chúng ta có thể sử dụng onclick, như ở đây:

Khi nhấp chuột, mã bên trong Onclick chạy. Xin lưu ý rằng bên trong Onclick, chúng tôi sử dụng các trích dẫn đơn, bởi vì bản thân thuộc tính có trong trích dẫn kép. Nếu chúng ta quên rằng mã nằm trong thuộc tính và sử dụng các trích dẫn kép bên trong, như thế này: onclick = "alert (" click! ")", Thì nó đã giành được công việc đúng. Một sự tham gia của HTML không phải là một nơi thuận tiện để viết nhiều mã, vì vậy chúng tôi nên tạo một chức năng JavaScript và gọi nó ở đó. Ở đây một nhấp chuột chạy chức năng Countrabbits ():

Đếm thỏ!

Như chúng ta đã biết, tên thuộc tính HTML không nhạy cảm với trường hợp, do đó, Onclick hoạt động cũng như onclick và onclick, nhưng thường các thuộc tính được hạ thấp: onclick.

Thuộc tính dom

Chúng ta có thể chỉ định một trình xử lý bằng một thuộc tính DOM trên. Ví dụ, elem.onclick:

Nhấp vào đây

Nếu trình xử lý được gán bằng cách sử dụng phương tiện HTML thì trình duyệt sẽ đọc nó, hãy tạo một hàm mới từ nội dung thuộc tính và ghi nó vào thuộc tính DOM. Vì vậy, cách này thực sự giống như cái trước. Trình xử lý luôn nằm trong thuộc tính DOM: thuộc tính HTML chỉ là một trong những cách để khởi tạo nó. Hai đoạn mã này hoạt động giống nhau: 1. Chỉ HTML:

Cái nút

2. HTML + JS:

Cái nút

2. HTML + JS:

Vì chỉ có một tài sản Onclick, chúng tôi có thể gán nhiều hơn một người xử lý sự kiện.

Nhấp vào đây

Nếu trình xử lý được gán bằng cách sử dụng phương tiện HTML thì trình duyệt sẽ đọc nó, hãy tạo một hàm mới từ nội dung thuộc tính và ghi nó vào thuộc tính DOM. Vì vậy, cách này thực sự giống như cái trước. Trình xử lý luôn nằm trong thuộc tính DOM: thuộc tính HTML chỉ là một trong những cách để khởi tạo nó. Hai đoạn mã này hoạt động giống nhau: 1. Chỉ HTML:

Cái nút

2. HTML + JS:

Vì chỉ có một tài sản Onclick, chúng tôi có thể gán nhiều hơn một người xử lý sự kiện.

Trong ví dụ dưới đây, việc thêm một trình xử lý với JavaScript ghi đè lên trình xử lý hiện có:

Nhân tiện, chúng ta có thể gán một chức năng hiện có như một người xử lý trực tiếp:

hàm saythanks () {alert ('cảm ơn!'); } elem.onclick = saythanks;

Để loại bỏ một người xử lý - gán elem.onclick = null.

Truy cập phần tử: Đây là giá trị của bên trong một trình xử lý là phần tử. Một trong đó có người xử lý trên đó. Trong nút bên dưới hiển thị nội dung của nó bằng cách sử dụng này.

Những sai lầm có thể xảy ra nếu bạn bắt đầu làm việc với sự kiện - xin lưu ý một số sự tinh tế. Hàm nên được gán là Saythanks, không phải Saythanks (). // nút bên phải.onclick = saythanks;

// Nút sai.onclick = Saythanks ();

Nếu chúng ta thêm dấu ngoặc đơn, Saythanks () - là một cuộc gọi chức năng. Vì vậy, dòng cuối cùng thực sự có kết quả của việc thực thi chức năng, điều đó không được xác định (vì hàm không trả về không có gì) và gán nó cho onclick. Điều đó không làm việc. Nhưng trong đánh dấu, chúng tôi cần các dấu ngoặc đơn:

Sự khác biệt là dễ dàng để giải thích. Khi trình duyệt đọc thuộc tính, nó tạo ra một hàm xử lý với cơ thể từ nội dung của nó. Vì vậy, ví dụ cuối cùng giống như:

nút.onclick = function () {Saythanks (); // Nội dung thuộc tính};

Sử dụng các chức năng, không phải chuỗi. Bài tập elem.onclick = "alert (1)" cũng sẽ hoạt động. Nó hoạt động vì lý do tương thích, nhưng không được khuyến khích. Don Tiết sử dụng SetAttribution cho người xử lý. Một cuộc gọi như vậy đã giành được công việc:

// Nhấp vào sẽ tạo lỗi, // Vì các thuộc tính luôn là chuỗi, hàm trở thành một chuỗi tài liệu.body.setAttribution ('onclick', function () {alert (1)});

Các trường hợp tài sản Dom-Property. Chỉ định một trình xử lý cho elem.onclick, không phải elem.onclick, bởi vì các thuộc tính dom có ​​tính nhạy cảm với trường hợp.

AddEventListener Vấn đề cơ bản của các cách nói trên để chỉ định người xử lý - chúng tôi có thể gán nhiều trình xử lý cho một sự kiện.

Chẳng hạn, một phần của mã của chúng tôi muốn làm nổi bật một nút trên nhấp chuột và một phần khác muốn hiển thị một tin nhắn. Chúng tôi muốn chỉ định hai trình xử lý sự kiện cho điều đó. Nhưng một thuộc tính DOM mới sẽ ghi đè lên một thuộc tính hiện có:

Chẳng hạn, một phần của mã của chúng tôi muốn làm nổi bật một nút trên nhấp chuột và một phần khác muốn hiển thị một tin nhắn. Chúng tôi muốn chỉ định hai trình xử lý sự kiện cho điều đó. Nhưng một thuộc tính DOM mới sẽ ghi đè lên một thuộc tính hiện có:

input.onclick = function () {alert (1); } // ... input.onclick = function () {alert (2); } // Thay thế trình xử lý trước đó

Các nhà phát triển tiêu chuẩn web hiểu rằng từ lâu và đề xuất một cách thay thế để quản lý người xử lý bằng các phương pháp đặc biệt addeventlistener và removeEventListener. Họ không có vấn đề như vậy. Cú pháp để thêm một người xử lý:

Loại bỏ yêu cầu cùng một chức năng

Để loại bỏ một trình xử lý, chúng ta nên vượt qua chính xác chức năng như được gán. Điều đó không hoạt động:

elem.addeventListener ("click", () => alert ('cảm ơn!')); // .... elem.RemoveEventListener ("Nhấp", () => alert ('cảm ơn!'));

Trình xử lý đã giành chiến thắng được loại bỏ, bởi vì RemoveEventListener có một chức năng khác - với cùng một mã, nhưng điều đó không quan trọng. Đây là cách đúng đắn:

Chức năng xử lý () {alert ('cảm ơn!'); } input.AddEnentListener ("Nhấp", Handler); // .... input.RemoveEventListener ("Nhấp", Handler);

Xin lưu ý - nếu chúng tôi không lưu trữ chức năng trong một biến, thì chúng tôi có thể loại bỏ nó. Không có cách nào để đọc lại những người xử lý của người khác được chỉ định bởi AddEventListener. Nhiều cuộc gọi đến AddEventListener cho phép thêm nhiều trình xử lý, như thế này:

Như chúng ta có thể thấy trong ví dụ trên, chúng ta có thể đặt trình xử lý cả bằng cách sử dụng DomProperty và AddEventListener. Nhưng nói chung chúng tôi chỉ sử dụng một trong những cách này.

Đối với một số sự kiện, người xử lý chỉ làm việc với AddEventListener

Có tồn tại các sự kiện có thể được chỉ định thông qua một tài sản DOM. Phải sử dụng AddEventListener. Chẳng hạn, quá trình chuyển đổi sự kiện (hoạt hình CSS kết thúc) là như vậy. Hãy thử mã bên dưới. Trong hầu hết các trình duyệt, chỉ có trình xử lý thứ hai hoạt động, không phải là đầu tiên.

cảnh báo ("1")); nút.RemoveEventListener ("Nhấp", () => ALERT ("1")); nút.onclick = () => alert (2);

Để giải pháp

Di chuyển quả bóng trên tầm quan trọng của trường: 5 Di chuyển bóng trên sân sang một cú nhấp chuột. Giống như thế này: Nhấp vào một trường để di chuyển bóng ở đó. ......................... ......................... ......................... ......................... ......................... ......................... ......................... .........................

Yêu cầu: ●

Trung tâm bóng sẽ đến chính xác dưới con trỏ trên nhấp chuột (nếu có thể mà không vượt qua cạnh trường). CSS-Animation được chào đón.

Trung tâm bóng sẽ đến chính xác dưới con trỏ trên nhấp chuột (nếu có thể mà không vượt qua cạnh trường). CSS-Animation được chào đón.

Trung tâm bóng sẽ đến chính xác dưới con trỏ trên nhấp chuột (nếu có thể mà không vượt qua cạnh trường). CSS-Animation được chào đón.

Bóng không được ranh giới trường chéo.

Trung tâm bóng sẽ đến chính xác dưới con trỏ trên nhấp chuột (nếu có thể mà không vượt qua cạnh trường). CSS-Animation được chào đón.

Bóng không được ranh giới trường chéo.

Khi trang được cuộn, không có gì nên phá vỡ.

Để giải pháp

Di chuyển quả bóng trên tầm quan trọng của trường: 5 Di chuyển bóng trên sân sang một cú nhấp chuột. Giống như thế này: Nhấp vào một trường để di chuyển bóng ở đó. ......................... ......................... ......................... ......................... ......................... ......................... ......................... .........................

Yêu cầu: ●

Khi trang được cuộn, không có gì nên phá vỡ.

Để giải pháp

Di chuyển quả bóng trên tầm quan trọng của trường: 5 Di chuyển bóng trên sân sang một cú nhấp chuột. Giống như thế này: Nhấp vào một trường để di chuyển bóng ở đó. ......................... ......................... ......................... ......................... ......................... ......................... ......................... .........................

Yêu cầu: ●

Trung tâm bóng sẽ đến chính xác dưới con trỏ trên nhấp chuột (nếu có thể mà không vượt qua cạnh trường). CSS-Animation được chào đón.

Yêu cầu: ●

Yêu cầu: ●

Trung tâm bóng sẽ đến chính xác dưới con trỏ trên nhấp chuột (nếu có thể mà không vượt qua cạnh trường). CSS-Animation được chào đón.

Bóng không được ranh giới trường chéo.

Khi trang được cuộn, không có gì nên phá vỡ.

Để giải pháp

Di chuyển quả bóng trên tầm quan trọng của trường: 5 Di chuyển bóng trên sân sang một cú nhấp chuột. Giống như thế này: Nhấp vào một trường để di chuyển bóng ở đó. ......................... ......................... ......................... ......................... ......................... ......................... ......................... .........................

Yêu cầu: ●

Trung tâm bóng sẽ đến chính xác dưới con trỏ trên nhấp chuột (nếu có thể mà không vượt qua cạnh trường). CSS-Animation được chào đón.

Bóng không được ranh giới trường chéo.

Khi trang được cuộn, không có gì nên phá vỡ.

Để giải pháp

Di chuyển quả bóng trên tầm quan trọng của trường: 5 Di chuyển bóng trên sân sang một cú nhấp chuột. Giống như thế này: Nhấp vào một trường để di chuyển bóng ở đó. ......................... ......................... ......................... ......................... ......................... ......................... ......................... .........................

Yêu cầu: ●

Trung tâm bóng sẽ đến chính xác dưới con trỏ trên nhấp chuột (nếu có thể mà không vượt qua cạnh trường). CSS-Animation được chào đón.

Bóng không được ranh giới trường chéo.

Khi trang được cuộn, không có gì nên phá vỡ.

Ghi chú: ●

Mã cũng nên hoạt động với các kích thước bóng và trường khác nhau, không bị ràng buộc với bất kỳ giá trị cố định nào. Sử dụng Thuộc tính Event.ClientX/Event.Clienty cho tọa độ nhấp chuột.

Mở một hộp cát cho nhiệm vụ.

Tạo một menu trượt tầm quan trọng: 5 Tạo một menu mở/sụp đổ khi nhấp vào: ▶ Sweeties

Vì vậy, nếu chúng ta nhấp vào

, sau đó chúng tôi sẽ thấy 3 cảnh báo: P → Div → Form. Quá trình này được gọi là Bong Bubbled, bởi vì các sự kiện Bong bóng bong bóng từ phần tử bên trong qua các bậc cha mẹ như một bong bóng trong nước.

Hầu như tất cả các sự kiện bong bóng.

Từ khóa trong cụm từ này là gần như. Ví dụ, một sự kiện tập trung không bong bóng. Có những ví dụ khác quá, chúng tôi sẽ gặp họ. Nhưng nó vẫn là một ngoại lệ, thay vì một quy tắc, hầu hết các sự kiện đều làm bong bóng.

Event.Target Một trình xử lý trên một phần tử cha luôn có thể nhận được chi tiết về nơi nó thực sự xảy ra. Phần tử được lồng sâu nhất gây ra sự kiện được gọi là phần tử đích, có thể truy cập dưới dạng event.target. Lưu ý sự khác biệt từ điều này (= event.currentTarget):

Event.Target - là thành phần của mục tiêu trực tuyến đã bắt đầu sự kiện, nó không thay đổi thông qua quá trình sủi bọt. Đây - là phần tử hiện tại của người Viking, một yếu tố có trình xử lý hiện đang chạy trên đó.

Chẳng hạn, nếu chúng ta có một hình thức xử lý duy nhất.onclick, thì nó có thể bắt được tất cả các nhấp chuột bên trong biểu mẫu. Bất kể việc nhấp chuột nào xảy ra, nó bong bóng lên và chạy trình xử lý. Trong mẫu. Trình xử lý một lần: ●

Event.Target - là thành phần của mục tiêu trực tuyến đã bắt đầu sự kiện, nó không thay đổi thông qua quá trình sủi bọt. Đây - là phần tử hiện tại của người Viking, một yếu tố có trình xử lý hiện đang chạy trên đó.

Chẳng hạn, nếu chúng ta có một hình thức xử lý duy nhất.onclick, thì nó có thể bắt được tất cả các nhấp chuột bên trong biểu mẫu. Bất kể việc nhấp chuột nào xảy ra, nó bong bóng lên và chạy trình xử lý. Trong mẫu. Trình xử lý một lần: ●

Điều này (= event.civerseTarget) là yếu tố, bởi vì trình xử lý chạy trên đó. event.target là phần tử cụ thể bên trong biểu mẫu thực sự được nhấp.

Kiểm tra xem: https://plnkr.co/edit/iapo3qfpdphzxju0jita?p=preview

Nó có thể là sự kiện.Target bằng này - khi nhấp chuột được thực hiện trực tiếp trên phần tử.

Nó có thể là sự kiện.Target bằng này - khi nhấp chuột được thực hiện trực tiếp trên phần tử.

Ngừng sủi bọt một sự kiện sủi bọt đi từ phần tử đích thẳng lên. Thông thường, nó đi lên cho đến khi, sau đó để ghi lại đối tượng, và một số sự kiện thậm chí còn tiếp cận cửa sổ, gọi tất cả các trình xử lý trên đường dẫn. Nhưng bất kỳ người xử lý nào cũng có thể quyết định rằng sự kiện này đã được xử lý đầy đủ và ngăn chặn sự sủi bọt. Phương pháp cho nó là event.stoppropagation (). Chẳng hạn, ở đây Body.onclick không hoạt động nếu bạn nhấp vào:

Nhấp vào đây

Hầu như tất cả các sự kiện bong bóng.

Từ khóa trong cụm từ này là gần như. Ví dụ, một sự kiện tập trung không bong bóng. Có những ví dụ khác quá, chúng tôi sẽ gặp họ. Nhưng nó vẫn là một ngoại lệ, thay vì một quy tắc, hầu hết các sự kiện đều làm bong bóng.

Event.Target Một trình xử lý trên một phần tử cha luôn có thể nhận được chi tiết về nơi nó thực sự xảy ra. Phần tử được lồng sâu nhất gây ra sự kiện được gọi là phần tử đích, có thể truy cập dưới dạng event.target. Lưu ý sự khác biệt từ điều này (= event.currentTarget):

Điều này (= event.civerseTarget) là yếu tố, bởi vì trình xử lý chạy trên đó. event.target là phần tử cụ thể bên trong biểu mẫu thực sự được nhấp.

Kiểm tra xem: https://plnkr.co/edit/iapo3qfpdphzxju0jita?p=preview

Nó có thể là sự kiện.Target bằng này - khi nhấp chuột được thực hiện trực tiếp trên phần tử.

Ngừng sủi bọt một sự kiện sủi bọt đi từ phần tử đích thẳng lên. Thông thường, nó đi lên cho đến khi, sau đó để ghi lại đối tượng, và một số sự kiện thậm chí còn tiếp cận cửa sổ, gọi tất cả các trình xử lý trên đường dẫn. Nhưng bất kỳ người xử lý nào cũng có thể quyết định rằng sự kiện này đã được xử lý đầy đủ và ngăn chặn sự sủi bọt. Phương pháp cho nó là event.stoppropagation (). Chẳng hạn, ở đây Body.onclick không hoạt động nếu bạn nhấp vào:

Nhấp vào đây

sự kiện.

Có hai giá trị có thể của tùy chọn chụp: ●

Nếu nó sai (mặc định), thì trình xử lý được đặt trên pha sủi bọt.

Nếu nó đúng, thì người xử lý được đặt ở giai đoạn bắt giữ.

Lưu ý rằng mặc dù chính thức có 3 giai đoạn, giai đoạn 2 (giai đoạn mục tiêu của Hồi giáo: sự kiện đạt đến phần tử) không được xử lý riêng: Trình xử lý trên cả hai pha chụp và sủi bọt kích hoạt ở pha đó. Hãy cùng xem cả hai lần bắt giữ và sủi bọt trong hành động:

Hình thức div

P

Hình thức div p

Mã đặt bộ xử lý nhấp vào mọi yếu tố trong tài liệu để xem cái nào đang hoạt động. Nếu bạn nhấp vào

, sau đó trình tự là:

1. HTML → Body → Form → Div (pha chụp, người nghe đầu tiên): 2. P (cụm mục tiêu, kích hoạt hai lần, khi chúng tôi đặt hai người nghe: chụp và sủi bọt) 3. Div → Mẫu (Giai đoạn sủi bọt, người nghe thứ hai). Có một sự kiện tài sản.Eventphase cho chúng ta biết số lượng pha mà sự kiện đã bị bắt. Nhưng nó hiếm khi được sử dụng, bởi vì chúng ta thường biết nó trong người xử lý.

Để loại bỏ trình xử lý, RemoveEventListener cần cùng pha

Nếu chúng ta addEventListener (..., true), thì chúng ta nên đề cập đến cùng một pha trong RemoveEventListener (..., đúng) để loại bỏ chính xác trình xử lý.

Để loại bỏ trình xử lý, RemoveEventListener cần cùng pha

Nếu chúng ta addEventListener (..., true), thì chúng ta nên đề cập đến cùng một pha trong RemoveEventListener (..., đúng) để loại bỏ chính xác trình xử lý.

Người nghe trên cùng một phần tử và cùng một pha chạy theo thứ tự đã đặt của họ

Nếu chúng ta có nhiều trình xử lý sự kiện ở cùng một pha, được gán cho cùng một yếu tố với AddEventListener, chúng sẽ chạy theo cùng thứ tự như chúng được tạo:

Nếu nó đúng, thì người xử lý được đặt ở giai đoạn bắt giữ.

Lưu ý rằng mặc dù chính thức có 3 giai đoạn, giai đoạn 2 (giai đoạn mục tiêu của Hồi giáo: sự kiện đạt đến phần tử) không được xử lý riêng: Trình xử lý trên cả hai pha chụp và sủi bọt kích hoạt ở pha đó. Hãy cùng xem cả hai lần bắt giữ và sủi bọt trong hành động:

Hình thức div

P

Hình thức div p

Mã đặt bộ xử lý nhấp vào mọi yếu tố trong tài liệu để xem cái nào đang hoạt động. Nếu bạn nhấp vào , sau đó trình tự là:

1. HTML → Body → Form → Div (pha chụp, người nghe đầu tiên): 2. P (cụm mục tiêu, kích hoạt hai lần, khi chúng tôi đặt hai người nghe: chụp và sủi bọt) 3. Div → Mẫu (Giai đoạn sủi bọt, người nghe thứ hai). Có một sự kiện tài sản.Eventphase cho chúng ta biết số lượng pha mà sự kiện đã bị bắt. Nhưng nó hiếm khi được sử dụng, bởi vì chúng ta thường biết nó trong người xử lý.

Để loại bỏ trình xử lý, RemoveEventListener cần cùng pha

Nếu chúng ta addEventListener (..., true), thì chúng ta nên đề cập đến cùng một pha trong RemoveEventListener (..., đúng) để loại bỏ chính xác trình xử lý.

Người nghe trên cùng một phần tử và cùng một pha chạy theo thứ tự đã đặt của họ

Nếu chúng ta có nhiều trình xử lý sự kiện ở cùng một pha, được gán cho cùng một yếu tố với AddEventListener, chúng sẽ chạy theo cùng thứ tự như chúng được tạo:

elem.addeventListener ("click", e => alert (1)); // Đảm bảo kích hoạt elem.addeventlistener đầu tiên ("Nhấp", e => alert (2));

Tóm tắt khi một sự kiện xảy ra - yếu tố lồng nhau nhất nơi nó xảy ra được gắn nhãn là phần tử mục tiêu của Google (Event.target). ●

Sau đó, sự kiện chuyển xuống từ root tài liệu sang event.target, người xử lý gọi được gán với addEventListener (...., true) trên đường (true là tốc ký cho {Capture: true}). Sau đó, người xử lý được gọi trên chính phần tử đích. Sau đó, sự kiện bong bóng từ Event.Target cho đến gốc, gọi Trình xử lý được gán bằng cách sử dụng và AddEventListener mà không có đối số thứ 3 hoặc với đối số thứ 3 Sai/{Capture: False}.

Mỗi người xử lý có thể truy cập các thuộc tính đối tượng sự kiện: ●

event.target - yếu tố sâu nhất có nguồn gốc sự kiện.

event.cienTarget (= this) - phần tử hiện tại xử lý sự kiện (một phần có trình xử lý trên đó) sự kiện.EventPhase - pha hiện tại (bắt giữ = 1, Target = 2, sủi bọt = 3).

Bất kỳ người xử lý sự kiện nào cũng có thể dừng sự kiện bằng cách gọi Event.StopPropagation (), nhưng điều đó không được khuyến nghị, bởi vì chúng tôi có thể thực sự chắc chắn rằng chúng tôi đã giành được điều đó ở trên, có thể là những điều hoàn toàn khác nhau. Giai đoạn bắt giữ được sử dụng rất hiếm khi, thông thường chúng tôi xử lý các sự kiện trên sủi bọt. Và có một logic đằng sau đó. Trong thế giới thực, khi một tai nạn xảy ra, chính quyền địa phương phản ứng trước. Họ biết tốt nhất khu vực nơi nó đã xảy ra. Sau đó, các cơ quan cấp cao hơn nếu cần. Điều tương tự cho người xử lý sự kiện. Mã đặt trình xử lý trên một phần tử cụ thể biết chi tiết tối đa về phần tử và những gì nó làm. Một người xử lý cụ thể

có thể phù hợp chính xác cho điều đó
, nó biết mọi thứ về nó, vì vậy nó sẽ có cơ hội trước. Sau đó, cha mẹ ngay lập tức của nó cũng biết về bối cảnh, nhưng ít hơn một chút, và cho đến khi phần tử hàng đầu xử lý các khái niệm chung và chạy cuối cùng. SHOMBLED VÀ CAPRUNING LANG TÀI KHOẢN CHO ĐỘNG SẢN Sự kiện của người Hồi giáo - một mô hình xử lý sự kiện cực kỳ mạnh mẽ mà chúng ta nghiên cứu trong chương tiếp theo.
Phái đoàn sự kiện nắm bắt và sủi bọt cho phép chúng tôi thực hiện một trong những mô hình xử lý sự kiện mạnh mẽ nhất được gọi là Phái đoàn sự kiện. Ý tưởng là nếu chúng ta có nhiều yếu tố được xử lý theo cách tương tự, thì thay vì gán một người xử lý cho mỗi người trong số họ - chúng ta đặt một người xử lý duy nhất vào tổ tiên chung của họ. Trong The Handler, chúng tôi nhận được sự kiện.Target, xem nơi sự kiện thực sự xảy ra và xử lý nó. Hãy cùng xem một ví dụ-triết lý sơ đồ BA-Gua. Đây là:Northwest...

phản ánh người Trung Quốc cổ đại

trong một cái nhấp chuột. Thay vì gán một trình xử lý onclick cho mỗi . Nó sẽ sử dụng Event.Target để có được phần tử đã nhấp và làm nổi bật nó. Mật mã:

Cho phépTD; bảng.onclick = function (event) {let target = event.target; // Nhấp chuột ở đâu?

if (target.tagname! = 'td') return; // Không phải trên TD? Sau đó, chúng tôi không quan tâm nổi bật (mục tiêu); // làm nổi bật nó}; hàm nhấn mạnh (td) {if (selectTd) {// xóa điểm nổi bật hiện có nếu bất kỳ lựa chọn nào } selectTd = td; selectTd.ClassList.Add ('tô sáng'); // làm nổi bật TD mới}

Một mã như vậy không quan tâm đến việc có bao nhiêu ô trong bảng. Chúng tôi có thể thêm/xóa

Đương nhiên, nếu một nhấp chuột xảy ra trên đó thì nó sẽ trở thành giá trị của Event.Target. then it becomes the value of event.target .

Trong bảng xử lý.onclick, chúng ta nên tham gia

. 4. Tăng ngày trong d: d.setdate (d.getdate ()+1). Nếu D.GetMonth () chưa phải vào tháng tới, thì hãy thêm ô mới. 5. Nếu tháng kết thúc, nhưng hàng bảng chưa đầy” . 5. If the month has finished, but the table row is not yet full, add empty
Động lực bất cứ lúc nào và sự nổi bật vẫn sẽ hoạt động. Tuy nhiên, có một nhược điểm. Nhấp chuột có thể xảy ra không trên , nhưng bên trong nó. Trong trường hợp của chúng tôi nếu chúng ta nhìn vào bên trong HTML, chúng ta có thể thấy các thẻ lồng nhau bên trong , giống : : Tây Bắc ... ... hay không. Ở đây, mã hóa được cải thiện:

bảng.onclick = function (event) {let td = event.target.closest ('td'); // (1) if (! Td) trả về; // (2) if (! Bảng.contains (td)) return; // (3) nổi bật (TD); // (4) };

Giải thích: 1. Phương thức elem.closest (bộ chọn) trả về tổ tiên gần nhất phù hợp với bộ chọn. Trong trường hợp của chúng tôi, chúng tôi tìm kiếm

Trên đường lên từ phần tử nguồn. 2. Nếu event.target không ở trong bất kỳ , sau đó cuộc gọi trở lại NULL, và chúng tôi không phải làm bất cứ điều gì. 3. Trong trường hợp bảng lồng nhau, sự kiện.Target có thể là một nằm bên ngoài bàn hiện tại. Vì vậy, chúng tôi kiểm tra xem đó có thực sự là bảng của chúng tôi không . 4. Và, nếu nó như vậy, thì hãy làm nổi bật nó.

Ví dụ về ủy quyền: Các hành động trong đánh dấu ủy quyền sự kiện có thể được sử dụng để tối ưu hóa việc xử lý sự kiện. Chúng tôi sử dụng một trình xử lý duy nhất cho các hành động tương tự trên nhiều yếu tố. Giống như chúng tôi đã làm điều đó để làm nổi bật

. Nhưng chúng ta cũng có thể sử dụng một người xử lý duy nhất làm điểm vào cho nhiều thứ khác nhau. Chẳng hạn, chúng tôi muốn tạo một menu với các nút Save Save, Tải, tải, Tìm kiếm, v.v. Và có một đối tượng với các phương thức lưu, tải, tìm kiếm. Ý tưởng đầu tiên có thể là gán một trình xử lý riêng cho mỗi nút. Nhưng có một giải pháp thanh lịch hơn. Chúng tôi có thể thêm một trình xử lý cho toàn bộ menu và các thuộc tính DataAction cho các nút có phương thức gọi: bấm để lưu

Trình xử lý đọc thuộc tính và thực thi phương thức. Hãy xem ví dụ làm việc:

Lưu tải

Tìm kiếm

Tiết kiệm

Trọng tải

Tìm kiếm

Xin lưu ý rằng điều này.onclick bị ràng buộc với điều này trong (*). Điều đó rất quan trọng, bởi vì nếu không thì bên trong nó sẽ tham chiếu phần tử DOM (ELEM), không phải đối tượng menu và [hành động] này sẽ không phải là thứ chúng ta cần. Vì vậy, những gì phái đoàn cho chúng ta ở đây?

Chúng tôi không cần phải viết mã để gán một trình xử lý cho mỗi nút. Chỉ cần tạo một phương pháp và đặt nó vào đánh dấu. Cấu trúc HTML linh hoạt, chúng ta có thể thêm/xóa các nút bất cứ lúc nào.

Chúng tôi cũng có thể sử dụng các lớp .action-save, .action-tải, nhưng một hành động dữ liệu thuộc tính tốt hơn về mặt ngữ nghĩa. Và chúng ta cũng có thể sử dụng nó trong các quy tắc CSS.

Mô hình hành vi của người Viking, chúng tôi cũng có thể sử dụng Phái đoàn sự kiện để thêm các hành vi của người Viking vào các yếu tố được khai báo, với các thuộc tính và lớp đặc biệt. Mẫu có hai phần: 1. Chúng tôi thêm một thuộc tính đặc biệt vào một phần tử. 2. Một trình xử lý toàn tài liệu theo dõi các sự kiện và nếu một sự kiện xảy ra trên một phần tử quy kết-thực hiện hành động.

Chẳng hạn, ở đây, ở đây, việc ghi dữ liệu thuộc tính thêm một hành vi: Giá trị tăng lên trên các nút Nhấp vào các nút:

Counter: Một bộ đếm nữa:

Counter: 1 một bộ đếm nữa: 2

Nếu chúng ta nhấp vào một nút - giá trị của nó được tăng lên. Không phải nút, nhưng cách tiếp cận chung là quan trọng ở đây. Có thể có nhiều thuộc tính có dữ liệu như chúng ta muốn. Chúng ta có thể thêm những cái mới vào HTML bất cứ lúc nào. Sử dụng phái đoàn sự kiện, chúng tôi đã mở rộng HTML, đã thêm một thuộc tính mô tả một hành vi mới.

Đối với trình xử lý cấp tài liệu-Luôn luôn luôn

Khi chúng tôi chỉ định một trình xử lý sự kiện cho đối tượng tài liệu, chúng tôi nên luôn sử dụng AddEventListener, không phải tài liệu. Đối với các dự án thực tế, điều bình thường là có nhiều trình xử lý trên tài liệu được đặt bởi các phần khác nhau của mã.

Toggler một ví dụ nữa. Một nhấp chuột vào một phần tử với Data-Toggle-ID thuộc tính sẽ hiển thị/ẩn phần tử bằng ID đã cho:

Hiển thị biểu mẫu đăng ký

Thư của bạn:

Hiển thị biểu mẫu đăng ký

Hãy để lưu ý một lần nữa những gì chúng tôi đã làm. Bây giờ, để thêm chức năng chuyển đổi vào một phần tử-ở đó, không cần phải biết JavaScript, chỉ cần sử dụng thuộc tính Datatoggle-id. Điều đó có thể trở nên thực sự thuận tiện - không cần phải viết JavaScript cho mọi yếu tố như vậy. Chỉ cần sử dụng hành vi. Trình xử lý cấp tài liệu làm cho nó hoạt động cho bất kỳ yếu tố nào của trang. Chúng ta cũng có thể kết hợp nhiều hành vi trên một yếu tố duy nhất. Mô hình hành vi của người Viking có thể là một sự thay thế của các bản dựng mini của JavaScript.

Tóm tắt Phái đoàn sự kiện thực sự tuyệt vời! Nó là một trong những mẫu hữu ích nhất cho các sự kiện DOM. Nó thường được sử dụng để thêm xử lý cho nhiều yếu tố tương tự, nhưng không chỉ cho điều đó. Thuật toán: 1. Đặt một trình xử lý duy nhất trên container. 2. Trong Handler - Kiểm tra phần tử nguồn .Target. 3. Nếu sự kiện xảy ra bên trong một yếu tố khiến chúng tôi quan tâm, thì hãy xử lý sự kiện. Lợi ích:

Đơn giản hóa việc khởi tạo và lưu bộ nhớ: Không cần thêm nhiều trình xử lý. Ít mã hơn: Khi thêm hoặc xóa các phần tử, không cần thêm/xóa trình xử lý. Sửa đổi DOM: Chúng ta có thể thêm/loại bỏ khối lượng các phần tử bằng bên trong và giống nhau.

Tất nhiên, phái đoàn có những hạn chế của nó:

Đơn giản hóa việc khởi tạo và lưu bộ nhớ: Không cần thêm nhiều trình xử lý. Ít mã hơn: Khi thêm hoặc xóa các phần tử, không cần thêm/xóa trình xử lý. Sửa đổi DOM: Chúng ta có thể thêm/loại bỏ khối lượng các phần tử bằng bên trong và giống nhau.

Tất nhiên, phái đoàn có những hạn chế của nó:

Đầu tiên, sự kiện phải sủi bọt. Một số sự kiện không bong bóng. Ngoài ra, người xử lý cấp thấp không nên sử dụng Event.StopPropagation (). Thứ hai, phái đoàn có thể thêm tải CPU, bởi vì trình xử lý cấp độ container phản ứng trên các sự kiện ở bất kỳ nơi nào của container, bất kể họ có quan tâm đến chúng tôi hay không. Nhưng thông thường tải không đáng kể, vì vậy chúng tôi không tính đến nó.

Nhiệm vụ ẩn tin nhắn với phái đoàn

Tầm quan trọng: 5 Có một danh sách các tin nhắn với các nút xóa [x]. Làm cho các nút hoạt động. Như thế này: [x]

Ngựa

Con ngựa là một trong hai phân loài còn tồn tại của Equus Ferus. Đó là một động vật có vú kỳ lạ thuộc về họ Equidae phân loại. Con ngựa đã phát triển trong 45 đến 55 triệu năm qua từ một sinh vật nhiều mũi nhỏ, Eohippus, vào con vật lớn, độc thân ngày nay.

Ngựa

Con ngựa là một trong hai phân loài còn tồn tại của Equus Ferus. Đó là một động vật có vú kỳ lạ thuộc về họ Equidae phân loại. Con ngựa đã phát triển trong 45 đến 55 triệu năm qua từ một sinh vật nhiều mũi nhỏ, Eohippus, vào con vật lớn, độc thân ngày nay.

[x]

Donkey con lừa hoặc mông (Equus Africanus asinus) là một thành viên được thuần hóa của gia đình ngựa, Equidae. Tổ tiên hoang dã của con lừa là mông hoang dã châu Phi, E. Phi. Con lừa đã được sử dụng như một động vật làm việc trong ít nhất 5000 năm.

Con mèo

Con mèo nhà (tiếng Latin: Felis Catus) là một động vật có vú nhỏ, thường là động vật có vú ăn thịt. Chúng thường được gọi là mèo nhà khi được nuôi làm vật nuôi trong nhà hoặc đơn giản là mèo khi không cần phải phân biệt chúng với các felids và mèo khác. Mèo thường được con người đánh giá cao để đồng hành và vì khả năng săn sâu của chúng.

P.S. Chỉ nên là một người nghe sự kiện trên container, sử dụng Phái đoàn sự kiện. Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Menu Tree Tầm quan trọng: 5 Tạo một cây hiển thị/ẩn nút trẻ em khi nhấp vào:

Đơn giản hóa việc khởi tạo và lưu bộ nhớ: Không cần thêm nhiều trình xử lý. Ít mã hơn: Khi thêm hoặc xóa các phần tử, không cần thêm/xóa trình xử lý. Sửa đổi DOM: Chúng ta có thể thêm/loại bỏ khối lượng các phần tử bằng bên trong và giống nhau.

Tất nhiên, phái đoàn có những hạn chế của nó:

Con mèo

Con mèo nhà (tiếng Latin: Felis Catus) là một động vật có vú nhỏ, thường là động vật có vú ăn thịt. Chúng thường được gọi là mèo nhà khi được nuôi làm vật nuôi trong nhà hoặc đơn giản là mèo khi không cần phải phân biệt chúng với các felids và mèo khác. Mèo thường được con người đánh giá cao để đồng hành và vì khả năng săn sâu của chúng.

P.S. Chỉ nên là một người nghe sự kiện trên container, sử dụng Phái đoàn sự kiện. Mở một hộp cát cho nhiệm vụ.

Để giải pháp
Menu Tree Tầm quan trọng: 5 Tạo một cây hiển thị/ẩn nút trẻ em khi nhấp vào: Động vật Động vật có vú bò con lừa chó Hổ khác Chim con thằn lằn cá cá hồ cá cá con cá hồi biển biển Angelfish
5 Yêu cầu: ●
10 Chỉ có một người xử lý sự kiện (sử dụng phái đoàn)

Một nhấp chuột bên ngoài tiêu đề nút (trên một khoảng trống) không nên làm gì cả.

Mở một hộp cát cho nhiệm vụ.

2

Tầm quan trọng của bảng có thể sắp xếp

12

Các yếu tố nên sắp xếp nó theo cột tương ứng. Mỗi

9

Có loại trong thuộc tính, như thế này: ...

1

Tuổi tác

Tên

Con mèo

Con mèo nhà (tiếng Latin: Felis Catus) là một động vật có vú nhỏ, thường là động vật có vú ăn thịt. Chúng thường được gọi là mèo nhà khi được nuôi làm vật nuôi trong nhà hoặc đơn giản là mèo khi không cần phải phân biệt chúng với các felids và mèo khác. Mèo thường được con người đánh giá cao để đồng hành và vì khả năng săn sâu của chúng.

P.S. Chỉ nên là một người nghe sự kiện trên container, sử dụng Phái đoàn sự kiện. Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Menu Tree Tầm quan trọng: 5 Tạo một cây hiển thị/ẩn nút trẻ em khi nhấp vào:

Động vật Động vật có vú bò con lừa chó Hổ khác Chim con thằn lằn cá cá hồ cá cá con cá hồi biển biển Angelfish

Yêu cầu: ●

Đơn giản hóa việc khởi tạo và lưu bộ nhớ: Không cần thêm nhiều trình xử lý. Ít mã hơn: Khi thêm hoặc xóa các phần tử, không cần thêm/xóa trình xử lý. Sửa đổi DOM: Chúng ta có thể thêm/loại bỏ khối lượng các phần tử bằng bên trong và giống nhau.

Bạn sẽ cần hai sự kiện ở đây: ●

MouseOver kích hoạt khi một con trỏ đi qua một phần tử.

Chuột kích hoạt khi một con trỏ để lại một phần tử.

Vui lòng sử dụng Phái đoàn sự kiện: Thiết lập hai trình xử lý trên tài liệu để theo dõi tất cả các bộ phận vượt trội và ra khỏi các yếu tố với các yếu tố với công cụ dữ liệu và quản lý các chú giải công cụ từ đó. Sau khi hành vi được thực hiện, ngay cả những người không quen thuộc với JavaScript cũng có thể thêm các yếu tố được chú thích. P.S. Chỉ có một chú giải công cụ có thể hiển thị tại một thời điểm. Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Trình duyệt hành động mặc định Nhiều sự kiện tự động dẫn đến các hành động của trình duyệt. Ví dụ:

Chuột kích hoạt khi một con trỏ để lại một phần tử.

Chuột kích hoạt khi một con trỏ để lại một phần tử.

Chuột kích hoạt khi một con trỏ để lại một phần tử.

Vui lòng sử dụng Phái đoàn sự kiện: Thiết lập hai trình xử lý trên tài liệu để theo dõi tất cả các bộ phận vượt trội và ra khỏi các yếu tố với các yếu tố với công cụ dữ liệu và quản lý các chú giải công cụ từ đó. Sau khi hành vi được thực hiện, ngay cả những người không quen thuộc với JavaScript cũng có thể thêm các yếu tố được chú thích. P.S. Chỉ có một chú giải công cụ có thể hiển thị tại một thời điểm. Mở một hộp cát cho nhiệm vụ.

Chuột kích hoạt khi một con trỏ để lại một phần tử.

Vui lòng sử dụng Phái đoàn sự kiện: Thiết lập hai trình xử lý trên tài liệu để theo dõi tất cả các bộ phận vượt trội và ra khỏi các yếu tố với các yếu tố với công cụ dữ liệu và quản lý các chú giải công cụ từ đó. Sau khi hành vi được thực hiện, ngay cả những người không quen thuộc với JavaScript cũng có thể thêm các yếu tố được chú thích. P.S. Chỉ có một chú giải công cụ có thể hiển thị tại một thời điểm. Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Trình duyệt hành động mặc định Nhiều sự kiện tự động dẫn đến các hành động của trình duyệt. Ví dụ:

Một cú nhấp chuột vào một liên kết - bắt đầu đi đến URL của nó.

Nhấp vào nút gửi bên trong một biểu mẫu - bắt đầu gửi vào máy chủ.

Nhấn nút chuột qua văn bản và di chuyển nó - chọn văn bản.

Nếu chúng tôi xử lý một sự kiện trong JavaScript, thường thì chúng tôi không muốn có các hành động của trình duyệt. May mắn thay, nó có thể được ngăn chặn.

Ngăn chặn các hành động của trình duyệt Có hai cách để nói với trình duyệt mà chúng tôi không muốn hành động: ●

Cách chính là sử dụng đối tượng sự kiện. Có một sự kiện phương thức.PreventDefault (). Nếu trình xử lý được gán bằng cách sử dụng (không phải bởi addeventListener), thì chúng ta chỉ có thể trả về sai từ nó.

Trong ví dụ dưới đây, nhấp vào các liên kết không dẫn đến thay đổi URL:

Bấm vào đây hoặc đây , that doesn’t work. Search engines follow links while indexing.

Không cần thiết để trả về đúng

Giá trị được trả về bởi một người xử lý sự kiện thường bị bỏ qua. Ngoại lệ duy nhất - là trả về sai từ một trình xử lý được gán bằng cách sử dụng. Trong tất cả các trường hợp khác, việc trả lại là không cần thiết và dù sao thì nó cũng không được xử lý.

Ví dụ: Menu Xem xét menu trang web, như thế này:

Đây là cách mà nó trông với một số CSS:

HTML

JavaScript

CSS

Các mục menu là liên kết, không phải nút. Có một số lợi ích, ví dụ: ●

Theo mặc định, trình duyệt trên sự kiện bối cảnh (nhấp chuột phải) hiển thị menu ngữ cảnh với các tùy chọn tiêu chuẩn. Chúng ta có thể ngăn chặn nó và thể hiện của riêng mình, như thế này:

Nhấp chuột phải vào menu ngữ cảnh trình duyệt

Nhấp chuột phải vào menu ngữ cảnh của chúng tôi

Nhấp chuột phải vào menu ngữ cảnh trình duyệt

Nhấp chuột phải vào menu ngữ cảnh của chúng tôi

Bây giờ, hãy để nói rằng chúng tôi muốn triển khai menu ngữ cảnh toàn tài liệu của riêng mình, với các tùy chọn của chúng tôi. Và bên trong tài liệu, chúng tôi có thể có các yếu tố khác với các menu ngữ cảnh của riêng họ:

Nhấp chuột phải vào đây cho menu ngữ cảnh tài liệu

Nhấp chuột phải vào đây cho menu ngữ cảnh nút

Nhấp chuột phải vào đây cho menu ngữ cảnh tài liệu Nhấp chuột phải vào đây cho menu ngữ cảnh nút

Vấn đề là khi chúng tôi nhấp vào ELEM, chúng tôi nhận được hai menu: mức nút và (sự kiện bong bóng lên) menu cấp tài liệu. Làm thế nào để sửa chữa nó? Một trong những giải pháp là suy nghĩ như: Chúng tôi hoàn toàn xử lý sự kiện trong trình xử lý nút, hãy để ngăn chặn nó và sử dụng Event.StopPropagation ():

Nhấp chuột phải vào menu tài liệu

Nhấp chuột phải vào menu nút (sửa bằng event.stoppropagati

Nhấp chuột phải vào menu Tài liệu Nhấp chuột phải vào menu nút (được sửa bằng Event.StopPropagation)

Bây giờ menu cấp nút hoạt động như dự định. Nhưng giá cao. Chúng tôi mãi mãi từ chối quyền truy cập vào thông tin về nhấp chuột phải cho bất kỳ mã bên ngoài nào, bao gồm cả các bộ đếm thu thập số liệu thống kê, v.v. Điều đó khá không khôn ngoan. Một giải pháp thay thế sẽ là kiểm tra trình xử lý tài liệu nếu hành động mặc định được ngăn chặn? Nếu nó là như vậy, thì sự kiện đã được xử lý và chúng tôi không cần phải phản ứng với nó.

Nhấp chuột phải vào menu tài liệu (sửa bằng event.defaultprevented)

Nhấp chuột phải vào menu nút

Nhấp chuột phải vào menu tài liệu (sửa bằng event.defaultprevented) Nhấp chuột phải vào menu nút

Bây giờ mọi thứ cũng hoạt động chính xác. Nếu chúng ta có các yếu tố lồng nhau, và mỗi phần trong số chúng có một menu ngữ cảnh của riêng nó, điều đó cũng sẽ hoạt động. Chỉ cần đảm bảo kiểm tra Event.DefaultPrevent trong mỗi trình xử lý bối cảnh.

event.stoppropagation () và event.preventDefault ()

Như chúng ta có thể thấy rõ, event.stopPropagation () và event.preventDefault () (còn được gọi là return false) là hai điều khác nhau. Họ không liên quan đến nhau.

event.stoppropagation () và event.preventDefault ()

Như chúng ta có thể thấy rõ, event.stopPropagation () và event.preventDefault () (còn được gọi là return false) là hai điều khác nhau. Họ không liên quan đến nhau.

Kiến trúc menu bối cảnh lồng nhau

Ngoài ra còn có những cách khác để thực hiện các menu bối cảnh lồng nhau. Một trong số đó là có một đối tượng toàn cầu đặc biệt với một phương thức xử lý Document.onContextMenu, và cả các phương thức cho phép lưu trữ các trình xử lý cấp độ thấp hơn khác nhau trong đó. Đối tượng sẽ bắt bất kỳ nhấp chuột phải, nhìn qua các trình xử lý được lưu trữ và chạy cái thích hợp. Nhưng sau đó, mỗi đoạn mã muốn một menu ngữ cảnh nên biết về đối tượng đó và sử dụng trợ giúp của nó thay vì trình xử lý bối cảnh riêng.

Tóm tắt Có nhiều hành động trình duyệt mặc định: ●

Mousedown - bắt đầu lựa chọn (di chuyển chuột sang chọn).

Tóm tắt Có nhiều hành động trình duyệt mặc định: ●

Tóm tắt Có nhiều hành động trình duyệt mặc định: ●

Tóm tắt Có nhiều hành động trình duyệt mặc định: ●

Tóm tắt Có nhiều hành động trình duyệt mặc định: ●

Tóm tắt Có nhiều hành động trình duyệt mặc định: ●

Mousedown - bắt đầu lựa chọn (di chuyển chuột sang chọn).

Nhấp vào - Kiểm tra/bỏ qua đầu vào.

Gửi - Nhấp vào hoặc nhấn nhập vào bên trong trường biểu mẫu khiến sự kiện này xảy ra và trình duyệt gửi biểu mẫu sau nó. Bánh xe - Lăn một sự kiện bánh xe chuột có cuộn là hành động mặc định. Keydown - Nhấn phím có thể dẫn đến việc thêm một ký tự vào một trường hoặc các hành động khác. bối cảnh-sự kiện xảy ra trên một cú nhấp chuột phải, hành động là hiển thị menu ngữ cảnh trình duyệt. …có nhiều…

Tất cả các hành động mặc định có thể được ngăn chặn nếu chúng tôi muốn xử lý sự kiện riêng bởi JavaScript.

Để ngăn chặn hành động mặc định - sử dụng một trong hai sự kiện.preventDefault () hoặc trả về sai. Phương pháp thứ hai chỉ hoạt động cho các trình xử lý được gán với ON. Bị động: Tùy chọn thực sự của AddEventListener nói với trình duyệt rằng hành động sẽ không được ngăn chặn. Điều đó hữu ích cho một số sự kiện di động, như TouchStart và TouchMove, để nói với trình duyệt rằng không nên chờ tất cả các trình xử lý hoàn thành trước khi cuộn. Nếu hành động mặc định được ngăn chặn, giá trị của event.defaultprevented trở thành đúng, nếu không thì nó sai.

Nhiệm vụ tại sao "trả lại sai" không hoạt động? Tầm quan trọng: 3 Tại sao trong mã dưới đây trả về sai không hoạt động?

Trình duyệt sẽ truy cập W3.org

Trình duyệt sẽ truy cập W3.org

Trình duyệt theo URL trên nhấp chuột, nhưng chúng tôi không muốn nó. Làm thế nào để khắc phục? Để giải pháp

Bắt các liên kết trong tầm quan trọng của phần tử: 5 Tạo tất cả các liên kết bên trong phần tử với ID = "Nội dung" Hỏi người dùng nếu họ thực sự muốn rời đi. Và nếu họ don thì don don theo dõi. Như thế này: #Contents Làm thế nào để đọc Wikipedia hoặc truy cập w3.org và tìm hiểu về các tiêu chuẩn hiện đại?

Chi tiết: ●

HTML bên trong phần tử có thể được tải hoặc tái tạo động bất cứ lúc nào, vì vậy chúng ta có thể tìm thấy tất cả các liên kết và đặt trình xử lý lên chúng. Sử dụng phái đoàn sự kiện. Nội dung có thể có thẻ lồng nhau. Các liên kết bên trong quá, như ....

Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Bộ sưu tập hình ảnh Tầm quan trọng: 5 Tạo một bộ sưu tập hình ảnh trong đó hình ảnh chính thay đổi bằng cách nhấp vào hình thu nhỏ. Như thế này:

P.S. Sử dụng phái đoàn sự kiện. Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Bộ sưu tập hình ảnh Tầm quan trọng: 5 Tạo một bộ sưu tập hình ảnh trong đó hình ảnh chính thay đổi bằng cách nhấp vào hình thu nhỏ. Như thế này:

P.S. Sử dụng phái đoàn sự kiện. Mở một hộp cát cho nhiệm vụ.

Công văn các sự kiện tùy chỉnh Chúng tôi không chỉ có thể chỉ định trình xử lý mà còn tạo các sự kiện từ JavaScript. Các sự kiện tùy chỉnh có thể được sử dụng để tạo ra các thành phần đồ họa. Chẳng hạn, một phần tử gốc của menu có thể kích hoạt các sự kiện cho biết những gì xảy ra với menu: Mở (Menu mở), chọn (một mục được chọn), v.v. Ngoài ra, chúng tôi có thể tạo ra các sự kiện tích hợp như Click, Mousedown, v.v., có thể tốt để thử nghiệm.

Sự kiện xây dựng sự kiện tạo thành một hệ thống phân cấp, giống như các lớp phần tử DOM. Root là lớp sự kiện tích hợp. Chúng ta có thể tạo các đối tượng sự kiện như thế này: LET EVEN = new Event (loại sự kiện [, Tùy chọn]);

HTML bên trong phần tử có thể được tải hoặc tái tạo động bất cứ lúc nào, vì vậy chúng ta có thể tìm thấy tất cả các liên kết và đặt trình xử lý lên chúng. Sử dụng phái đoàn sự kiện. Nội dung có thể có thẻ lồng nhau. Các liên kết bên trong quá, như ....

HTML bên trong phần tử có thể được tải hoặc tái tạo động bất cứ lúc nào, vì vậy chúng ta có thể tìm thấy tất cả các liên kết và đặt trình xử lý lên chúng. Sử dụng phái đoàn sự kiện. Nội dung có thể có thẻ lồng nhau. Các liên kết bên trong quá, như ....

Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Bộ sưu tập hình ảnh Tầm quan trọng: 5 Tạo một bộ sưu tập hình ảnh trong đó hình ảnh chính thay đổi bằng cách nhấp vào hình thu nhỏ. Như thế này:

P.S. Sử dụng phái đoàn sự kiện. Mở một hộp cát cho nhiệm vụ.

Công văn các sự kiện tùy chỉnh Chúng tôi không chỉ có thể chỉ định trình xử lý mà còn tạo các sự kiện từ JavaScript. Các sự kiện tùy chỉnh có thể được sử dụng để tạo ra các thành phần đồ họa. Chẳng hạn, một phần tử gốc của menu có thể kích hoạt các sự kiện cho biết những gì xảy ra với menu: Mở (Menu mở), chọn (một mục được chọn), v.v. Ngoài ra, chúng tôi có thể tạo ra các sự kiện tích hợp như Click, Mousedown, v.v., có thể tốt để thử nghiệm.

Sự kiện xây dựng sự kiện tạo thành một hệ thống phân cấp, giống như các lớp phần tử DOM. Root là lớp sự kiện tích hợp. Chúng ta có thể tạo các đối tượng sự kiện như thế này: LET EVEN = new Event (loại sự kiện [, Tùy chọn]);

Đối số: ●

Loại sự kiện-có thể là bất kỳ chuỗi nào, như "Nhấp" hoặc của chúng tôi như "Hey-ho!" .

Tùy chọn - Đối tượng có hai thuộc tính tùy chọn: ●

HTML bên trong phần tử có thể được tải hoặc tái tạo động bất cứ lúc nào, vì vậy chúng ta có thể tìm thấy tất cả các liên kết và đặt trình xử lý lên chúng. Sử dụng phái đoàn sự kiện. Nội dung có thể có thẻ lồng nhau. Các liên kết bên trong quá, như ....

HTML bên trong phần tử có thể được tải hoặc tái tạo động bất cứ lúc nào, vì vậy chúng ta có thể tìm thấy tất cả các liên kết và đặt trình xử lý lên chúng. Sử dụng phái đoàn sự kiện. Nội dung có thể có thẻ lồng nhau. Các liên kết bên trong quá, như ....

Để giải pháp

HTML bên trong phần tử có thể được tải hoặc tái tạo động bất cứ lúc nào, vì vậy chúng ta có thể tìm thấy tất cả các liên kết và đặt trình xử lý lên chúng. Sử dụng phái đoàn sự kiện. Nội dung có thể có thẻ lồng nhau. Các liên kết bên trong quá, như ....

HTML bên trong phần tử có thể được tải hoặc tái tạo động bất cứ lúc nào, vì vậy chúng ta có thể tìm thấy tất cả các liên kết và đặt trình xử lý lên chúng. Sử dụng phái đoàn sự kiện. Nội dung có thể có thẻ lồng nhau. Các liên kết bên trong quá, như ....

HTML bên trong phần tử có thể được tải hoặc tái tạo động bất cứ lúc nào, vì vậy chúng ta có thể tìm thấy tất cả các liên kết và đặt trình xử lý lên chúng. Sử dụng phái đoàn sự kiện. Nội dung có thể có thẻ lồng nhau. Các liên kết bên trong quá, như ....

Mở một hộp cát cho nhiệm vụ.

Để giải pháp

Bộ sưu tập hình ảnh Tầm quan trọng: 5 Tạo một bộ sưu tập hình ảnh trong đó hình ảnh chính thay đổi bằng cách nhấp vào hình thu nhỏ. Như thế này:

P.S. Sử dụng phái đoàn sự kiện. Mở một hộp cát cho nhiệm vụ.

Công văn các sự kiện tùy chỉnh Chúng tôi không chỉ có thể chỉ định trình xử lý mà còn tạo các sự kiện từ JavaScript. Các sự kiện tùy chỉnh có thể được sử dụng để tạo ra các thành phần đồ họa. Chẳng hạn, một phần tử gốc của menu có thể kích hoạt các sự kiện cho biết những gì xảy ra với menu: Mở (Menu mở), chọn (một mục được chọn), v.v. Ngoài ra, chúng tôi có thể tạo ra các sự kiện tích hợp như Click, Mousedown, v.v., có thể tốt để thử nghiệm.

Xin chào cho John!

Thuộc tính chi tiết có thể có bất kỳ dữ liệu. Về mặt kỹ thuật, chúng ta có thể sống mà không có, bởi vì chúng ta có thể gán bất kỳ thuộc tính nào vào một đối tượng sự kiện mới thông thường sau khi tạo ra nó. Nhưng CustomEvent cung cấp lĩnh vực chi tiết đặc biệt để nó trốn tránh xung đột với các thuộc tính sự kiện khác. Lớp sự kiện kể một cái gì đó về loại sự kiện nào, và nếu sự kiện này là tùy chỉnh, thì chúng ta nên sử dụng Customevent chỉ để rõ ràng về nó là gì.

event.preventDefault () chúng ta có thể gọi event.preventDefault () trên một sự kiện do tập lệnh tạo nếu có thể hủy: thực sự được chỉ định. Tất nhiên, nếu sự kiện này có tên không chuẩn, thì nó không được trình duyệt biết đến và ở đó, không có hành động nào của trình duyệt mặc định. Nhưng mã tạo sự kiện có thể lên kế hoạch cho một số hành động sau khi DispatchEvent. Call of Event.PreventDefault () là một cách để người xử lý gửi tín hiệu rằng những hành động đó không nên được thực hiện. Trong trường hợp đó, cuộc gọi đến elem.dispatchevent (sự kiện) trả về sai. Và mã tạo sự kiện biết rằng việc xử lý không nên tiếp tục. Chẳng hạn, trong ví dụ bên dưới có hàm ẩn (). Nó tạo ra sự kiện "ẩn" trên phần tử #Rabbit, thông báo cho tất cả các bên quan tâm rằng con thỏ sẽ ẩn.

Một người xử lý do Rabbit.addeventlistener đặt ra ('ẩn', ...) sẽ tìm hiểu về điều đó và, nếu nó muốn, có thể ngăn chặn hành động đó bằng cách gọi event.preventDefault (). Sau đó, con thỏ đã giành được sự che giấu:

| \ /| \ | _ | / /. . \ = \ _ Y _/= {> o): "cơ thể". Để xây dựng

"Tài liệu" ở đâu trong hệ thống phân cấp? Chúng ta có thể thấy lớp nào thuộc về nó bằng cách xuất nó, như: cảnh báo (tài liệu); // [Object htmldocument]

Hoặc: cảnh báo (document.constructor.name); // htmldocument

Vì vậy, tài liệu là một ví dụ của lớp htmldocument. Những gì vị trí của nó trong hệ thống phân cấp? Vâng, chúng tôi có thể duyệt các đặc điểm kỹ thuật, nhưng sẽ nhanh hơn để tìm ra thủ công. Hãy để qua chuỗi các chuỗi nguyên mẫu thông qua __proto__. Như chúng ta đã biết, các phương pháp của một lớp nằm trong nguyên mẫu của hàm tạo. Chẳng hạn, htmldocument.prototype có các phương pháp cho các tài liệu. Ngoài ra, có một tham chiếu đến hàm tạo hàm bên trong nguyên mẫu: cảnh báo (htmldocument.prototype.constructor === htmldocument); // thật

Để lấy tên của lớp dưới dạng chuỗi, chúng ta có thể sử dụng trình xây dựng.name. Hãy cùng làm điều đó cho toàn bộ chuỗi nguyên mẫu tài liệu, Till Class Node: ALERT (htmldocument.prototype.constructor.name); // cảnh báo htmldocument (htmldocument.prototype .__ proto__.constructor.name); // Cảnh báo tài liệu (htmldocument.prototype .__ proto__.__proto__.constructor.name); // gật đầu

Chúng tôi cũng có thể kiểm tra đối tượng bằng cách sử dụng Console.dir (tài liệu) và xem các tên này bằng cách mở __proto__. Bảng điều khiển lấy chúng từ bộ xây dựng trong nội bộ. Để xây dựng

Thuộc tính và thuộc tính nhận được thuộc tính

Chọn thể loại

Để xây dựng

Tạo các liên kết bên ngoài Orange trước, chúng ta cần tìm tất cả các tài liệu tham khảo bên ngoài.

Có hai cách. Đầu tiên là tìm tất cả các liên kết bằng Document.QuerySelectorall ('A') và sau đó lọc ra những gì chúng ta cần: LET LIÊN KẾT = document.QuerySelectorall ('A'); for (hãy để liên kết của các liên kết) {let href = link.getAttribution ('href'); Nếu (! href) tiếp tục; // không có thuộc tính nếu (! href.includes (': //')) tiếp tục; // không có giao thức nếu (href.startswith ('http://iNternal.com')) tiếp tục; // liên kết nội bộ.style.color = 'Orange'; }

Xin lưu ý: Chúng tôi sử dụng link.getAttribution ('href'). Không liên kết.href, bởi vì chúng ta cần giá trị từ HTML. Một cách khác, đơn giản hơn sẽ là thêm các séc vào bộ chọn CSS: // Tìm tất cả các liên kết có: // trong href // nhưng href không bắt đầu với http://iNternal.com hãy để selector = 'a [ href*= ": //"]: không ([href^= "http://iNternal.com"]) '; Đặt liên kết = document.QuerySelectorall (bộ chọn); links.foreach (link => link.style.color = 'Orange');

Mở giải pháp trong hộp cát.

Để xây dựng

Tạo các liên kết bên ngoài Orange trước, chúng ta cần tìm tất cả các tài liệu tham khảo bên ngoài.

Để xây dựng

Tạo các liên kết bên ngoài Orange trước, chúng ta cần tìm tất cả các tài liệu tham khảo bên ngoài.

Có hai cách. Đầu tiên là tìm tất cả các liên kết bằng Document.QuerySelectorall ('A') và sau đó lọc ra những gì chúng ta cần: LET LIÊN KẾT = document.QuerySelectorall ('A'); for (hãy để liên kết của các liên kết) {let href = link.getAttribution ('href'); Nếu (! href) tiếp tục; // không có thuộc tính nếu (! href.includes (': //')) tiếp tục; // không có giao thức nếu (href.startswith ('http://iNternal.com')) tiếp tục; // liên kết nội bộ.style.color = 'Orange'; }

Xin lưu ý: Chúng tôi sử dụng link.getAttribution ('href'). Không liên kết.href, bởi vì chúng ta cần giá trị từ HTML. Một cách khác, đơn giản hơn sẽ là thêm các séc vào bộ chọn CSS: // Tìm tất cả các liên kết có: // trong href // nhưng href không bắt đầu với http://iNternal.com hãy để selector = 'a [ href*= ": //"]: không ([href^= "http://iNternal.com"]) '; Đặt liên kết = document.QuerySelectorall (bộ chọn); links.foreach (link => link.style.color = 'Orange');

Để xây dựng

Tại sao "AAA" vẫn còn? HTML trong nhiệm vụ không chính xác. Đó là lý do của điều kỳ lạ. Trình duyệt phải sửa nó tự động. Nhưng có thể không có văn bản bên trong

: Theo thông số kỹ thuật chỉ cho phép các thẻ cụ thể của bảng. Vì vậy, trình duyệt thêm "AAA" trước
. Bây giờ, rõ ràng là khi chúng ta loại bỏ bảng, nó vẫn còn. Câu hỏi có thể dễ dàng trả lời bằng cách khám phá DOM bằng các công cụ trình duyệt. Nó cho thấy "AAA" trước
. Tiêu chuẩn HTML chỉ định chi tiết cách xử lý HTML xấu và hành vi đó của trình duyệt là chính xác. Để xây dựng

Tạo danh sách, xin lưu ý việc sử dụng textcontent để gán

  • Nội dung. Mở giải pháp trong hộp cát.

    Để xây dựng

    Tạo một cây từ đối tượng Cách dễ nhất để đi bộ đối tượng là sử dụng đệ quy. 1. Giải pháp với InsideHTML 2. Giải pháp với DOM

    Để xây dựng

    Để xây dựng

    Để xây dựng

    Tạo một cây từ đối tượng Cách dễ nhất để đi bộ đối tượng là sử dụng đệ quy. 1. Giải pháp với InsideHTML 2. Giải pháp với DOM

  • .

    Hiển thị hậu duệ trên cây để nối văn bản cho từng

    Để xây dựng

    Tạo một cây từ đối tượng Cách dễ nhất để đi bộ đối tượng là sử dụng đệ quy. 1. Giải pháp với InsideHTML 2. Giải pháp với DOM

  • .
    Hiển thị hậu duệ trên cây để nối văn bản cho từng
    Chúng ta có thể thay đổi dữ liệu nút văn bản. Mở giải pháp trong hộp cát.
    Tạo một lịch mà chúng tôi sẽ tạo bảng dưới dạng một chuỗi: "

    Để xây dựng

    Tạo một cây từ đối tượng Cách dễ nhất để đi bộ đối tượng là sử dụng đệ quy. 1. Giải pháp với InsideHTML 2. Giải pháp với DOM :

    hh:mm::mm: