【问题标题】:IE post to iframe in HTA opens a new windowIE 发布到 HTA 中的 iframe 打开一个新窗口
【发布时间】:2014-02-11 16:34:34
【问题描述】:

关于这个话题的帖子很多,但大部分都是因为IE没有动态设置属性name

我遇到了另一个麻烦:我发布了一个表单(动态创建),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>

【问题讨论】:

    标签: javascript html iframe hta


    【解决方案1】:

    您可以尝试在iframe 标签中使用application="yes" 属性。没有该属性的 iframe 在 HTA 中被认为是不安全的,并且 iframe 与主窗口之间的所有交互都被阻止。

    【讨论】:

      猜你喜欢
      • 2015-12-05
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      相关资源
      最近更新 更多