什麼是 ActiveX 控件?
ActiveX 控件普遍用於 Internet。它們能夠經過提供視頻、動畫內容等來增長瀏覽的樂趣。不過,這些程序可能出問題或者向您提供不須要的內容。在某些狀況下,這些程序可被用來以您不容許的方式從計算機收集信息、破壞您的計算機上的數據、在未經您贊成的狀況下在您的計算機上安裝軟件或者容許他人遠程控制您的計算機。考慮到這些風險,您應該在徹底信任發行商的狀況下才安裝這些程序。
當 Windows 阻止 ActiveX 控件的安裝時,您應該作什麼?
您可能不該該安裝該 ActiveX 控件。安裝 Windows 阻止的 ActiveX 控件是極爲冒險的事情。若是 Internet Explorer 安全設置處於默認級別,而且 ActiveX 控件沒有有效的數字簽名,Windows 就會阻止該 ActiveX 控件的安裝。
有效的數字簽名可確認發行商的標識(分發文件的公司、網站或我的),並確認文件自簽名之後沒有被篡改過這一事實。若是文件沒有有效的數字簽名,您就沒法肯定文件是否真的來自它所聲明的來源,或者它是否沒有被篡改過(例如,可能會有病毒插入控件中)。除非您信任發行商,而且知道文件打開後內容會是安全的,不然,就不該該打開文件。
ActiveXObject對象使用說明:
JavaScript中ActiveXObject對象是啓用並返回 Automation 對象的引用。使用方法:
newObj = new ActiveXObject( servername.typename[, location])
ActiveXObject 對象語法有這些部分:
其中newObj是必選項。要賦值爲 ActiveXObject 的變量名。
servername是必選項。提供該對象的應用程序的名稱。
typename是必選項。要建立的對象的類型或類。
location是可選項。建立該對象的網絡服務器的名稱。
Automation服務器至少提供一類對象,例如字處理應用程序可能提供應用程序對象、文檔對象和工具欄對象。
例如要建立Excel的Application和Sheet對象,代碼以下:
var ExcelApp = new ActiveXObject("Excel.Application");
var ExcelSheet = new ActiveXObject("Excel.Sheet")
一旦對象被建立,就能夠用定義的對象變量在代碼中的引用它。下面咱們將經過一個例子來看看對對象和方法的引用,經過對象變量 ExcelSheet 訪問新對象的屬性和方法和其餘 Excel 對象,包括 Application 對象和 ActiveSheet.Cells 集合。代碼以下:
1 ExcelSheet.Application.Visible = true;
2 ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
3 ExcelSheet.SaveAs("C:\\TEST.XLS");
4 ExcelSheet.Application.Quit();
下面咱們來看看怎樣建立遠程服務器中建立對象,可是這有一個前提就是要將Internet安全性關閉。要在遠程網絡計算機建立對象,能夠將該計算機的名稱傳遞給 ActiveXObject 的 servername 參數。該名稱與共享名的機器名部分相同。好比共享名爲 "\\myserver\public" 的網絡,servername 是 "myserver"。另外,能夠用 DNS 格式或 IP 地址指定 servername。下面的代碼返回在名爲 "myserver" 的遠程網絡計算機上運行的 Excel 實例的版本號:
1 function GetAppVersion() {
2 var XLApp = new ActiveXObject("Excel.Application", "MyServer");
3 return(XLApp.Version);
4 }
若是指定的遠程服務器不存在或找不到時將會發生錯誤。
- javascript取得機器名,用戶名,讀寫註冊表,啓動應用程序
- //javascript有個特殊的對象ActiveXObject,經過它能夠訪問windows的本地文件系統和應用程序,
- 好比:有的時候咱們須要獲得用戶的機器名,用戶名,獲得某個文件的信息,或者讀寫註冊表,或者啓動計算器、outlook等應用程序。
-
- 下面是一些經常使用的方法,每一個都通過了測試。
- <script language="JavaScript">
- //取得機器名,登陸域及登陸用戶名
- function getusername()
- {
- var WshNetwork = new ActiveXObject("WScript.Network");
- alert("Domain = " + WshNetwork.UserDomain);
- alert("Computer Name = " + WshNetwork.ComputerName);
- alert("User Name = " + WshNetwork.UserName);
- }
-
- //取得系統目錄
- function getprocessnum()
- {
- var pnsys=new ActiveXObject("WScript.shell");
- pn=pnsys.Environment("PROCESS");
- alert(pn("WINDIR"));
- }
- //返回系統中特殊目錄的路徑
- function getspecialfolder()
- {
- var mygetfolder=new ActiveXObject("WScript.shell");
- if(mygetfolder.SpecialFolders("Fonts")!=null)
- {
- alert(mygetfolder.SpecialFolders("Fonts"));
- }
- }
- //取得磁盤信息 傳入參數如:getdiskinfo('c')
- function getdiskinfo(para)
- {
- var fs=new ActiveXObject("scripting.filesystemobject");
- d=fs.GetDrive(para);
- s="卷標:" + d.VolumnName;
- s+="------" + "剩餘空間:" + d.FreeSpace/1024/1024 + "M";
- s+="------" + "磁盤序列號:" + d.serialnumber;
- alert(s)
- }
- //取得系統目錄
- function getprocessnum()
- {
- var pnsys=new ActiveXObject("WScript.shell");
- pn=pnsys.Environment("PROCESS");
- alert(pn("WINDIR"));
- }
- //啓動計算器
- function runcalc()
- {
- var calc=new ActiveXObject("WScript.shell");
- calc.Run("calc");
- }
- //讀取註冊表中的值
- function readreg()
- {
- var myreadreg=new ActiveXObject("WScript.shell");
- try{
- alert(myreadreg.RegRead ("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\NeroCheck"));
- }
- catch(e)
- {
- alert("讀取的值不存在!");
- }
- }
- //寫註冊表
- function writereg()
- {
- var mywritereg=new ActiveXObject("WScript.shell");
- try{
- mywritereg.RegWrite("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyTest","c:\\mytest.exe");
- alert("寫入成功!");
- }
- catch(e)
- {
- alert("寫入路徑不正確!");
- }
- }
- //刪除註冊表
- function delreg()
- {
- var mydelreg=new ActiveXObject("WScript.shell");
- if(confirm("是否真的刪除?"))
- {
- try{
- mydelreg.RegDelete("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyTest");
- alert("刪除成功!");
- }
- catch(e)
- {
- alert("刪除路徑不正確");
- }
- }
- }
- //取得文件信息 調用方式如:getfileinfo('c:\\test.pdf')
- function getfileinfo(para)
- {
- var myfile=new ActiveXObject("scripting.filesystemobject");
- var fi=myfile.GetFile(para);
- alert("文件類型:"+fi.type+"文件大小:"+fi.size/1024/1024+"M"+"最後一次訪問時間:"+fi.DateLastAccessed);
- }
- //取得客戶端的信息
- function clientInfo()
- {
- strClientInfo="availHeight= "+window.screen.availHeight+"\n"+
- "availWidth= "+window.screen.availWidth+"\n"+
- "bufferDepth= "+window.screen.bufferDepth+"\n"+
- "colorDepth= "+window.screen.colorDepth+"\n"+
- "colorEnable= "+window.navigator.cookieEnabled+"\n"+
- "cpuClass= "+window.navigator.cpuClass+"\n"+
- "height= "+window.screen.height+"\n"+
- "javaEnable= "+window.navigator.javaEnabled()+"\n"+
- "platform= "+window.navigator.platform+"\n"+
- "systemLanguage= "+window.navigator.systemLanguage+"\n"+
- "userLanguage= "+window.navigator.userLanguage+"\n"+
- "width= "+window.screen.width;
- alert(strClientInfo);
- }
-
- </script>
-
- //另存爲excel文件並寫入值
- function saveas(){
- var ExcelApp = new ActiveXObject("Excel.Application");
- var ExcelSheet = new ActiveXObject("Excel.Sheet")
- ExcelSheet.Application.Visible = true;
- ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
- ExcelSheet.SaveAs("C:\\TEST.XLS");
- ExcelSheet.Application.Quit();
- alert('ok');
- }
判斷瀏覽器是否支持ActiveX控件,若是瀏覽器支持ActiveX控件能夠利用javascript
(window.ActiveXObject) 什麼意思?
解:判斷瀏覽器是否支持ActiveX控件,若是瀏覽器支持ActiveX控件能夠利用
var xml=new ActiveXObject("Microsoft.XMLHTTP");建立XMLHttpRequest 對象(這是在IE7之前的版本中);在較新的IE版本中能夠利用 var xml=new ActiveXObject("Msxml2.XMLHTTP")的形式建立XMLHttpRequest對象;而在IE7及非IE瀏覽器中能夠利用var xml=new XMLHttpRequest()建立XMLHttpRequest對象。
建立XMLHttpRequest 對象,必須考慮到瀏覽器兼容問題
建立XMLHTTPRequest對象
對了,說到區別,咱們這裏來看看怎麼來聲明(使用)它,在使用XMLHTTPRequest對象發送請求和處理響應以前,咱們必需要用javascript建立一個XMLHTTPRequest對象。(IE把XMLHTTPRequest實現爲一個ActiveX對象,其餘的瀏覽器[如Firefox/Safari/Opear]則把它實現爲一個本地的javascript對象)。下面咱們就來看看具體怎麼運用javascript來建立它吧:
代碼:
java
複製代碼代碼以下:
<script language="javascript" type="text/javascript">
<!--
var xmlhttp;
// 建立XMLHTTPRequest對象
function createXMLHTTPRequest(){
if(window.ActiveXObject){ // 判斷是否支持ActiveX控件
xmlhttp = new ActiveObject("Microsoft.XMLHTTP"); // 經過實例化ActiveXObject的一個新實例來建立XMLHTTPRequest對象
}
else if(window.XMLHTTPRequest){ // 判斷是否把XMLHTTPRequest實現爲一個本地javascript對象
xmlhttp = new XMLHTTPRequest(); // 建立XMLHTTPRequest的一個實例(本地javascript對象)
}
}
//-->
</script>
js用來區別IE與其餘瀏覽器及IE6-8之間的方法。
一、document.all
二、!!window.ActiveXObject;
使用方法以下:
web
複製代碼代碼以下:
if (document.all){
alert(」IE瀏覽器」);
}else{
alert(」非IE瀏覽器」);
}
if (!!window.ActiveXObject){
alert(」IE瀏覽器」);
}else{
alert(」非IE瀏覽器」);
}
下面是區別IE六、IE七、IE8之間的方法:
shell
複製代碼代碼以下:
var isIE=!!window.ActiveXObject;
var isIE6=isIE&&!window.XMLHttpRequest;
var isIE8=isIE&&!!document.documentMode;
var isIE7=isIE&&!isIE6&&!isIE8;
if (isIE){
if (isIE6){
alert(」ie6″);
}else if (isIE8){
alert(」ie8″);
}else if (isIE7){
alert(」ie7″);
}
}
首先咱們確保這個瀏覽器爲IE的狀況下,進行了在一次的檢測,若是你對此有懷疑,能夠測試一下。
我這裏就直接使用在判斷中了,你也能夠將他們先進行聲明成變量進行使用。聽說火狐之後也會加入document.all這個方法,因此建議使用第二種方法,應該會安全一些。windows