2014-02-11 103 views
0

有很多關於此主題的帖子,但其中大多數都是因爲IE沒有動態設置屬性nameIE發佈到HTA中的iframe會打開一個新窗口

我有一個不同的麻煩:我張貼表格(動態創建)iframetarget。它第一次很好。然後,我再次執行此操作,IE會打開一個窗體,並提交表單提交的結果。我很確定它與安全問題有關,因爲:如果我創建了一個簡單的HTML file(而不是HTA),它的效果很好。另外,如果我運行的文件不在本地工作(http://local.host/test.hta),它的效果很好。

任何線索怎麼回事或我該如何解決?可悲的是,它的遺留代碼,我不能避免使用HTAiframes和表單提交。

這裏其簡單的代碼:

<!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和主窗口之間的所有交互都被阻止。

相關問題