2014-02-11 3 views
0

이 주제에 대한 게시물이 많이 있지만 그 중 대부분은 IE가 동적으로 name 속성을 설정하지 않았기 때문입니다.HTA의 iframe에 대한 IE 게시는 새 창을 엽니 다.

다른 문제가 있습니다. iframe (동적으로 생성 된 양식)을 target으로 게시합니다. 처음으로 잘 작동합니다. 그런 다음 두 번째 작업을 수행하고 IE는 양식 제출 결과로 새 창을 엽니 다. 나는 그것이 보안 문제와 관련이 있기 때문에 꽤 확신한다 : 만약 내가 간단한 HTML file (HTA 대신에)을 만들면 그것은 훌륭하게 작동한다. 또한 로컬로 작동하지 않는 동일한 파일 (http://local.host/test.hta)을 실행하면 작동이 좋아집니다.

무슨 일이 일어나고 있는지 또는 어떻게 해결할 수 있습니까? 슬프게도 기존 코드와 나는 HTA 또는 iframes 및 양식 제출을 피할 수 없습니다.

다음의 간단한 코드 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <HTA:APPLICATION 
     ID="oHTAGeneral_v5" 
     APPLICATIONNAME="TEST" 
     ICON='Img/icono.ico' 
     SCROLL="no" 
     SINGLEINSTANCE="yes" 
     SELECTION='yes' 
     NAVIGABLE='yes' 
     SHOWINTASKBAR='Yes' 
     WINDOWSTATE='normal' /> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.2.6.min.js"></script> 
     <script type="text/javascript"> 
      $(function() { 

       var url = "http://www.some-url.com/", 
        first = true; 

       $("#frame").unbind("load"); 
       $("#frame").load(function(){ 

        if (first) { 
         first = false; 
         $("#frame")[0].contentWindow.document.cookie = "testCookie=dummyValue"; 
         $("<form></form>") 
          .attr("target", "frame").attr("method", "POST").attr("action", url) 
          .css("display", "none") 
          .appendTo($(document.body)) 
          .append('<input type="hidden" name="dummy" value="dummy" />') 
          .submit(); 
         return; 
        } 

        // Other stuff 

       }); 

       $("<form></form>") 
        .attr("target", "frame").attr("method", "POST").attr("action", url) 
        .css("display", "none") 
        .appendTo($(document.body)) 
        .append('<input type="hidden" name="dummy" value="dummy" />') 
        .submit(); 
      }); 
     </script> 
    </head> 
    <body> 
     <iframe id="frame" name="frame" width="200" height="50"></iframe> 
    </body> 
</html> 

답변

1

당신은 iframe 태그 내에 application="yes" 속성을 사용하려고 할 수 있습니다. 상기 속성이없는 iframe은 HTA에서 안전하지 않은 것으로 간주되며 iframe과 기본 창의 모든 상호 작용이 차단됩니다.