完成将调用IE的密码框函数从VBScript转换为Javascript
Finish converting password box function that calls IE from VBScript to Javascript
几年来,我使用 VBScript 程序打开一个 Internet Explorer 窗口,提示我输入用户 ID、密码和其他几个变量。 然而,最近,我的公司强迫所有人使用IE11。 尽管我不懂Javascript,但我决定尝试通过将文件扩展名从.vbs更改为.js并逐个修复错误来转换程序。 我最终让程序运行而不会引发错误,它实际上运行 IE 并显示密码框窗口,但是当我单击"提交"按钮时它崩溃了。 我希望真正了解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;
}
也许最简单的解决方案是向页面添加一个元标记,以便它强制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 = "";
//Maybe you meant for this to be a while loop?
if ( strPassword == "" ) {
strPassword = PasswordBox ( "Password Box Demo, Version " + Version );
WScript.Sleep( 500 );
}
WScript.echo( "strLoginID: " + strLoginID + ", strPassword: " + strPassword +
", strServer: " + strServer + ", strShell: " + strShell );
objWShell = null;
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>" );
//Meta tag to force compatibility mode in IE.
//objIE.document.writeln( "<meta http-equiv='"X-UA-Compatible'" content='"IE=EmulateIE9'" />" );
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 id='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' value='sh' checked> sh/bash/ksh<br>" );
objIE.document.writeln( " <input " +
"type='radio' name='shell' value='csh'> csh/tcsh<br>" );
} else {
objIE.document.writeln( " <input " +
"type='radio' name='shell' value='sh'> sh/bash/ksh<br>" );
objIE.document.writeln( " <input " +
"type='radio' name='shell' value='csh' checked> csh/tcsh<br>" );
}
objIE.document.writeln( "</td></tr>" );
objIE.document.writeln( "</table>" );
objIE.document.writeln( "<p>" );
objIE.document.writeln( "<input type='button' value='Submit' id='but0' onclick='"submitted.value='DONE';'">" );
objIE.document.writeln( "<input type='hidden' id='submitted' value=''>" );
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.getElementById( "passwd" ).focus();
objIE.Visible = True;
objWShell.AppActivate( strIETitle );
blnPwdBoxWait = '';
try {
do {
WScript.Sleep( 100 );
if ( objIE.Visible ) {
blnPwdBoxWait = objIE.document.getElementById( "submitted" ).value;
}
} while ( blnPwdBoxWait=='' );
} catch( err ) {
WScript.Echo('ERROR: ' + err.message);
blnPwdBoxWait == 'DONE';
}
strLoginID = objIE.document.getElementById( "userid" ).value;
strPassword = objIE.document.getElementById( "passwd" ).value;
strServer = objIE.document.getElementById( "server" ).options( objIE.document.getElementById( "server" ).selectedIndex ).text;
if ( strServer == "" ) {
alert( "ABORTING: Radio button 'server' not readable!" );
}
strShell = objIE.document.querySelector('input[name="shell"]:checked').value;
objIE.Visible = False;
objIE.Quit();
objIE = null;
return strPassword;
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 从VBScript调用JavaScript函数
- 完成将调用IE的密码框函数从VBScript转换为Javascript
- 使用 VBScript 函数的阶乘
- 从VBscript中的javascript函数获取值
- 将VBScript VT_ARRAY|VT_U1 Variant函数参数转换为JavaScript
- 调用vbscript函数以在所有浏览器中的body onload上运行
- 从javascript或vbscript调用CryptProtectData函数
- 调用VBScript中的JS函数
- VBScript点击链接在一个网页表调用嵌入(?)Javascript函数
- 传递一个VBscript函数作为jQuery click()函数的参数
- 如何使用不同本地的vbscript的月份函数
- 如何从vbscript调用javascript函数
- 动态事件函数绑定在vbscript / javascript中不会发生