幾年來,我用一個VBScript程序,除其他外,打開一個Internet Explorer窗口提示我輸入用戶ID,密碼和其他幾個變量。然而,最近我的公司強迫所有人都使用IE11。儘管我不知道Javascript,但我決定嘗試通過將.vbs文件擴展名更改爲.js並逐個修復錯誤來轉換程序。我最終讓程序運行時沒有拋出錯誤,它實際上運行IE並顯示密碼框窗口,但是當我點擊「提交」按鈕時,它崩潰了。我希望那些真正瞭解Javascript的人可能會看看這個功能,並告訴我問題是什麼。我將程序剝離下來以運行該功能並顯示結果。預先感謝所有迴應的人。完成轉換密碼框功能,調用IE從VBScript到Javascript
var Version = "1.18";
var True = 1;
var False = 0;
var aryServers;
var intI, intLen;
var blnPwdBoxWait;
var objWShell, objIE;
var strLoginID, strPassword, setServer, strShell, strLocalUser;
aryServers = Array("server1", "server2", "server3", "server4", "server5");
// ################### DEFAULT SERVER AND SHELL VALUES
strServer = "server3"; // computer to which you will be connecting
strShell = "sh"; // "sh" if sh, bash, etc. or "csh" if csh, tcsh, etc.
// ###################
objWShell = new ActiveXObject("WScript.shell");
strLocalUser = objWShell.ExpandEnvironmentStrings("%USERNAME%");
// Get user data
strLoginID = "";
strPassword = "";
if (strPassword == "") {
strPassword = PasswordBox ("Password Box Demo, Version " + Version);
WScript.Sleep(500);
}
window.alert("strLoginID: " + strLoginID + ", strPassword: " + strPassword +
", strServer: " + strServer + ", strShell: " + strShell);
objWShell = Nothing;
WScript.Quit;
// ##################
function PasswordBox(strIETitle) {
objIE = new ActiveXObject("InternetExplorer.Application");
objIE.FullScreen = False;
objIE.AddressBar = False;
objIE.MenuBar = False;
objIE.StatusBar = False;
objIE.ToolBar = False;
objIE.RegisterAsDropTarget = False;
objIE.Navigate("about:blank");
do {
WScript.Sleep(100);
} while (! objIE.ReadyState == 4);
if (strLoginID != "" && strPassword == "") {
objIE.document.parentWindow.resizeTo(400, 300 + 70);
} else {
objIE.document.parentWindow.resizeTo(400, 260 + 70);
}
objIE.document.parentWindow.moveTo(
objIE.document.parentWindow.screen.width/2 - 200,
objIE.document.parentWindow.screen.height/2 - 200);
objIE.document.writeln("<html>");
objIE.document.writeln("<head>");
objIE.document.writeln("<title>" + strIETitle + "</title>");
objIE.document.writeln("<style type='text/css'>");
objIE.document.writeln("<!--");
objIE.document.writeln(".fixed { font-family:courier new, monospace }");
objIE.document.writeln("-->");
objIE.document.writeln("</style>");
objIE.document.writeln("</head>");
objIE.document.writeln("<body bgcolor=Silver>");
objIE.document.writeln("<center>");
objIE.document.writeln("<form>");
if (strPassword == "") {
if (strLoginID == "") {
strLoginID = strLocalUser;
} else {
objIE.document.writeln("<b><font color='#FF3399'>Please enter a password!</font></b><p>");
}
}
objIE.document.writeln("<b>" + strIETitle + "</b><p>");
objIE.document.writeln("<table>");
objIE.document.writeln("<tr><td colspan=2 align=left>");
objIE.document.writeln("Enter your username and password:<br>");
objIE.document.writeln("</td></tr><tr><td valign=top>");
objIE.document.writeln("Username ");
objIE.document.writeln("</td><td>");
objIE.document.writeln("<input id='userid' size=20 class='fixed' " +
"value='" + strLoginID + "'>");
objIE.document.writeln("</td></tr><tr><td valign=top>");
objIE.document.writeln("Password ");
objIE.document.writeln("</td><td>");
objIE.document.writeln("<input type='password' id='passwd' size=20 " +
"class='fixed'><p>");
objIE.document.writeln("</td></tr><tr><td valign=top>");
objIE.document.writeln("Remote host:");
objIE.document.writeln("</td><td>");
objIE.document.writeln(" Shell type:");
objIE.document.writeln("</td></tr><tr><td valign=top>");
objIE.document.writeln("<select name='server'><br>");
intLen = aryServers.length;
for (intI = 0; intI < intLen; intI++) {
if (strServer == aryServers[ intI ]) {
objIE.document.writeln("<option value='" + aryServers[ intI ] +
"' selected>" + aryServers[ intI ] + "<br>");
} else {
objIE.document.writeln("<option value='" + aryServers[ intI ] +
"'>" + aryServers[ intI ] + "<br>");
}
}
objIE.document.writeln("</select>");
objIE.document.writeln("</td><td valign=top>");
if (strShell == "sh") {
objIE.document.writeln(" <input " +
"type='radio' name='shell' id='sh' checked> sh/bash/ksh<br>");
objIE.document.writeln(" <input " +
"type='radio' name='shell' id='csh'> csh/tcsh<br>");
} else {
objIE.document.writeln(" <input " +
"type='radio' name='shell' id='sh'> sh/bash/ksh<br>");
objIE.document.writeln(" <input " +
"type='radio' name='shell' id='csh' checked> csh/tcsh<br>");
}
objIE.document.writeln("</td></tr>");
objIE.document.writeln("</table>");
objIE.document.writeln("<p>");
objIE.document.writeln("<input type='submit' value='Submit' id='but0'>");
objIE.document.writeln("</form>");
objIE.document.writeln("</center>");
objIE.document.writeln("</body>");
objIE.document.writeln("</html>");
objIE.document.parentWindow.document.body.scroll="no";
objIE.document.parentWindow.document.body.style.borderStyle = "outset";
objIE.document.parentWindow.document.body.style.borderWidth = "3px";
objIE.document.getElementsByName("but0").onClick = PasswordBox_Submit;
objIE.document.getElementsByName("passwd").focus;
objIE.Visible = True;
objWShell.AppActivate(strIETitle);
blnPwdBoxWait = True;
try {
do {
WScript.Sleep(100);
if (objIE.Visible) {
blnPwdBoxWait = blnPwdBoxWait;
}
} while (blnPwdBoxWait);
} catch(err) {
blnPwdBoxWait = False;
}
strLoginID = objIE.document.GetElementsByName("userid").value;
strPassword = objIE.document.GetElementsByName("passwd").value;
strServer = objIE.document.GetElementsByName("server").Options(
objIE.document.GetElementsByName("server").selectedIndex).text;
if (strServer == "") {
alert("ABORTING: Radio button 'server' not readable!");
}
if (objIE.document.GetElementsByName("shell").sh.checked) {
strShell = "sh";
} else if (objIE.document.GetElementsByName("shell").csh.checked) {
strShell = "csh";
} else {
alert("ABORTING: Radio button 'shell' not readable!");
}
objIE.Visible = False;
objIE.Quit;
objIE = Nothing;
}
function PasswordBox_Submit() {
me.document.parentWindow.event.returnValue = False;
blnPwdBoxWait = False;
}
究竟你想用你的VBS/JS完成什麼?你在哪裏發送結果? – 2015-03-13 18:52:59
你應該學習JavaScript。你做什麼都行不通。這是隨機編程。 – 2015-03-13 19:11:20
該函數的目的是讓用戶在IE窗口中使用填充表單將值分配給四個文本變量(strLoginID,strPassword,strServer和strShell)。第一個設置了文本輸入字段,第二個設置了密碼字段,第三個設置了選擇字段,最後一個設置了無線電字段。這工作時,我可以與IE瀏覽器運行VBScript,而且我真的需要幫助。包含函數的程序使用這些值從我的Windows PC建立到Linux服務器(由strServer指定)的VNC會話,如果這有幫助的話。感謝您的迴應。 – Leslie 2015-03-16 15:56:11