2009-10-12 32 views
5

Giả sử bạn muốn tập lệnh Greasemonkey tương thích với Safari và Chrome.Tính tương thích của tập lệnh Greasemonkey với Firefox, Safari, Opera và chrome (sự kiện tải)

Trong khi đó, Firefox các tập lệnh Greasemonkey chỉ chạy khi DOM sẵn sàng. Chrome, Safari và Opera dường như chạy các tập lệnh Greasemonkey trước khi DOM sẵn sàng. Vì vậy, những gì tôi đang tìm kiếm là một giải pháp sẽ chỉ chạy một người nghe trên trang, chờ đợi sự kiện DOM đã tải/sẵn sàng và khi nhận sự kiện đó, sau đó chạy phần còn lại của tập lệnh. Nếu trình duyệt họ đang sử dụng là Chrome, Safari hoặc Opera. Nếu họ đang sử dụng Firefox, chỉ cần chạy kịch bản ngay lập tức và không bận tâm với người nghe sự kiện.

Làm cách nào để mã hóa?

@NV

Cảm ơn NV, bạn có biết nếu kịch bản đó cũng là Google Chrome tương thích?

sẽ mã

(function(){ 

    // Code here run after 'load' event in all browsers. 

})(); 

cũng chạy trên DOM sẵn sàng trong Google Chrome?

Trả lời

-1

Tôi cho rằng bạn có thể xem các thư viện JavaScript như thế nào JQuery kéo chức năng này ra. Nó có thể là quá nặng để thực sự sử dụng một, nhưng họ đã chắc chắn giải quyết vấn đề này rồi.

1

Trước hết, hãy xem UserJS. Nó hoạt động trên Greasemonkey, Opera và Safari Greasekit.

Nếu bạn muốn chạy một số mã sau khi tải trang, trình xử lý sự kiện không cần thiết chút nào.

... safari + opera, dường như chạy tập lệnh gm trước khi sẵn sàng.

Không. Thực ra, nó phức tạp hơn. Opera có greasemokey compatible mode. Tất cả các tập lệnh có tên yada-yada .user .js chạy ở chế độ tương thích và chạy sau DOM đã sẵn sàng.

LƯU Ý: quấn mã của bạn vào chức năng ẩn danh để tránh rò rỉ biến vào đối tượng cửa sổ chung (điều này xảy ra trong Opera).

(function(){ 

    // Some code 

})(); 

Safari Greasekit hoạt động như Firefox Greasemonkey trong trường hợp này.

+2

Đơn giản chỉ cần gói mã trong một chức năng ẩn danh KHÔNG chậm trễ thực hiện cho đến sau sự kiện tải. Phần đầu của câu trả lời ở trên là sai và gây nhầm lẫn. – hallvors

+0

hành lang, bạn đã đúng! Có lẽ tôi không nói rõ. Tôi đã cập nhật câu trả lời. – NVI

+0

Tôi đã đánh dấu câu trả lời là wiki cộng đồng. Vì vậy, bạn có thể chỉnh sửa. – NVI

0

Tôi đã jQuery minified và sao chép dán nó vào UserScript của tôi, và sau đó đã làm các cổ điển

$(document).ready(function() { 
     // Put all your jQuery goodness in here. 
    }); 

nào có thêm tiền thưởng đem lại cho bạn jQuery, tất cả bọc trong các chức năng đề cập trong một câu hỏi khác:

(function(){ 

    // Some code. 

})(); 

Bạn có thể sử dụng công cụ Greasemonkey để nhập jQuery qua URL ở trên cùng, nhưng Greasemonkey cụ thể, Chrome/Opera, v.v. sẽ không tương thích nếu bạn làm theo cách này.

Các vấn đề liên quan