在 HTA 中获取 IFrame 的元素时出错
Error while fetching elements of an IFrame inside HTA
我们正在努力实现 Intranet 站点的自动化。为此,我们将 HTA 与 java 脚本一起使用。我们没有在浏览器中打开站点,而是使用带有 HTA 本身的 Iframe(因为浏览器安全设置禁止我们做任何事情)。 Eare 能够登录该网站,但是,从那以后的每一步之后,我们都会收到此错误消息,显示 "Unable to get property 'children' of undefined or null reference."
在此下方它还给出了 URL :http://*********..*:8888/cs/domainname/cache/PT_HNAV_JS_MIN_1。 js
更具体地说,它是一个 peoplesoft 站点。有人可以阐明如何解决这个问题吗?
下面是 HTML 代码:
<html>
<head>
<HTA:APPLICATION
APPLICATIONNAME="HTA"
SYSMENU="YES"
>
<meta http-equiv="x-ua-compatible" content="ie=9">
<title>HTA</title>
<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='@@';
passwd.value='@@';
form.submit();
}
</script>
</head>
<body>
<form class="form" name="form">
<input class="links" type="button" value="Project Plan" onclick="Start();" />
</form>
<iframe application="no" src="http://****.**.****:8888/psp/sitename/?cmd=login&languageCd=ENG&" width="600" height="600" id="iframeid">
</body>
</html>
我可以在下面的相关 js 文件中找到 children 的第一次出现:
this.fakeBCReqWC = false;
var bchidden = 0;
if(eBC.childNodes.length == 0) bchidden=1;
this.bcScrollUl = ptUtil.id(pthNav.bcScrollId);
if (eBC.children[1])
var clickedURL = eBC.children[1].firstChild.href;
var nChildren = 0;
if (this.bcScrollUl)
nChildren = this.bcScrollUl.children.length;
var nIdx = 0;
if (this.fakeBCSetN) {
var isBCpath = false;
var fakechildindex = 0;
var i = 0;
while(nIdx < nChildren) {
var child = this.bcScrollUl.children[nIdx];
if(child.id && child.id.indexOf ("FAKE") != -1 && child.firstChild && child.firstChild.href == clickedURL) {
isBCpath = true; fakechildindex = nIdx; break; }
nIdx++; }
不确定你为什么申请="no"
您应该执行 application="yes" 以启用 iframe 和父 hta window 进行通信并允许您的 hta 与 iframe dom 一起工作。
然而,这是我在使用 IE6/7 时使用 HTA 的经验,那是很久以前的事了
在 msdn 上查看更多信息:
https://msdn.microsoft.com/en-us/library/ms536496(v=vs.85).aspx#Security
将 x-ua-compatible 更改为指向 IE 11 解决了该问题。早些时候它指向IE9。
我们正在努力实现 Intranet 站点的自动化。为此,我们将 HTA 与 java 脚本一起使用。我们没有在浏览器中打开站点,而是使用带有 HTA 本身的 Iframe(因为浏览器安全设置禁止我们做任何事情)。 Eare 能够登录该网站,但是,从那以后的每一步之后,我们都会收到此错误消息,显示 "Unable to get property 'children' of undefined or null reference." 在此下方它还给出了 URL :http://*********..*:8888/cs/domainname/cache/PT_HNAV_JS_MIN_1。 js
更具体地说,它是一个 peoplesoft 站点。有人可以阐明如何解决这个问题吗?
下面是 HTML 代码:
<html>
<head>
<HTA:APPLICATION
APPLICATIONNAME="HTA"
SYSMENU="YES"
>
<meta http-equiv="x-ua-compatible" content="ie=9">
<title>HTA</title>
<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='@@';
passwd.value='@@';
form.submit();
}
</script>
</head>
<body>
<form class="form" name="form">
<input class="links" type="button" value="Project Plan" onclick="Start();" />
</form>
<iframe application="no" src="http://****.**.****:8888/psp/sitename/?cmd=login&languageCd=ENG&" width="600" height="600" id="iframeid">
</body>
</html>
我可以在下面的相关 js 文件中找到 children 的第一次出现:
this.fakeBCReqWC = false;
var bchidden = 0;
if(eBC.childNodes.length == 0) bchidden=1;
this.bcScrollUl = ptUtil.id(pthNav.bcScrollId);
if (eBC.children[1])
var clickedURL = eBC.children[1].firstChild.href;
var nChildren = 0;
if (this.bcScrollUl)
nChildren = this.bcScrollUl.children.length;
var nIdx = 0;
if (this.fakeBCSetN) {
var isBCpath = false;
var fakechildindex = 0;
var i = 0;
while(nIdx < nChildren) {
var child = this.bcScrollUl.children[nIdx];
if(child.id && child.id.indexOf ("FAKE") != -1 && child.firstChild && child.firstChild.href == clickedURL) {
isBCpath = true; fakechildindex = nIdx; break; }
nIdx++; }
不确定你为什么申请="no" 您应该执行 application="yes" 以启用 iframe 和父 hta window 进行通信并允许您的 hta 与 iframe dom 一起工作。 然而,这是我在使用 IE6/7 时使用 HTA 的经验,那是很久以前的事了
在 msdn 上查看更多信息:
https://msdn.microsoft.com/en-us/library/ms536496(v=vs.85).aspx#Security
将 x-ua-compatible 更改为指向 IE 11 解决了该问题。早些时候它指向IE9。