2012-04-13 21 views
11

Chữ người dùng của tôi in một số thông tin bằng cách sử dụng console.log().console.log không hoạt động khi được sử dụng trong Firefox, tập lệnh Greasemonkey

Tính năng này hoạt động tốt trong Chrome, nhưng khi tôi cài đặt usercript này trong Firefox (Greasemonkey), bảng điều khiển web trong Firefox không hiển thị bất kỳ thứ gì.

Tôi đã tìm kiếm giải pháp và một số được đề xuất sử dụng unsafeWindow nhưng cũng không hiển thị bất kỳ đầu ra nào. Hơn nữa, không thể sử dụng unsafeWindow cho chrome. Tôi thậm chí đã cài đặt Firebug nhưng nó không được sử dụng. Làm cách nào tôi có thể giải quyết vấn đề này?

Ví dụ, tôi đã cố gắng UserScript này trong Firefox:

// ==UserScript== 
// @name  console 
// ==UserScript== 
console.log("hello"); 

Trả lời

16

Bạn có nghĩa là nó không hoạt động khi cài đặt qua Greasemonkey, phải không?
Cách đây không lâu, Greasemonkey broke console.log (Mới! Bug report). Bây giờ, để xem kết quả của cuộc gọi đồng bằng console.log() từ Greasemonkey, bạn cần phải xem trong Bàn điều khiển lỗi của Firefox, không phải của Firebug.

Bạn có thể thấy Lỗi giao diện điều khiển của FF bằng cách nhấn: Ctrlphím ShiftJ.

Tuy nhiên, bạn có thể sử dụng unsafeWindow.console.log() trong cả tập lệnh Chrome và Greasemonkey. Chrome hiện có hỗ trợ giới hạn cho unsafeWindow.

Nếu bạn sử dụng unsafeWindow, bạn có quyền truy cập vào phạm vi đầy đủ của Firebug's logging functions từ Greasemonkey. (Firebug phải được cài đặt và họ vẫn có thể không hoạt động trong userscripts Chrome, tôi đã không kiểm tra như vậy trong một thời gian.)


Trong Firefox, nếu Firebug không được cài đặt, hoặc nó không được kích hoạt cho trang, sau đó gọi unsafeWindow.console.log() sẽ hiển thị với "Bảng điều khiển Web mới" (CtrlShiftK).
Bạn cần sử dụng unsafeWindow khi ở trong tập lệnh Greasemonkey.

Lưu ý rằng Firefox hiện hỗ trợ console.log(), console.info(), console.warn()console.error() nguyên bản - không yêu cầu Firebug.

+0

nó hoạt động nếu tôi sử dụng 'unsafeWindow.console.log()' trong firebug nhưng làm cách nào để có được kết quả đầu ra trong webConsole. là không có cách nào tôi nhận được đầu ra mà không cần sử dụng firebug. – user1275375

+0

Xem câu trả lời được cập nhật. –

+0

tôi đã thử điều này nhưng không có gì được hiển thị trong giao diện điều khiển web – user1275375

5

Đợi một phút: nếu câu hỏi là về đăng nhập trong bảng điều khiển bằng Greasemonkey (tôi có thể thề tôi đã thấy thẻ ), tại sao không sử dụng phương thức GM_log?

// ==UserScript== 
// @name   GM_log Example 
// @namespace  http://www.example.com/ 
// ==/UserScript== 

GM_log("This is an example of GM_log"); 

Hoặc tôi đang thiếu thứ gì đó?

PS: bạn cũng có thể kiểm tra javascript.options.showInConsole trong about: config. nó phải là true.

+1

Có, bạn có thể sử dụng 'GM_log', nhưng không phải là thiết bị di động hoặc có thể kiểm tra được. Ngoài ra, nó khá nhiều hút so với API 'console' - cả hai bản địa bây giờ được hỗ trợ bởi hầu hết các trình duyệt, và Firebug, thêm ngọt ngào, giao diện điều khiển API. –

1

tôi thấy rằng (thử nghiệm với Chrome/Tampermonkey) những gì bạn cần là:
window.log("<message goes here>"); không unsafeWindow.console.log("<msg>"); như unsafeWindowconsole đưa ra như không xác định. Hãy thử điều đó, vì tôi khá chắc chắn đó là cách bạn phải làm trong các phiên bản sau của trình duyệt, v.v.
Tôi hy vọng điều này sẽ hữu ích!