6

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&nbsp;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>

私がしていることを明確にしましょう

  1. leftframe.htmlはテキストボックスを検証する必要があります
  2. 左フレームが処理されたら。親ウィンドウfile1.htmlに通知して、2番目のフレーム(topo1.htm)をロードできるようにする必要があります。

topo.htmが存在しないため、HTAアプリのロードページはその特定のフレームで見つかりませんでしたが、loadOtherFrameから関数getWindowsUserName()を呼び出すと変更されるはずです。loadOtherFrameは、tjscienceが示すように、leftframe.htmlファイルから呼び出されます。

HTAを実行すると、loadOtherFrameが呼び出されます(ボタンがleftframe.htmlをクリックする前に)

4

2 に答える 2

2

私はあなたframesetがまだ入っていないと思いますframetop.window.frame_name任意frameまたはtop.windowそれ自体から経由してすべてのフレームにアクセスできます。

form_in_psyncLink=top.window.psyncLink.document.getElementById('form_id');

編集

この外部ページが同じドメインにない場合、通常の方法でそのコンテンツにアクセスすることはできません。JavaScriptの同一生成元ポリシーの詳細をご覧ください。(AFAIK HTAはこの動作を変更しません。)

上記の私の例は、への参照を提供しますpsyncLink。当然、検証スクリプトでそれを使用して、psyncLinkデータを「貼り付ける」要素にアクセスします。(この場合、クロスドメインページのために不可能かもしれません)

于 2012-06-19T15:08:22.627 に答える
1

親ページにテキスト入力を渡すことを含むように編集します

テキストボックスが検証されると、フレームから親ページの関数を呼び出すことができます。

JS IN Leftframe.html

<script type="text/javascript">
    var validate = function () {
        // validate textbox input ...
        // call parent page function, passing the text from the input
        parent.loadOtherFrame(text);
    };
</script>

file1.htmlのJS

<script type="text/javascript">
    var loadOtherFrame = function (text) {
        // load other frame here ...
    };
</script>
于 2012-06-19T16:49:28.307 に答える