知道IFrame(位于HTA中)内的网页何时完成加载

时间:2016-11-17 10:47:12

标签: javascript html iframe hta peoplesoft

我有一个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网站。

3 个答案:

答案 0 :(得分:0)

这是一个在加载iframe时调用代码的简单示例。查看onload标记的iframe属性。也许你可以把它整合到你的HTA中?

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果您有权访问该页面,请使用javascript窗口间通信来触发您需要的JS。子iframe可以告诉父母何时运行java脚本。

从纯粹的PeopleSoft透视图中,您可以使用相关的动作框架组件事件来执行您喜欢的操作,而无需自定义。

答案 2 :(得分:0)

我认为您可以检查代码以获取相关内容作为参考。如OpenRCService和onRCService。在PT_COMMON中,还加载了与RC函数相关的showModalDialog方法,该方法具有检测iframe的逻辑。