Kiểm tra phần tử chỉ xuất hiện khi phần tử khác được di chuột qua / nhập


119

Thường thì tôi muốn kiểm tra một phần tử (ví dụ: chú giải công cụ) chỉ xuất hiện khi một phần tử khác được di chuột qua / nhập. Phần tử xuất hiện, được hiển thị thông qua sự kiện mouseenter của jQuery.

Tôi không thể kiểm tra chú giải công cụ, vì chú giải công cụ biến mất khi con chuột của tôi rời khỏi phần tử chứa.

Có cách nào để tạm dừng các sự kiện JS để tôi có thể di chuột vào phần tử, sau đó tạm dừng JS của trình duyệt và kiểm tra thành công không?

Ví dụ: hãy thử kiểm tra chú giải công cụ của Twitter bootstrap: http://getbootstrap.com/javascript/#tooltips .


9
Chỉ cần FYI, nếu phần tử xuất hiện vì CSS thay vì JS, bạn có thể ép buộc :hoverphần tử đó bằng cách nhấp chuột phải vào phần tử trong chế độ xem Phần tử (DOM) trong Công cụ Dev, chọn "Force Element State" và sau đó ": hover".
MMM

Câu trả lời:


226

Nó khá dễ dàng trong Chrome 38.0.2094.0.

Đây là những gì nó sẽ trông như thế nào:

Từng bước một:

  1. Mở DevTools trong bảng Nguồn
  2. Làm cho chú giải công cụ xuất hiện bằng cách di chuột qua nút
  3. Nhấn F8 để đóng băng trang
  4. Chuyển sang bảng Elements và sử dụng biểu tượng kính lúp ở trên cùng bên trái để chọn chú giải công cụ

Nếu chú giải công cụ hiển thị do CSS, đây là những gì bạn có thể làm trong trường hợp đó:

Từng bước một:

  1. Mở DevTools
  2. Chọn phần tử kích hoạt trong các công cụ dành cho nhà phát triển (liên kết)
  3. Nhấp chuột phải, và chọn "trạng thái phần tử lực" và chọn ": di chuột"
  4. Kiểm tra chú giải công cụ CSS

1
@YuriyGalanter Nó có sẵn thông qua biểu tượng kính gián điệp ở trên cùng bên trái. Chỉ cần nhấp vào biểu tượng, sau đó nhấn vào tooltip :)
Šime Vidas

3
Vâng, tôi đã thêm ảnh GIF để giúp bạn dễ dàng xem những gì mình đang làm.
Một số Guy

2
@DonnyP tôi đã sử dụng byzanz-record. Đó là một gói bạn có thể nhận được với sudo apt-get install byzanz.
Một số Guy

5
Ngoài ra còn có LICEcap , nó ghi lại một phần của màn hình trực tiếp trong một GIF siêu tối ưu hóa. Windows, OS X và Linux.
fregante,

2
@ bfred.it LICEcap không khả dụng cho Linux. Xem vấn đề Github này về chủ đề. Có vẻ như mọi người đang thành công khi chạy nó với WINE .
Isaac Gregson

15

Cả hai của Safari và Web Inspector cung cấp hộp kiểm của Chrome, nơi bạn có thể chuyển đổi các :active, :focus, :hover:visitedtrạng thái của một phần tử. Sử dụng chúng thậm chí có thể dễ dàng hơn.

Safari:

Các hộp kiểm trong Safari

Trình duyệt Chrome:

Các hộp kiểm trong Chrome


5
Chú giải công cụ không được kích hoạt bởi các :hoverkiểu.
Šime Vidas

2
Firebug trên Firefox có điều tương tự (trừ :visited, được hạn chế để ngăn chặn snooping) - trên tab HTML, đó là trong "Style" thả xuống ở bên phải
Izkata

1
Công cụ phát triển có nguồn gốc @Izkata Đối với Firefox, kích chuột phải vào phần tử trong đường dẫn, hoặc cây HTML / DOM, và chọn từ :hover, :activehoặc :focus.
Giá Kiran

4

Cũng có một cách phức tạp khác để làm điều đó:

  1. Xem qua phần tử làm cho chú giải công cụ của bạn xuất hiện.
  2. Nhấp chuột phải để mở menu ngữ cảnh.
  3. Di chuyển chuột đến cửa sổ công cụ dành cho nhà phát triển của bạn và nhấp chuột trái vào bất kỳ đâu trong bảng công cụ nhà phát triển.

Chú giải công cụ của bạn sẽ vẫn hiển thị, sau đó bạn có thể kiểm tra chú giải đó trong tab Yếu tố.

Đã thử nghiệm trên Chrome. Dường như không hoạt động trên Firefox.


1
Đây là cách tôi đã làm trong quá khứ, nhưng câu trả lời của @ SomeGuy là cách tốt nhất và dễ dàng nhất.
John Washam

@JohnDubya Không thực sự là không. Đó có thể là cách chính thức nhưng chắc chắn không dễ dàng hơn. Có quá nhiều bước liên quan.
MiniRagnarok

Đây là điều tôi thường làm, nhưng không phải lúc nào nó cũng hoạt động.
Synetech

3

Mặc dù câu trả lời của @ SomeGuy là tuyệt vời (t-up cho ảnh gif động), nhưng bạn luôn có thể làm điều đó theo chương trình. Chỉ cần mở bảng điều khiển và nhập tên sự kiện

document.getElementById('id').dispatchEvent(new Event('event-type'));

(với cú pháp cụ thể của javascript thuần túy có thể khác nhau tùy theo trình duyệt)

Thậm chí dễ dàng hơn với jQuery:

$('#id').trigger('event-type');

Trong ví dụ của bạn ( http://getbootstrap.com/javascript/#tooltips ), hãy mở bảng điều khiển và nhập, ví dụ:

$("button:contains('Tooltip on right')").mouseenter();

Và chú giải công cụ xuất hiện trong DOM và có thể được kiểm tra / sửa đổi theo cách thủ công:

<div style="top: 14406.9px; left: 1048.25px; display: block;"
id="tooltip952596" class="tooltip fade right in" role="tooltip">
<div style="" class="tooltip-arrow"></div>
<div class="tooltip-inner">Tooltip on right</div></div>

Như trong phần nhận xét, nếu bạn di chuyển con trỏ chuột qua khung trang, bạn có thể kích hoạt các sự kiện khác như mouseout. Để tránh điều này, bạn có thể nhấn F8(như trong câu trả lời tài khoản) hoặc gõ debugger;(tương đương với tập lệnh của nó)


1
Trong khi kiểm tra phần tử, bạn vẫn có thể kích hoạt các sự kiện khác (như mouseout), vì vậy nó không giải quyết được vấn đề ngay từ đầu. Bạn phải khá cẩn thận khi chọn nó. Nhưng đó là một cách tiếp cận thay thế.
MMM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.