2016-11-07 6 views
0

인트라넷 사이트의 자동화를 위해 노력하고 있습니다. 우리는이 목적을 위해 자바 스크립트와 함께 HTA를 사용하고 있습니다. 브라우저에서 사이트를 여는 대신 HTA 자체를 사용하여 Iframe을 사용하고 있습니다 (브라우저 보안 설정으로 인해 아무 것도 할 수 없기 때문에). 그러나 우리는이 웹 페이지에 로그인 할 때마다 다음과 같은 오류 메시지가 나타납니다. "정의되지 않은 참조 또는 null 참조의 하위 '속성을 가져올 수 없습니다.' 아래 URL은 입니다. http : // *******.. * : 8888/cs/domainname/cache/PT_HNAV_JS_MIN_1.jsHTA 내부 IFrame 요소를 가져 오는 중에 오류가 발생했습니다.

더 구체적으로 말하면, 그것은 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 파일에있는 아이들의 첫 번째 occurance을 찾을 수있는 것은 다음과 같습니다 :

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++; } 
+0

오류가 발생하면 스크립트를 계속 실행할지 묻는 메시지가 표시됩니다. (예 또는 아니오) 두 옵션 중 하나를 클릭하자마자 사이트에 로그인됩니다. 그게 바로 내가 원하는, 오류를 minue. :-) –

+0

당신은 여전히 ​​같은 문제가 있습니까? 왜 당신은 [이전 질문] 삭제 했습니까 (http://stackoverflow.com/questions/40416105/how-can-i-access-elements-inside-the-iframe-in-an-hta-using-vbs-and- try-to-fill), 이제는 다시 똑같이 묻습니다. – Teemu

+0

안녕하세요, 이전 질문에서 요소에 액세스 할 수 없었습니다. 그러나, 약간의 변화 후, 나는 할 수 있었다. 따라서 이전 질문은 필요하지 않았습니다. 이 질문은 다른 오류를 지적합니다. 제발 이걸로 도와주세요 :-) –

답변

0

가 지적하는 x는-UA 호환 변경 : IE6/7 작업 및 그

은 MSDN에서 더 볼 오래전 동안 그러나, 그 HTA에 내 경험이다 IE 11은이 문제를 해결했습니다. 이전에는 IE9를 가리켰다.

0

하지 당신은 응용 프로그램이 왜 그랬는지 확인 = "아니오" iframe과 상위 hta 창에서 통신하고 ifta dom으로 작업 할 수있게하려면 application = "yes"로 설정해야합니다.

https://msdn.microsoft.com/en-us/library/ms536496(v=vs.85).aspx#Security

+0

감사합니다. sagie, 나는 Application = yes로 설정하고 navigable = yes로 유지하려고했습니다. 오류가 사라졌습니다.그러나 웹 페이지가 IFrame 대신 완전한 HTA에서 열리고 있습니다. 이걸 어떻게 버려야 하죠? IFrame에서 열어야하고 HTA의 다른 버튼을 사용하여 IFrame의 이벤트를 제어해야하기 때문입니다. –