2012-10-19 5 views
0

iframe이있는 페이지가 있습니다. iframe 내에서 기본 페이지는 일부 자바 스크립트를 실행하여 하위 창을 열고 외부 서비스에 로그인 한 다음 해당 외부 서비스의 일부 콘텐츠를 iframe에 다시 표시합니다.Javascript 팝업 로그인 브라우저 간 문제

Chrome과 IE에서는 잘 작동하지만 Safari와 Firefox에서는 괜찮습니다. 이러한 브라우저에서 상위 창은 이제 사용자가 외부 서비스에 로그인하고 표시해야하는 정보 대신 "로그인하지 않음"메시지를 표시한다는 사실을 무시하는 것 같습니다.

다음은 내가하려는 일을위한 코드입니다.

HTML (메인 페이지) : 나는 일어날 수있는 뭔가를 기다리는 스크립트의 특정 측면을 지연하려고 여러 가지의 setTimeout 기능을 조정 시도

<html> 
<head> 
<script type="text/javascript"> 
window.onload = function() 
     { 
var code = 'WXYZ'; 
var login = http://www.externalsite.com/brief/html.asp?/cgi-bin/service?msg=0048&usr=username&pwd=pass'; 

//OPEN CHILD WINDOW AND LOGIN USING VARIABLES ABOVE, THEN CLOSE WINDOW 
childWindow=window.open(login,'','width=30,height=30,location=no'); 
var cmd = 'childWindow.close()'; 
setTimeout(cmd,2000); 

//REDIRECT THIS IFRAME TO BRIEFING INFORMATION 
var uri = 'http://www.externalsite.com/brief/html.asp?/cgi-bin/service?msg=0092&AID=NOSEND&MET=1&NTM=1&LOC='+code; 
self.location.href=uri; 
} 
</script> 
</head> 

<body> 
&nbsp; 
</body> 
</html> 

<iframe id="brief" name="brief" src="contents/somepage.php?var=WXYZ" width="962" height="600"> 
<p>Your browser does not support iframes.</p> 
</iframe> 

somepage.php 하지만 도움이되지 않습니다.

이 코드에 브라우저 간 문제가 있습니까?

감사

답변

1

setTimeout(cmd,2000); 2 초 동안 스크립트의 실행을 차단하지 않을; 오히려 약 2 초 후에 발사되는 이벤트를 설정합니다. 즉시 setTimeout에 전화 후, 스크립트의 나머지 부분은 실행됩니다 :

// This happens right away 
uri = 'http://www.externalsite.com/brief/html.asp?/cgi-bin/service?msg=0092&AID=NOSEND&MET=1&NTM=1&LOC='+code; 
self.location.href = uri; 

는 모든 브라우저에서 작동한다는 사실은 단지 운이 좋은 타이밍이다. 당신은 iframe이가, 후 팝업 닫히고를 새로 콜백에 해당 코드를 추가 할 경우 (당신은 필요하지 않으며 그런데, 당신의 타이머 핸들러에 대한 문자열을 사용해서는 안) :

setTimeout(function() { 
    childWindow.close(); 
    var uri = 'http://www.externalsite.com/brief/html.asp?/cgi-bin/service?msg=0092&AID=NOSEND&MET=1&NTM=1&LOC='+code; 
    self.location.href = uri; 
}, 2000); 

팝업의 내용이 2 초 내에로드되지 않으면이 솔루션조차도 작동하지 않습니다. 가장 좋은 해결책은로드 한 후 팝업을 닫는 것입니다. 그런 다음 닫을 때이를 감지하고 iframe을 다시로드 할 준비가되었음을 알 수 있습니다. 그러나 이것이 관리 권한이없는 제 3 자 사이트 인 경우 이와 같이 덜 이상적인 솔루션을 사용하여 어려움을 겪을 수 있습니다.

+0

예! 감사합니다. Jacob! 외부 사이트는 실제로 제한된 통제권을 가지고 있습니다. 그것은 이제 완벽하게 작동하는 것으로 보입니다. – Barbs

관련 문제