当表单以 html 为目标并在 IE11 中操作另一个 html 时,它最终会打开两个页面

When form target a html and action another html in IE11, it opens two pages at last

本文关键字:html 两个 目标 表单 IE11 另一个 操作      更新时间:2023-09-26

此问题仅在Windows8.1 Windows2012R2.In 中发生,没关系。


这是我第一次在stackoverflow上提问。如果我在这里做了什么粗鲁的事情,请原谅我:)

有三个html文件.a.html,b.html和test.html。在test.html中,有一个提交按钮。如果你点击这个按钮,它将首先执行一个名为"goOpeEvtURL"的js函数。在此函数中,它将打开一个窗口 (a.html)。test.html的形式具有属性名称操作,其值为"b.html",并且还有一个名为"trget"的属性,其值为"a.html"。

如果我们打开测试.html然后单击 [单击] 按钮,它将只弹出一个新窗口,显示"b 的结果!!

我在IE10和火狐中尝试过,结果是"b的结果!但是,当我运行此测试时.html在IE11中单击[单击]按钮,它会弹出两个窗口!一个显示"a的结果!!",另一个显示"b的结果!!"

我希望它只会在IE11中弹出一个窗口(显示"b的结果!!我怎么能舔呢?T_T


A.html →表单的目标值

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="X-UA-Compatible" CONTENT="IE=EmulateIE7">
<TITLE>a.html</TITLE>
<SCRIPT Language="JavaScript">
</SCRIPT>
</HEAD>
<BODY class="body_base">
<STRONG>Result of a!!</STRONG><BR>
<HTML>

b.html →表单的操作值

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="X-UA-Compatible" CONTENT="IE=EmulateIE7">
<TITLE>b.html</TITLE>
<SCRIPT Language="JavaScript">
</SCRIPT>
</HEAD>
<BODY class="body_base">
<STRONG>Result of b!!</STRONG><BR>

测试.html →其中包含表单的 HTML。

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="X-UA-Compatible" CONTENT="IE=EmulateIE7">
<TITLE>test</TITLE>
<SCRIPT Language="JavaScript">
function goOpeEvtURL(kind)
{
    SubmitFlag = true;
    OTHERWIN = window.open("a.html", "aaaaa","width=" + 300 + ",height="
        + 400 +         "menubar=no,toolbar=no,status=yes,scrollbars=yes,,resizable=yes,,top=200,left=200");
    return;
}
</SCRIPT>
</HEAD>
<BODY class="body_base">
<FORM METHOD="POST" ACTION="b.html" 
NAME="NODESECLET"  onReset='return false;' onSubmit="return SubmitFlag;" TARGET="aaaaa">
<INPUT TYPE="submit" NAME="Do_Corrective" VALUE="Click" onClick="goOpeEvtURL();return     true;" class="button_trevent">
<FORM>
<HTML>
这是

IE的错误。请看这个北极。http://support.microsoft.com/kb/2909974

总结

当与内置的管理员 Internet Explorer 11 一起使用时,您打开一个名为的新窗口,如 window.open 方法,则无法识别该窗口名称。因此,会出现以下现象。
如果在 window.open 方法中指定名为窗口,而不是已打开的窗口,则 URL 将显示在新选项卡或新窗口中
如果在链接或表单窗口的目标属性中指定命名,而不是已打开的窗口,则 URL 将显示在新选项卡或新窗口中

解决方法
1. 创建内置管理员
以外的新用户帐户2. 启用策略:[用户帐户控制:对内置管理员帐户使用管理员批准模式]

如果您希望禁止默认提交行为并且只打开一个新窗口,则希望 OnSubmit 方法返回 false

请记住,您的 target=a.html 属性会打开一个名为"a.html"的新窗口,但它不会打开导航到"a.html"的新窗口。