Chrome Dev Tools - Sửa đổi javascript và tải lại


192

Có thể sửa đổi JavaScript của một trang và sau đó tải lại trang mà không tải lại tệp JavaScript đã sửa đổi (và do đó mất các sửa đổi)?

Câu trả lời:


216

Đây là một chút công việc xung quanh, nhưng một cách bạn có thể đạt được điều này là bằng cách thêm một điểm dừng khi bắt đầu tệp javascript hoặc chặn bạn muốn thao tác.

Sau đó, khi bạn tải lại, trình gỡ lỗi sẽ tạm dừng trên điểm dừng đó và bạn có thể thực hiện bất kỳ thay đổi nào bạn muốn đối với nguồn, lưu tệp và sau đó chạy trình gỡ lỗi thông qua mã sửa đổi.

Nhưng như mọi người đã nói, tải lại các thay đổi tiếp theo sẽ không còn nữa - ít nhất là cho phép bạn chạy một số máy khách JS được sửa đổi một chút.


10
Hóa ra đây là câu trả lời tôi đang tìm kiếm. Đặt một điểm dừng trên dòng đầu tiên của mã javascript. Sau đó khi sự cố xảy ra, dán mã sửa đổi của bạn vào đó. Không tạm dừng và nó hoạt động!
Nicholas Blasgen

Làm thế nào để bạn chỉnh sửa hoặc dán mã trong đó? Tôi chắc chắn không thấy chức năng đó trong bảng điều khiển Chrome. Tôi có thể chỉnh sửa JS / HTML từ phần Yếu tố, nhưng điều đó không tự động tải lại. Nhưng ở nơi đặt điểm dừng, điều đó dường như chỉ đọc
Josh Sutterfield

Thật không may, đây vẫn không phải là một giải pháp tuyệt vời. Bất kỳ mã nào bạn thêm đều không có sẵn trong bảng điều khiển. Ví dụ: thêm var foo = 'bar'vào một tập lệnh không hiển thị foovới bàn điều khiển.
AgmLauncher

Có chuyện gì với kịch bản bên ngoài? điểm dừng dường như biến mất khỏi chúng.
OlehZiniak

Điều này hoạt động miễn là bạn muốn sửa đổi các tập lệnh được tải bên ngoài, cả Chrome và các công cụ gỡ lỗi FireFox đều không cho phép sửa đổi javascript nội tuyến, ngay cả khi việc thực thi của nó bị gián đoạn với một điểm dừng.
Marek

146

Tin tuyệt vời, bản sửa lỗi sẽ đến vào tháng 3 năm 2018, xem liên kết này: https://developers.google.com/web/updates/2018/01/devtools

"Ghi đè cục bộ cho phép bạn thực hiện các thay đổi trong DevTools và giữ các thay đổi đó trong quá trình tải trang. Trước đây, mọi thay đổi bạn thực hiện trong DevTools sẽ bị mất khi bạn tải lại trang. Ghi đè cục bộ hoạt động với hầu hết các loại tệp

Làm thế nào nó hoạt động:

  • Bạn chỉ định một thư mục nơi DevTools sẽ lưu các thay đổi. Khi bạn thực hiện các thay đổi trong DevTools, DevTools sẽ lưu một bản sao của tệp đã sửa đổi vào thư mục của bạn.
  • Khi bạn tải lại trang, DevTools phục vụ tệp cục bộ, đã sửa đổi, thay vì tài nguyên mạng.

Để thiết lập Ghi đè cục bộ:

  1. Mở bảng Nguồn.
  2. Mở tab Ghi đè.
  3. Nhấp vào Cài đặt ghi đè.
  4. Chọn thư mục bạn muốn lưu các thay đổi của bạn vào.
  5. Ở đầu chế độ xem của bạn, nhấp Cho phép để cấp cho DevTools đọc và ghi quyền truy cập vào thư mục.
  6. Hãy thay đổi. "

CẬP NHẬT (ngày 19 tháng 3 năm 2018): Nó trực tiếp, giải thích chi tiết tại đây: https://developers.google.com/web/updates/2018/01/devtools#overrides


12
Với việc phát hành Chrome 65, đây sẽ là câu trả lời mới được chấp nhận. (Chức năng đã có sẵn trong Chrome Canary)
micros

1
Tôi có một tệp "a.js? Ver = 1.2". Nó được lưu trong thư mục ghi đè dưới dạng "a.js" và không được tải dưới dạng ghi đè. Nó không hoạt động khi có các tham số? Có một cách giải quyết?
Ralf

Hoạt động như dự định, nhưng cần phải chăm sóc một điều. Bạn phải xóa cấu hình ghi đè hoặc xóa tệp được sửa đổi cục bộ (được lưu trong thư mục mà bạn chỉ định trong khi định cấu hình ghi đè) sau khi bạn muốn tải js gốc của mình.
Muhammad Murad Haider

61

Các Override Resource phần mở rộng cho phép bạn thực hiện chính xác rằng:

  • tạo quy tắc tệp cho url bạn muốn thay thế
  • chỉnh sửa js / css / etc trong phần mở rộng
  • tải lại thường xuyên như bạn muốn :)

1
Đã lừa tôi cảm ơn bạn. Tôi đã từng sử dụng Fiddler cho Windows trước phần mở rộng đó. Ngay bây giờ tôi có thể gỡ lỗi các tập tin từ xa trên bất kỳ nền tảng nào.
Ahmad Alfy

Tôi không hiểu phần mềm, ai đó có thể giải thích chính xác tôi phải thiết lập nó như thế nào không?
Đen

0

Tôi biết đó không phải là câu hỏi chính xác (Công cụ dành cho nhà phát triển Chrome) nhưng tôi đang sử dụng giải pháp này với thành công: http://www.telerik.com/fiddler

(khá chắc chắn một số nhà phát triển web đã biết về công cụ này)

  1. Lưu tệp cục bộ
  2. Chỉnh sửa theo yêu cầu
  3. Lợi nhuận!

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

Tài liệu đầy đủ: http://docs.telerik.com/fiddler/KnowledgeBase/AutoResponder

Tái bút Tôi thà để nó được triển khai trong Chrome dưới dạng cờ preserve after reload, không thể thực hiện điều này ngay bây giờ, các diễn đàn và nhóm thảo luận bị chặn trên mạng công ty :)


-8

Có, chỉ cần mở Tab "Nguồn" trong công cụ dev và điều hướng đến tập lệnh bạn muốn thay đổi. Thực hiện điều chỉnh của bạn trực tiếp trong cửa sổ công cụ dev và sau đó nhấn ctrl + s để lưu tập lệnh - biết rằng js mới sẽ được sử dụng cho đến khi bạn làm mới toàn bộ trang.


Phiên bản nào của chrome? Có, bạn có thể "chỉnh sửa" nội dung của tập lệnh (mặc dù không phải tập lệnh trên trang), nhưng các thay đổi không có bất kỳ ảnh hưởng nào và ctrl-s / save như chỉ cho phép bạn lưu tập lệnh cục bộ (như ctrl-như trong cửa sổ chính).
davidkonrad

Tôi sử dụng phiên bản 34 - khi tôi chỉnh sửa tập lệnh, ví dụ: thêm console.log vào một sự kiện nhấp (đã liên kết) và lưu, giao diện điều khiển xuất ra thông báo sau: "Biên dịch lại và cập nhật thành công." - sau đó. Khi tôi kích hoạt sự kiện nhấp chuột, tôi nhận được đầu ra log trong giao diện điều khiển.
hộp đựng đồ

Khi bạn tải lại trang, nó dường như không sử dụng tệp được sửa đổi cục bộ.
Jake Wilson

32
bạn đã có tôi tại "có" ... nhưng sau đó bạn mất tôi tại "cho đến khi bạn làm mới toàn bộ trang" ....
Cool Blue
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.