Tôi đọc "Dive into Greasemonkey" (by Mark Pilgrim) được viết vào năm 2005. Nó đề cập rằng Greasemonkey kết thúc tốt đẹp một tập lệnh người dùng trong trình bao bọc hàm ẩn danh. Greasemonkey có chèn trình bao bọc vào mã JavaScript nguồn hay thêm nó làm trình xử lý sự kiện chẳng hạn như window.onload
không?JavaScript - cách Greasemonkey hoạt động
7
A
Trả lời
6
cảm ơn vì đã trỏ mã. khi sự kiện DOMContentLoaded được kích hoạt, là trình bao bọc của usercript được gọi là trình xử lý của sự kiện hay là trình bao bọc được chèn vào như một phần của mã nguồn? nói cách khác, dòng 309, this.evalInSandbox ("(function() {" + scriptSrc + "})()", url, sandbox, script), thực hiện trình bao bọc hoặc chèn trình bao bọc vào mã javascript ban đầu? – Paul
GM đầu tiên lắng nghe các sự kiện DOMContentLoaded, khi những điều đó xảy ra, GM xác định người dùng nên chạy (thông qua quy tắc @ include/@ exclude và kiểm tra xem url có phải là 'greasemonkeyable') hay không, sau đó mã nguồn từ usercript (chỉ là chuỗi tại thời điểm này) mà nên được chạy được bao bọc trong một chức năng tự thực hiện ẩn danh (thông qua nối chuỗi), và cuối cùng là một evalInSandbox trên chức năng tự thực hiện ẩn danh (chạy bản ghi người dùng). – erikvold
Vì vậy, kịch bản được thực hiện tại thời điểm nó được tiêm. Nó có đúng không? – Paul