2008-12-30 33 views

Trả lời

11

Tiện ích mở rộng của Firefox phát theo các quy tắc khác nhau đối với JavaScript bình thường đang chạy trong trang: việc tìm người dùng hiện tại là hoàn toàn có thể.

mở Lỗi của bạn Console (trong Tools) và nhập này:

Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('USER') 

Các biến môi trường Firefox đã bắt đầu với có sẵn thông qua NsIEnvironment XPCOM component đó.

Bạn có thể phải tùy chỉnh điều này cho mỗi nền tảng. Nếu vẫn thất bại, bạn có thể tạo một số NsIFile trong ~ rồi xem số .path; Tôi không chắc chắn nếu biểu thức vỏ được tôn vinh ở đó, mặc dù ...

+1

Tuyệt vời! Trong Windows, biến môi trường là USERNAME thay vì USER, bằng cách này - bằng cách thử cả hai, bạn bao gồm tất cả các nền tảng mà bạn muốn. – bhollis

+0

Không có probs. Tôi thực sự đồng ý với David và DFectuoso - nó có vẻ giống như một lỗ hổng bảo mật ... Trên thực tế, các phần mở rộng có cùng các quyền như Firefox - chúng thực sự đáng tin cậy. Thật ngạc nhiên là có rất ít phần mềm độc hại FF! –

+0

Nói về lỗ hổng bảo mật, bạn có thể đặt USERNAME để nó có thể không phải là cách tốt nhất để xác định người dùng - họ có thể sử dụng điều đó để mạo danh người khác? – Rory

0

Đừng nghĩ rằng điều đó có thể xảy ra, có vẻ như nó sẽ là một lỗ hổng bảo mật nếu như vậy.

-1

Yea, không thể ... Javascript chạy trong môi trường an toàn và tất cả các phần mở rộng FF đều là javascript nên bạn không thể tương tác nhiều với hệ điều hành ... (nó sẽ rất tuyệt ...)

1

Câu trả lời chính xác được gắn cờ hoạt động tốt. Tôi sử dụng điều này trong phần mở rộng của chúng tôi trên Firefox 38. Tôi cũng sử dụng các sự kiện để trang có thể giao tiếp với phần mở rộng và lấy các thuộc tính windows từ phần mở rộng.

getWindowsProperty: function (prop) { trả về Components.classes ["@ mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get(prop); },

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