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
cevap
USERNAME
environmnet değişkenini almak için nsIEnvironment arabirimini kullanabilirsiniz.
, 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
<html>
<head>
<script language="javascript">
function GetUserName()
{
var wshell = new ActiveXObject("WScript.Shell");
alert(wshell.ExpandEnvironmentStrings("%USERNAME%"));
}
</script>
</head>
<body OnLoad="GetUserName();">
</body>
</html>
ActiveX tam olarak Firefox'ta çalışmıyor. – sdwilsh
Bu Windows üzerinde hile yapar:
function getUser() {
return Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('USERNAME');
}
Bu çözüm bana bu hatayı veriyorTypeError: Components.classes undefined', Bu hatanın çözümü hakkında ne düşünüyorsunuz? – Scar
Bu, orijinal soru sorduğu için Firefox'ta çalışmaz. – Monkpit
@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
Firefox zaten tümleşik kimlik doğrulaması dahili (birçok insan bunu bilmiyorum) olmuştur.
Bkz:
http://justgeeks.blogspot.nl/2011/01/firefox-supports-integrated-windows.html
iyi şanslar: İşte https://addons.mozilla.org/nl/firefox/addon/integrated-auth-for-firefox/
bazı ekstra açıklaması var: https://developer.mozilla.org/en-US/docs/Integrated_Authentication İşte
yapılandırmayı kolaylaştırır bir Popüler Firefox eklentisi olan!
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);
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
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
10 rep bizi bize gösterme sıkıntısı var. – pythonian29033
Bu bir güvenlik riski olduğunu ve javascript maruz nedeni budur. Ne yapmaya çalışıyorsun? –
Bir şirket için dahili bir uzantı yapıyorum ve hangi kullanıcı isteklerinin belgelendiğini görmem gerekiyor. – cwhiii
@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