【问题标题】:When form target a html and action another html in IE11, it opens two pages at last当表单在IE11中以一个html为目标并操作另一个html时,它最后打开了两个页面
【发布时间】:2013-12-24 01:14:39
【问题描述】:

此问题仅在Windows2012R2出现,在Windows8.1下正常。


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

共有三个html文件.a.html、b.html和test.html。 在test.html中,有一个from里面有一个提交按钮。如果你点击这个按钮,它会首先执行一个名为“goOpeEvtURL”的js函数。在这个函数中,它会打开一个窗口(a.html)。 test.html的形式,有一个属性名action,其值为“b.html”,还有一个名为“trget”的属性,其值为“a.html”。

如果我们打开test.html并点击[点击]按钮,它只会弹出一个新窗口,显示“b的结果!!”

我在 IE10 和 firefox 中试过,结果是 "Result of b!!" 但是,当我在 IE11 中运行这个 test.html 并单击 [单击] 按钮时,它会弹出两个窗口! 一个显示“结果!!”另一个显示“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>

test.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>

【问题讨论】:

  • “请点击 test.html 查看结果。” – 点击您的代码,没有任何反应。说真的:如果你想让人们尝试你的代码,那么在这里提供一个唯一的例子——不要指望每个阅读你的问题的人都复制和粘贴只是为了看看你的问题可能是什么。
  • CBroe,非常感谢。:) 我会尝试修改这个问题。
  • CBroe,我很抱歉。我只是在 test.html 中犯了一个错误。现在我已经修改了它。
  • 离题:您似乎错过了 HTML 代码顶部的 DOCTYPE。您应该始终包含有效的文档类型,以确保页面不会进入怪癖模式。
  • 谢谢你的建议。

标签: javascript html internet-explorer-11


【解决方案1】:

那是 ie 的错误。 请看这篇文章。 http://support.microsoft.com/kb/2909974

总结

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

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

【讨论】:

  • 请不要发布仅链接的答案。尝试在您的答案中总结链接的内容,以便如果链接断开,答案将是有效的。此外,链接现在已断开
  • 这种回答在这个社区里都不是很受欢迎,如果你不改进它可能会被删除。但是,除此之外,您是否阅读过链接无效?不存在。
  • 我测试过了。链接有效。
  • 编辑您的答案,而不是将其作为评论发布。您的答案下方有“编辑”按钮。而且链接对我来说已经坏了,也许只是我=/
  • +1 现在回答很好。该 URL 对我不起作用。您可以删除不需要的 cmets,例如回答的那些。
【解决方案2】:

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

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

【讨论】:

  • 非常感谢您回答我的问题。很抱歉我在 test.html 中犯了一个错误。这不是 [target=a.html],而是 TARGET="aaaaa"。而且我发现这个问题只发生在Windows2012R2中。在windows8.1中是可以的。但是 IE11 的 VL 在这两个操作系统中是一样的。
猜你喜欢
  • 2014-08-18
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 2020-06-27
  • 2011-11-02
  • 1970-01-01
相关资源
最近更新 更多