file1.html
<html>
<head>
<title>AIDS (Automated ID System)</title>
<HTA:APPLICATION
id="frames"
border="thin"
caption="yes"
icon="http://www.google.com/favicon.ico"
showintaskbar="yes"
singleinstance="yes"
sysmenu="yes"
navigable="yes"
contextmenu="no"
innerborder="no"
scroll="auto"
scrollflat="yes"
selection="yes"
windowstate="normal" />
<script language="javascript" type="text/javascript">
function pausecomp(millis)
{
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);
}
function getWindowsUserName()
{
var WinNetwork = new ActiveXObject("WScript.Network");
var urlToSite = createCustomURL(WinNetwork.UserName);
var frame = document.getElementById("psyncLink");
frame.onload = function() {
frame.onload = null;
if (requestingPassword()) {
//alert("password button screen");
passwordButtonScreen();
} else {
alert("direct password required");
}
}
frame.src = urlToSite;
}
function requestingPassword()
{
var btn = window.frames[1].document.getElementsByName("SUBMIT-password.pss");
if (btn.length == 0) {
return false;
} else {
return true;
}
}
function passwordButtonScreen()
{
var btn = window.frames[1].document.getElementsByName("SUBMIT-password.pss");
btn[0].click();
}
function createCustomURL(userName)
{
var customURL = "http://localhost/nph-psf.exe?HOSTID=AD&ALIAS=" + userName;
return customURL;
}
function Sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
function whichScreen() {
var btn = window.frames[1].document.getElementsByName("SUBMIT-password.pss");
if (btn.length == 0) {
alert("no button!");
// User is at password screen
var textField = window.frames[1].document.getElementsByName("_MYPW");
textField[0].text = "";
return;
} else {
btn[0].click();
WaitSeconds(5);
var textField = window.frames[1].document.getElementsByName("_MYPW");
textField[0].value = "ios12sdk";
btn = window.frames[1].document.getElementsByName("SUBMIT-VERIFY");
btn[0].click();
}
}
var loadOtherFrame = function (text) {
getWindowsUserName();
alert(text);
};
</script>
</head>
<frameset cols="300px, *">
<frame src="leftframe.html" name="topo" id="topo" application="yes" />
<frame src="topo1.htm" name="psyncLink" id="psyncLink" application="yes" />
</frameset>
</html>
leftframe.html
<html>
<head>
<title>AIDS Assistant</title>
</head>
<script language="javascript">
function checkPassword() {
var validString = /^[a-z](?=[a-z]*[0-9])[a-z0-9]{0,6}[a-z]$/;
if (validString.test(document.getElementById("newPassword").value)) {
alert("The password is valid");
var validate = function () {
// validate textbox input ...
// call parent page function
parent.loadOtherFrame(document.getElementById("newPassword").value);
};
} else {
alert("The new password does NOT meet the requirements. Please try again.");
}
}
</script>
<body>
<table width="300px">
<tr>
<td>Type Your Old Password</td>
<td><input id="oldPassword" type="text" maxlength="8" /></td>
</tr>
<tr>
<td>Please type your new password</td>
<td><input id="newPassword" type="text" maxlength="8" min="8" /></td>
</tr>
<tr>
<td colspan="2"><input id="checkOldPassword" type="button" title="Check New Password" value="Check New Password" onclick="checkPassword()" /></td>
</tr>
</table>
</body>
</html>
私がしていることを明確にしましょう
- leftframe.htmlはテキストボックスを検証する必要があります
- 左フレームが処理されたら。親ウィンドウfile1.htmlに通知して、2番目のフレーム(topo1.htm)をロードできるようにする必要があります。
topo.htmが存在しないため、HTAアプリのロードページはその特定のフレームで見つかりませんでしたが、loadOtherFrameから関数getWindowsUserName()を呼び出すと変更されるはずです。loadOtherFrameは、tjscienceが示すように、leftframe.htmlファイルから呼び出されます。
HTAを実行すると、loadOtherFrameが呼び出されます(ボタンがleftframe.htmlをクリックする前に)