hạt. js cho phép mô phỏng đầu vào của chuột bằng cách di chuyển con trỏ, nhấp vào nút chuột hoặc thực hiện các cử chỉ kéo
quả hạch. js đi kèm với một đối tượng cấu hình cho phép cấu hình hành vi của nó
4 định cấu hình độ trễ giữa các lần nhấp chuột và/hoặc cuộn1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
5 định cấu hình tốc độ di chuyển của chuột tính bằng pixel trên giây1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
6 lấy một Điểm và di chuyển con trỏ chuột đến vị trí này ngay lập tức1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
7 trả về một Lời hứa giải quyết điểm con trỏ hiện tại1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
8 là phương pháp có mục đích chung để di chuyển chuột trong đai ốc. js.1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Nó nhận một đường dẫn được cung cấp dưới dạng Điểm[] hoặc Lời hứa và một hàm chuyển động kiểu9, trả về danh sách thời lượng tính bằng nano giây.1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
0 sẽ đi theo con đường này trong các dấu thời gian do hàm chuyển động cung cấp.1await mouse.move[left[10]];
Bằng cách này, bạn có thể tùy chỉnh hoàn toàn hành vi di chuyển của chuột bằng cách triển khai các chức năng riêng để tính toán đường đi và/hoặc thời gian di chuyển.1 là một chức năng di chuyển lấy Điểm mục tiêu và tính toán đường đi của Điểm[] dẫn từ vị trí chuột hiện tại đến mục tiêu mong muốn1await mouse.move[left[10]];
2 là hàm trợ giúp lấy Vùng và trả về Điểm trung tâm của vùng đó1await mouse.move[left[10]];
2 rất phù hợp với1await mouse.move[left[10]];
1 vì nó cho phép chúng tôi di chuyển đến trung tâm của Khu vực được trả về bởi e. g.1await mouse.move[left[10]];
51await mouse.move[left[10]];
21await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
6 là một hàm trợ giúp khác lấy một Vùng và trả về một Điểm ngẫu nhiên trong vùng đó1await mouse.move[left[10]];
6 rất phù hợp với1await mouse.move[left[10]];
1 vì nó cho phép chúng tôi di chuyển đến trung tâm của Khu vực được trả về bởi e. g.1await mouse.move[left[10]];
51await mouse.move[left[10]];
1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
80 là một hàm chuyển động tương đối trả về một đường di chuyển1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
81 pixel ở bên trái vị trí chuột hiện tại của bạn1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
1await mouse.move[left[10]];
82 là một hàm chuyển động tương đối trả về một đường di chuyển1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
81 pixel ở bên phải vị trí chuột hiện tại của bạn1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
81await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
84 là một hàm chuyển động tương đối trả về một đường di chuyển1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
81 pixel lên từ vị trí chuột hiện tại của bạn1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
61await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
86 là một hàm chuyển động tương đối trả về một đường di chuyển1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
81 pixel xuống từ vị trí chuột hiện tại của bạn1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Drag'n'Drop là một giải pháp giao diện tuyệt vời. Lấy một thứ gì đó và kéo và thả nó là một cách rõ ràng và đơn giản để thực hiện nhiều việc, từ sao chép và di chuyển tài liệu [như trong trình quản lý tệp] đến đặt hàng [bỏ các mặt hàng vào giỏ hàng]
Trong tiêu chuẩn HTML hiện đại, có một phần về Kéo và Thả với các sự kiện đặc biệt như
91,1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
92, v.v.1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Những sự kiện này cho phép chúng tôi hỗ trợ các loại kéo và thả đặc biệt, chẳng hạn như xử lý việc kéo tệp từ trình quản lý tệp của hệ điều hành và thả tệp đó vào cửa sổ trình duyệt. Sau đó, JavaScript có thể truy cập nội dung của các tệp đó
Nhưng Sự kiện kéo gốc cũng có những hạn chế. Chẳng hạn, chúng tôi không thể ngăn việc kéo từ một khu vực nhất định. Ngoài ra, chúng tôi không thể chỉ thực hiện thao tác kéo "ngang" hoặc "dọc". Và còn rất nhiều thao tác kéo thả khác không dùng được. Ngoài ra, thiết bị di động hỗ trợ cho các sự kiện như vậy là rất yếu
Vì vậy, ở đây chúng ta sẽ xem cách triển khai Drag’and’Drop bằng các sự kiện chuột
Thuật toán Drag'n'Drop
Thuật toán Drag'n'Drop cơ bản trông như thế này
- Trên
93 – chuẩn bị phần tử để di chuyển, nếu cần [có thể tạo một bản sao của nó, thêm một lớp vào nó hoặc bất cứ thứ gì]1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
- Sau đó, trên
94, hãy di chuyển nó bằng cách thay đổi1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
95 bằng1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
961await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
- Trên
97 – thực hiện tất cả các hành động liên quan đến việc hoàn thành thao tác kéo và thả1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Đây là những điều cơ bản. Sau này, chúng ta sẽ xem cách thêm các tính năng khác, chẳng hạn như làm nổi bật các phần tử cơ bản hiện tại trong khi chúng ta kéo qua chúng
Đây là cách thực hiện kéo bóng
61await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Nếu chúng tôi chạy mã, chúng tôi có thể nhận thấy điều gì đó kỳ lạ. Khi bắt đầu drag'n'drop, quả bóng "nĩa". chúng tôi bắt đầu kéo "bản sao" của nó
Đây là một ví dụ trong hành động
Hãy thử kéo và thả bằng chuột và bạn sẽ thấy hành vi như vậy
Đó là bởi vì trình duyệt có hỗ trợ kéo và thả riêng cho hình ảnh và một số yếu tố khác. Nó chạy tự động và xung đột với chúng tôi
Để vô hiệu hóa nó
91await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Bây giờ mọi thứ sẽ ổn thôi
trong hành động
Một khía cạnh quan trọng khác – chúng tôi theo dõi
94 trên1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
99, không phải trên1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
00. Ngay từ cái nhìn đầu tiên, có vẻ như con chuột luôn ở trên quả bóng và chúng ta có thể đặt1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
94 vào nó1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Nhưng như chúng tôi nhớ,
94 kích hoạt thường xuyên, nhưng không phải cho mọi pixel. Vì vậy, sau khi di chuyển nhanh, con trỏ có thể nhảy từ quả bóng ở đâu đó ở giữa tài liệu [hoặc thậm chí bên ngoài cửa sổ]1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Vì vậy, chúng ta nên nghe trên
99 để nắm bắt nó1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Định vị chính xác
Trong các ví dụ trên, quả bóng luôn được di chuyển sao cho tâm của nó nằm dưới con trỏ
01await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Không tệ, nhưng có một tác dụng phụ. Để bắt đầu kéo và thả, chúng ta có thể ________ 293 ở bất kỳ đâu trên quả bóng. Nhưng nếu “lấy” nó từ mép của nó, thì quả bóng đột nhiên “nhảy” trở thành tâm dưới con trỏ chuột
Sẽ tốt hơn nếu chúng ta giữ nguyên dịch chuyển ban đầu của phần tử so với con trỏ
Chẳng hạn, nếu chúng ta bắt đầu kéo theo cạnh của quả bóng, thì con trỏ sẽ vẫn ở trên cạnh trong khi kéo
Hãy cập nhật thuật toán của chúng tôi
Khi khách nhấn nút [
93] – ghi nhớ khoảng cách từ con trỏ đến góc trên bên trái của quả bóng theo biến số1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
06. Chúng tôi sẽ giữ khoảng cách đó trong khi kéo1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Để có được những thay đổi này, chúng ta có thể trừ tọa độ
81await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Sau đó, trong khi kéo, chúng tôi định vị quả bóng trên cùng một dịch chuyển so với con trỏ, như thế này
91await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Mã cuối cùng với vị trí tốt hơn
01await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Đang hoạt động [bên trong
07]1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Sự khác biệt đặc biệt đáng chú ý nếu chúng ta kéo quả bóng ở góc dưới cùng bên phải của nó. Trong ví dụ trước quả bóng “nhảy” dưới con trỏ. Bây giờ nó trôi chảy theo con trỏ từ vị trí hiện tại
Mục tiêu thả tiềm năng [droppables]
Trong các ví dụ trước, quả bóng có thể được thả xuống "bất cứ đâu" để ở lại. Trong cuộc sống thực, chúng ta thường lấy một yếu tố và thả nó vào một yếu tố khác. Chẳng hạn, một “tệp” vào một “thư mục” hoặc một cái gì đó khác
Nói một cách trừu tượng, chúng tôi lấy một phần tử “có thể kéo” và thả nó vào phần tử “có thể thả xuống”
chúng ta cần biết
- nơi phần tử được thả ở cuối Drag'n'Drop - để thực hiện hành động tương ứng,
- và tốt nhất là biết droppable mà chúng ta đang kéo qua, để làm nổi bật nó
Giải pháp khá thú vị và hơi phức tạp một chút, vì vậy hãy đề cập đến nó ở đây
Điều gì có thể là ý tưởng đầu tiên?
Nhưng điều đó không hiệu quả
Vấn đề là, trong khi chúng ta đang kéo, phần tử có thể kéo được luôn ở trên các phần tử khác. Và các sự kiện chuột chỉ xảy ra ở phần tử trên cùng, không xảy ra ở phần tử bên dưới nó
Chẳng hạn, bên dưới là hai phần tử
09, phần tử màu đỏ ở trên phần tử màu xanh lam [bao phủ hoàn toàn]. Không có cách nào để bắt một sự kiện trên màu xanh lam, vì màu đỏ ở trên cùng1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
41await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Tương tự với phần tử có thể kéo. Quả bóng luôn ở trên cùng so với các yếu tố khác, vì vậy các sự kiện xảy ra trên đó. Bất kỳ trình xử lý nào chúng tôi đặt trên các phần tử thấp hơn, chúng sẽ không hoạt động
Đó là lý do tại sao ý tưởng ban đầu đưa trình xử lý vào các thiết bị có thể phân tán tiềm năng không hoạt động trong thực tế. Họ sẽ không chạy
Vậy lam gi?
Có một phương pháp gọi là
80. Nó trả về phần tử được lồng nhiều nhất trên tọa độ tương đối của cửa sổ đã cho [hoặc1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
81 nếu tọa độ đã cho nằm ngoài cửa sổ]. Nếu có nhiều phần tử trùng lặp trên cùng một tọa độ, thì phần tử trên cùng sẽ được trả về1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Chúng tôi có thể sử dụng nó trong bất kỳ trình xử lý sự kiện chuột nào của chúng tôi để phát hiện tiềm năng có thể bỏ qua dưới con trỏ, như thế này
71await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Xin lưu ý. chúng ta cần giấu quả bóng trước cuộc gọi
82. Nếu không, chúng tôi thường có một quả bóng trên các tọa độ này, vì nó là phần tử trên cùng bên dưới con trỏ.1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
83. Vì vậy, chúng tôi ẩn nó và ngay lập tức hiển thị lại1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Chúng ta có thể sử dụng mã đó để kiểm tra phần tử nào chúng ta đang “bay qua” bất cứ lúc nào. Và xử lý sự sụt giảm khi nó xảy ra
Mã mở rộng của
84 để tìm các phần tử “có thể bỏ được”1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
11await mouse.move[left[10]];
Trong ví dụ bên dưới khi quả bóng được kéo qua khung thành bóng đá, khung thành được tô sáng
Kết quả
Phong cách. css
mục lục. html
21await mouse.move[left[10]];
901await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Bây giờ chúng tôi có "mục tiêu thả" hiện tại mà chúng tôi đang bay qua, trong biến số
85 trong toàn bộ quá trình và có thể sử dụng nó để đánh dấu hoặc bất kỳ nội dung nào khác1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Tóm lược
Chúng tôi đã xem xét một thuật toán Drag'n'Drop cơ bản
Các thành phần chính
- Dòng sự kiện.
86 →1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
87 →1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
88 [đừng quên hủy bản địa1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
89]1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
- Khi bắt đầu kéo – ghi nhớ sự thay đổi ban đầu của con trỏ so với phần tử.
06 và giữ nó trong quá trình kéo1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
- Phát hiện các phần tử có thể kéo xuống bên dưới con trỏ bằng cách sử dụng
911await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Chúng ta có thể đặt rất nhiều trên nền tảng này
- Vào ngày
97, chúng ta có thể hoàn thiện việc giảm giá một cách trí tuệ. thay đổi dữ liệu, di chuyển các yếu tố xung quanh1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
- Chúng tôi có thể làm nổi bật các yếu tố mà chúng tôi đang bay qua
- Chúng ta có thể giới hạn kéo theo một khu vực hoặc hướng nhất định
- Chúng tôi có thể sử dụng ủy quyền sự kiện cho
93. Trình xử lý sự kiện diện rộng kiểm tra1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
94 có thể quản lý Drag'n'Drop cho hàng trăm phần tử1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
- Và như thế
Có các khung xây dựng kiến trúc trên đó.
95,1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
96,1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
97 và các lớp khác. Hầu hết trong số họ làm những thứ tương tự như những gì được mô tả ở trên, vì vậy bây giờ sẽ dễ hiểu họ. Hoặc cuộn của riêng bạn, vì bạn có thể thấy rằng điều đó đủ dễ thực hiện, đôi khi dễ hơn việc điều chỉnh giải pháp của bên thứ ba1await mouse.move[straightTo[randomPointIn[screen.find[...]]]];
Làm cách nào để di chuyển chuột bằng JavaScript?
Để làm điều này, chúng tôi sử dụng tài liệu. elementFromPoint[x+px, y+py] trong đó chúng tôi chuyển vị trí của con trỏ hình ảnh . Điều này sẽ cho chúng ta đối tượng của phần tử, con trỏ hình ảnh đang bật.Làm cách nào để có được vị trí chuột trong JavaScript?
Để lấy tọa độ chuột trong JavaScript, hãy áp dụng thuộc tính “clientX” và “clientY” với sự kiện title để nhận tọa độ chuột mới nhất khi nhấp vào nút, thuộc tính “pageX” và “pageY” và phương thức “addEventListener[]” để nhậnMouseMove JavaScript là gì?
MouseMove là một sự kiện đơn giản được thực thi khi con trỏ di chuyển qua hoặc xung quanh một phần tử . Mousemove là một sự kiện javascript bên trong một trang web. Sự kiện mousemove cũng có thể được hiểu là một phần của trình xử lý sự kiện, theo đó một số hành động hoặc chuyển động của con trỏ chuột, một tập lệnh dự định sẽ được thực thi.Có chương trình nào di chuyển chuột của bạn không?
Ứng dụng rung chuột là một chương trình bạn cài đặt để yêu cầu máy tính của bạn di chuyển con trỏ sau một khoảng thời gian không hoạt động nhất định . Nhiều chương trình trong số này [đặc biệt là dành cho PC] là miễn phí và một số chương trình tốt hơn sẽ cho phép bạn tùy chỉnh cách thức và vị trí con trỏ của bạn sẽ di chuyển quanh màn hình.