2016-11-17 2 views
1

私はHTAを持っていますが、これにはIframeがあります。私たちはイントラネットのウェブサイトを読み込んでいます。 HTAのボタンをクリックすると、いくつかのタスクが自動化されます。最初のステップはログインし、次のページが読み込まれるのを待ってから、次のオプションを実行することです。主な関心事は、次のページが完全にロードされたことを知って、ページに関連するコードを開始できることです。IFrame内のウェブページ(HTA内にある)の読み込みが完了したときを知る

これを達成する方法について、ある人が光を当てることができますか。ちょうど繰り返すために、IFrameはHTAの中にあります。以下は

私のコードです:

<html> 
<head> 
<HTA:APPLICATION 
    APPLICATIONNAME="HTA" 
    SYSMENU="YES" 
    NAVIGABLE="YES" 
> 
    <meta http-equiv="x-ua-compatible" content="ie=11"> 
    <title>HTA</title> 

<script type="text/javascript"> 
    window.resizeTo(900,700); 
</script> 

<script type="text/javascript" > 

function Start() { 
var iframePage = document.getElementById("iframeid").contentDocument; 
var userId = iframePage.getElementById("userid"); 
var passwd = iframePage.getElementById("pwd"); 
var form = iframePage.getElementById("login"); 
userId.value='aa'; 
passwd.value='bb'; 
form.submit(); 

var iframePages = document.getElementById("iframeid").contentDocument; 
    var targetContent = iframePages.getElementById  ("ptifrmtgtframe").contentDocument; 
    var runcntl = targetContent.getElementById("PRCSRUNCNTL_RUN_CNTL_ID"); 
    runcntl.value='test'; 

} 

function Show() { 
    document.getElementById("iframe").style.display = "block"; 
} 



</script> 

</head> 
<body> 
     <form class="form" name="form"> 

       <input class="links" type="button" value="Show PIA" onclick="Show();" /> 
       <input class="links" type="button" value="Login" onclick="Start();" /> 


     </form> 
     <br> 
     <div class="iframe" id="iframe" style="display:none"> 
     <iframe application="no" src="my URL" width="600" height="600" id="iframeid"> 
     </div> 

</body> 
</html> 

私がしたいこと:

var runcntl = targetContent.getElementById("PRCSRUNCNTL_RUN_CNTL_ID"); 
runcntl.value='test'; 

はiframe内のページのみ、関連することから、適切かつ完全をロードした後にのみ、実行する必要がありますフィールドが読み込まれます。そうしないと、エラーが発生します。

PSこれはPeopleSoftサイトです。

答えて

0

iframeがロードされたときのコードの簡単な例を次に示します。 iframeタグのonload属性を確認してください。おそらくあなたはあなたのHTAにこれを統合することができますか?

<head> 
 
    <script> 
 
    function frameLoaded() { 
 
    alert('frame loaded!'); 
 
    }; 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <iframe id="frame" src="https://en.wikipedia.org/wiki/HTML_element#Frames" onload="frameLoaded(this)" /> 
 
</body>

+0

こんにちは@Robin、実際にIFrameは一度だけ読み込まれ、それから別のページに移動します。私はJavaスクリプト側から何かを必要とします。例: 1)IFrameが読み込まれ、ログインページが表示されます 2)ボタンをクリックすると自動的にログインします 3)次に、次のページが正しく読み込まれるまで待ってから別のテキストボックスを使用してテキストボックスを埋めなければなりませんJS関数。 お勧めします。 :-) –

+1

@PrateekJaiswal異なるページに移動する場合は、実際に複数のページをiframeに読み込み、iframeのonloadイベントがメインページで表示されます。ページが変更されたときに、メインページで必要なオブジェクトへの参照をすべて再割り当てする必要があります。そうしないと、「アクセスが拒否されました」というエラーが発生します。 – Teemu

+0

こんにちは@テーム、はい、私は、メインページから別のページに移動する、別のページの異なるJavaスクリプトを実行する必要があります。そのため、対応するページが完全に読み込まれるまでJSの実行を停止する必要があります。私はここで助けてもらえますか?または私はいくつかの他のアプローチを使用する必要がありますか? –

0

ページへのアクセス権を持っている場合は、あなたが必要なJSをトリガするjavascriptのウィンドウ間通信を使用しています。子iframeは、親にJavaスクリプトをいつ実行するかを伝えることができます。

純粋なPeopleSoftのパースペクティブから、関連するアクション・フレームワーク・コンポーネント・イベントを使用して、カスタマイズすることなく好きなことをすることができます。

関連する問題