2010-06-03 16 views
25

Bir Firefox eklentisi (JavaScript ile yazılmış) üzerinde çalışıyorum ve şu anda oturum açmış olan Windows kullanıcısını belirlemeliyim. Bunu yapmanın bir yolu var mı?Eski sürümde Windows kullanıcı adı alın (WebExtensions değil) Firefox eklentisi

+0

Bu bir güvenlik riski olduğunu ve javascript maruz nedeni budur. Ne yapmaya çalışıyorsun? –

+0

Bir şirket için dahili bir uzantı yapıyorum ve hangi kullanıcı isteklerinin belgelendiğini görmem gerekiyor. – cwhiii

+0

@duskwuff, Neden sadece bu düzenleme için 7 yaşındaki bir soru vurmak? Yaptığınız tek şey başlıktaki bir etiketi, başlıktaki başka bir etiketle değiştirmekti. Etiketler zaten bir Firefox eklentisi ile ilgili olduğunu açıklığa kavuşturdu. Bu değişikliği yapmak için bunu düzenlemeye gerek yoktu. Aslında, pedantic almak istiyorsanız, başlıklarda integral olmayan etiketlere sahip olmamamız gerekiyor, bu yüzden "Windows kullanıcı adını al" daha uygun olurdu. Her zaman tüm başlıklara etiketler koymanızı mı öneriyorsunuz? – Makyen

cevap

5

USERNAME environmnet değişkenini almak için nsIEnvironment arabirimini kullanabilirsiniz.

+2

, bunun için kullanıcı adı alma işleminden geçerken ActiveX'in (kullanıcıya güvenlik riski olduğunu söyleyen) sorun yaratmadığı bir IE eşdeğeri var mı? – pythonian29033

-2
<html> 
<head> 
    <script language="javascript"> 
     function GetUserName() 
     { 
      var wshell = new ActiveXObject("WScript.Shell"); 
      alert(wshell.ExpandEnvironmentStrings("%USERNAME%")); 
     } 
    </script> 
</head> 
<body OnLoad="GetUserName();"> 
</body> 
</html> 
+8

ActiveX tam olarak Firefox'ta çalışmıyor. – sdwilsh

9

Bu Windows üzerinde hile yapar:

function getUser() { 
    return Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('USERNAME'); 
}  
+1

Bu çözüm bana bu hatayı veriyorTypeError: Components.classes undefined', Bu hatanın çözümü hakkında ne düşünüyorsunuz? – Scar

+0

Bu, orijinal soru sorduğu için Firefox'ta çalışmaz. – Monkpit

+0

@Scar: Bu Stackoverflow gönderisini anladığım kadarıyla (http://stackoverflow.com/questions/21378058/why-components-classes-is-undefined), Components.classes öğesini kullanamazsınız. düzenli web sayfaları. Firefox eklentilerinde/eklentilerinde kullanılmak üzere tasarlanmıştır. – Stephanie

3

ardından kod işlevi arama ile yüklendiğinde etkinliğinde yerine benim için çalışıyor:

var objUserInfo = new ActiveXObject("WScript.network"); 
document.write(objUserInfo.ComputerName+"<br>"); 
document.write(objUserInfo.UserDomain+"<br>"); 
document.write(objUserInfo.UserName+"<br>"); 
var uname = objUserInfo.UserName; 
alert(uname); 
+7

Asker, * firefox * yazılımını kullanır. Bu cevap M $ ActiveX kullanıyor! Çalışmayacak (ve gerçekten test ettiğime inanamıyorum, ama yaptım). Aslında firefox için bir ActiveX Eklentisi vardı (FF2 dönemi boyunca bir kaç yıl önce), ancak ActiveX şimdi mozilla blok listesindedir. ([Kaynak] (http://kb.mozillazine.org/ActiveX)). – GitaarLAB

+0

Test edildi ancak bu kod sadece Internet Explorer'da çalışır ve Firefox'ta çalışmayacaktır. En iyi seçenek, arkasından gelen koddan (sunucu tarafı) verilen değeri saklamak için gizli bir kontrol/metin kutusu oluşturur, ihtiyacınız olan değeri almak için javascript kullanın. Mevcut trend göz önüne alındığında, herkes artık işlerini yapmak için IE kullanmıyor. – mutanic

+0

10 rep bizi bize gösterme sıkıntısı var. – pythonian29033

İlgili konular