new ActiveXObject("Scripting.FileSystemObject") 未能建立物件的解決方法
JavaScript中ActiveXObject物件是啟用並返回 Automation 物件的引用。使用方法: newObj = new ActiveXObject( servername.typename[, location]) ActiveXObject 物件語法有這些部分: 其中newObj是必選項。要賦值為 ActiveXObject 的變數名。 servername是必選項。提供該物件的應用程式的名稱。 typename是必選項。要建立的物件的型別或類。 location是可選項。建立該物件的網路伺服器的名稱。 Automation伺服器至少提供一類物件,例如字處理應用程式可能提供應用程式物件、文件物件和工具欄物件。
專案中有一個頁面JavaScript程式碼通過ActiveXObject建立FileSystemObject實現檔案的讀取。
function Login() { var fso; var filePath; try { fso = new ActiveXObject("Scripting.FileSystemObject"); } catch (exp) { alert("要生成該報表,必須將瀏覽器須設定為可使用“ActiveX控制元件”。如有疑問,請點選瀏覽器的“幫助”瞭解瀏覽器設定方法!"); } filePath = fso.BuildPath("c:\\files", "test.txt"); //生成路徑 alert(filePath); }
但每次瀏覽器都報錯未能建立物件.
F12開發者模式除錯時發現:執行至new ActiveXObject這行時,automation伺服器未能建立物件。
解決方法:
IE瀏覽器->工具->Internet選項->安全->自定義級別->設定
->“對未標記為可安全執行指令碼的ActiveX控制元件初始化並執行指令碼”設定為啟用,確定即可。
注意:
啟用此選項只可用於除錯原生代碼,在訪問其它網站前一定記得改過來。
否則惡意指令碼將通過IE具有讀、寫、遍歷你本地檔案等的全部許可權!