Làm cách nào để kiểm tra phần tử biến mất trong trình duyệt?


152

Làm cách nào tôi có thể kiểm tra một phần tử biến mất khi chuột di chuyển đi? Ví dụ thả xuống biến mất

Tôi không biết đó là ID, lớp hay bất cứ thứ gì nhưng muốn kiểm tra nó.

Các giải pháp tôi đã thử:

Chạy bộ chọn jQuery bên trong bảng điều khiển $('*:contains("some text")')nhưng không gặp may mắn chủ yếu vì phần tử không bị ẩn mà có lẽ đã bị xóa khỏi cây DOM.

Việc kiểm tra thủ công cây DOM để thay đổi cho tôi không có gì vì dường như quá nhanh để nhận thấy những gì đã thay đổi.

SỰ THÀNH CÔNG:

Tôi đã thành công với các điểm dừng sự kiện. Cụ thể - mousedown trong trường hợp của tôi. Chỉ cần vào Sources-> Event Listener Breakpoints-> Mouse-> mousedowntrong Chrome. Sau đó tôi nhấp vào yếu tố tôi muốn kiểm tra và bên trong Scope Variablestôi thấy một số hướng hữu ích.


2
Câu hỏi của bạn đã giúp mặc dù tôi không nhận được điểm dừng bằng cách sử dụng các nguồn, tôi đã thực thi đoạn script sau trong bảng điều khiển: document.body.addEventListener('mouseup',function(){ debugger; })Điều đó khiến tôi nghỉ ngơi và tôi có thể kiểm tra các yếu tố được tạo.
HMR

Bạn đá. Có vấn đề chính xác này với điều khiển React-Chọn, trong đó tôi không thể xem HTML của các mục danh sách vì cây con sẽ xóa bất cứ khi nào tôi nhấp vào. Cần ID của vật phẩm để tự động hóa các nhấp chuột bằng Selenium. Cảm ơn!
araisbec

Câu trả lời:


177

(Câu trả lời này chỉ áp dụng cho Công cụ dành cho nhà phát triển Chrome. Xem bản cập nhật bên dưới.)

Tìm một phần tử có chứa phần tử biến mất. Nhấp chuột phải vào yếu tố và áp dụng "Break on ...> Subtree Modifying." Điều này sẽ ném tạm dừng trình gỡ lỗi trước khi phần tử biến mất, điều này sẽ cho phép bạn tương tác với phần tử trong trạng thái tạm dừng.

nhập mô tả hình ảnh ở đây

Cập nhật ngày 22 tháng 10 năm 2019: với việc phát hành phiên bản 70, có vẻ như FireFox cuối cùng cũng hỗ trợ loại gỡ lỗi này 2 3 :

nhập mô tả hình ảnh ở đây


1
Để tránh một số nhầm lẫn có thể xảy ra - trình gỡ lỗi sẽ tạm dừng khi bạn kích hoạt sự kiện, còn gọi là nhập tên địa điểm. Khi màn hình tạm dừng, chỉ cần nhấn nút phát trên chính DOM và bạn sẽ có thể kích hoạt sự kiện.
Dylan Pierce

Điều này không hoạt động nếu trang đã bắt được nhấp chuột phải và thực hiện điều đó là nhấp chuột phải.
Michael

Điều này không hoạt động đối với hai hộp thoại đầu tiên trong cùng một thùng chứa
Still_learning

@Still_learning Bạn có thể giải thích ý của bạn bằng "hai hộp thoại trong cùng một thùng chứa."
arxpoetica

<v-container><v-dialog></v-dialog><v-dialog></v-dialog></v-container>- trong trường hợp của tôi, hộp thoại đầu tiên chỉ hiển thị cho đến khi dữ liệu đến từ db, khoảng 1 giây
Still_learning

92

Một phương pháp thay thế trong Chrome:

  • Mở devTools (F12).
  • Chọn tab "Nguồn".
  • Trong khi phần tử bạn muốn được hiển thị, nhấn F8 (hoặc Ctrl + /). Điều này sẽ phá vỡ việc thực thi tập lệnh và "đóng băng" DOM ​​chính xác như được hiển thị.
  • Từ thời điểm này, sử dụng Ctrl + Shift + C để chọn thành phần.

3
Hoàn hảo!! Điều này thực hiện chính xác những gì tôi muốn
Daniel Loiterton

2
Tôi nhận thấy điều này chỉ hoạt động khi bạn đã mở các công cụ dành cho nhà phát triển trong tab 'Nguồn'.
xe cứu thương

3
nó đóng băng mã từ thực thi nhưng phần tử vẫn biến mất (tôi đang sử dụng React).
Lorem Ipsum Dolor

Chrome của tôi cho biết F8 hoặc Crtl + \ (không phải Crtl + /). Ngoài ra, Crtl + \ không hoạt động trong trường hợp của tôi ...
Roger Veciana

Điều này không hoạt động trên cửa sổ bật lên kiểm soát video của Google ... điều khiển dường như mờ dần khỏi chế độ xem ngay khi bạn nhấn phím và đã hoàn toàn mờ dần trước khi đóng băng xảy ra.
Michael

18
  1. Mở bảng điều khiển
  2. Gõ vào setTimeout(()=>{debugger;},5000);
  3. nhấn nút Enter

Bây giờ bạn có 5 giây để làm cho phần tử của bạn xuất hiện. Khi nó xuất hiện, hãy đợi cho đến khi trình gỡ lỗi xuất hiện. Miễn là bạn không tiếp tục, bạn có thể chơi với phần tử của mình và nó sẽ không biến mất.


Mẹo hữu ích để tránh lặp lại các bước trên mỗi lần:

thêm phần này dưới dạng bookmarklet:

  1. Đánh dấu trang bất kỳ
  2. Chỉnh sửa dấu trang mới này
  3. Thay thế URL / vị trí bằng: javascript:(function(){setTimeout(()=>{debugger;},5000);})();

Lần tới bạn muốn sử dụng cái này, chỉ cần nhấp / chạm vào dấu trang này.


1
Đây là cách nhanh nhất và ổn định nhất để gỡ lỗi các phần tử biến mất ^
warmwhisky

8

Tôi đang sử dụng chrome trên Mac ở đó Tôi đã làm theo các bước trên nhưng tôi sẽ cố gắng giải thích thêm một chút:

  1. Nhấp chuột phải và đi để kiểm tra yếu tố.
  2. Chuyển đến tab nguồn.
  3. Sau đó di chuột vào phần tử.
  4. Sau đó sử dụng bàn phím F8 hoặc Command(Window) \ . Nó sẽ tạm dừng màn hình ở trạng thái tĩnh và phần tử sẽ không biến mất khi di chuột ra.

1
Cảm ơn bạn, cảm ơn bạn, cho các hướng dẫn chi tiết! Sau một màn trình diễn cực kỳ khéo léo - nhấp vào nút, nhấn Ctr + Shift + C, di chuyển chuột để di chuột qua phần tử và nhấn F8trong khoảng trống của một giây rưỡi - Cuối cùng tôi đã có được phần tử của mình ở chế độ có thể kiểm tra
Still_learning

2

Trong Fireorms có các giải pháp khác nhau cho việc này:

  1. Bạn có thể sử dụng Break On Mutate bên trong bảng HTML. (với điều này, bạn cũng sẽ có thể tìm ra nó là yếu tố nào)
  2. Bạn có thể nhấp chuột phải vào phần tử và chọn Kiểm tra phần tử với Fireorms

Ngoài ra, bạn có thể muốn theo dõi vấn đề 551 , yêu cầu một cách để tạm thời chặn các sự kiện cụ thể.

Biên tập:

Để tìm ra phần tử nào, bạn cũng có thể bật các tùy chọn bảng điều khiển HTML Đánh dấu các thay đổi , mở rộng thay đổicuộn thay đổi vào dạng xem để hiển thị phần tử bên trong bảng HTML.

Sebastian


Chrome cũng có thanh tra tốt. Vấn đề là - nhấp chuột phải vào yếu tố làm cho nó biến mất trong trường hợp của tôi. Chrome cũng có Break trên DOM đột biến. Vấn đề với điều này - tôi không biết nó là yếu tố nào được tạo ra một cách linh hoạt
lukas.pukenis

1
Tôi chỉ chỉnh sửa câu trả lời của mình để đưa ra gợi ý làm thế nào để biết đó là yếu tố nào.
Sebastian Zartner

2

Trong trường hợp của tôi, tôi đã sử dụng tùy chọn đệ quy Mở rộng trên google chrome:

Các bước là:

  1. Kiểm tra trường thả xuống
  2. Tìm DOM động (tô sáng màu tím)
  3. Nhấp chuột phải vào DOM động đó
  4. Chọn Mở rộng đệ quy : nhập mô tả hình ảnh ở đây
  5. Chúng ta có thể thấy tất cả các yếu tố ở đó

Đây là một bản demo:

nhập mô tả hình ảnh ở đây


2

Di chuột qua phần tử bằng chuột và nhấn F8 (phần này trong Chrome) để tạm dừng thực thi tập lệnh. Trạng thái di chuột sẽ vẫn hiển thị cho bạn.

Nó đưa bạn đến tab nguồn. Quay trở lại tab Elements. Mã thời gian này sẽ không biến mất.


0

bạn có thể xem các yếu tố xuất hiện và biến mất trong thanh tra theo các yếu tố. Nếu bạn điều hướng đến phần tử khi nó hiển thị, bạn sẽ có thể thấy nó biến mất hoặc thấy css của nó thay đổi khi trạng thái thay đổi.

Điều này có thể xảy ra với fireorms trong firefox hoặc trình kiểm tra được xây dựng bằng chrome.


1
Đúng. Tôi đã tuyên bố rằng các thay đổi xảy ra quá nhanh trong DOM và trang sửa đổi DOM rất nhiều vì vậy nó thực sự không phải là một giải pháp vì tôi không thể phân biệt các yếu tố cần thiết của mình với một loạt các sửa đổi ở mọi nơi :)
lukas.pukenis

bạn có thể thử truy tìm những gì đang diễn ra bằng console.log, ví dụ ở đầu chức năng bạn đang cố kiểm tra, bạn có thể xem đối tượng css, v.v. Hoặc làm chậm các thay đổi cho đến khi bạn biết chúng hoạt động chính xác và sau đó thay đổi tốc độ thành những gì bạn muốn nó được ví dụ như ẩn ('chậm') trong jquery
matpol

Vấn đề là - đó không phải là cơ sở mã của riêng tôi, đó là một di sản, lớn, cũ, cơ sở mã, nơi tìm kiếm đơn giản qua các tệp không mang lại cho tôi điều gì .. :)
lukas.pukenis

bạn cũng có thể xem những tập tin nào đang được sử dụng bởi người kiểm tra. Tôi sẽ thực hiện loại bỏ chúng cho đến khi nó bị hỏng sau đó tìm trong tệp đã phá vỡ nó và đi từ đó. Bạn luôn có thể tìm kiếm các tập tin thực tế quá.
matpol

2
làm thế nào về điều này: stackoverflow.com/questions/10213703/ Cách
matpol

0

Tôi gặp vấn đề tương tự nhưng tôi sử dụng Firefox thì nó biến mất ngay khi tôi mở phần tử kiểm tra tìm thấy một giải pháp: mở 4 dấu gạch ngang (cài đặt) đi tới nhà phát triển web> Trình gỡ lỗi và ngay lập tức nhấn F8 là phím tắt để tạm dừng tập lệnh trước khi nó khởi động và phát hiện ra rằng bạn đã mở các công cụ dành cho nhà phát triển

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.