HTML 链接无法在目标框架中打开

最近有人向我寻求有关一组 HTML 页面的帮助,但这些页面未能按预期工作。该设置由一个框架集组成,其中某个框架中显示的链接应该在其他框架中打开。这应该通过锚元素上的目标属性或包含链接的页面中具有目标属性的基本元素来完成。


问题是链接没有在所需的目标框架中打开,而是在不同的选项卡中打开。


经过一番分析,我发现这种行为是由 Javascript 变量“name”的存在引起的,该变量存在于最初加载到目标框架中的页面上。如果该变量的值与目标框架的名称不匹配,则链接将在新选项卡上打开。如果它与目标框架名称匹配,则链接将按预期在目标框架中打开。


这种情况在至少三种浏览器的最新版本中一致发生(尝试过 Firefox、Chrome 和 Edge)。


我想知道为什么会这样。


这是该问题的小型复制品(也可在此处获取),其中包含一个框架集、三个带有初始内容的框架和两个链接。第一个链接 ,target="two"在框架“二”中打开。但是第二个链接, with target="three",不会在框架“三”中打开,而是在新选项卡中打开。显然,这取决于该框架的初始内容 Three.html 中 Javascript 变量“name”的值。但为什么?


索引.html:


<html>

  <frameset rows="33%,33%,*">

    <frame name="one"   src="one.html">

    <frame name="two"   src="two.html">

    <frame name="three" src="three.html">

  </frameset>

</html>

一个.html:


<html>

  <body>

    frame "one"

    <br>

    <a target="two" href="content.html">show content (target="two")</a>

    <br>

    <a target="three" href="content.html">show content (target="three")</a>

  </body>

</html>

二.html:


<html>

  <body>

    frame "two"

    <script>

      <!--

      var name = "two";

      //-->

    </script>

  </body>

</html>

三.html:


<html>

  <body>

    frame "three"

    <script>

      <!--

      var name = "two";

      //-->

    </script>

  </body>

</html>

内容.html:


<html>

  <body>

    content

  </body>

</html>


慕村225694
浏览 103回答 2
2回答

繁花不似锦

原因是通过name在页面中设置变量,您将覆盖该Window.name变量。该Window.name变量是系统用来确定框架名称的变量。当您覆盖此值并更改它,然后尝试访问具有旧值的框架时,您将被重定向到新选项卡。

慕斯709654

当 HTML 文件以框架标记中指定的链接名称为目标时,不会在该命名框架中打开。问题是加载它的框架正在调用另一个框架来加载新的 html 文件,无法识别该名称,或者无法按照语法按顺序找到框架集中指定的命名框架。调用框架的命名没有错误。该链接会在调用 html 文档的自己的框架中自行打开。这意味着它在执行 _SELF 时在同一窗口框架中打开。调用框架及其 HTML 文件和主要的锚标记代码看不到我调用以加载所需 HTML 文件的窗口框架,并且无法识别我为调用框架指定的名称。如何解决......第一段问题。?我重申浏览器没有任何问题。我拥有最好的应用程序浏览器阵容。所有执行都可以在所有网页上正常工作。罗斯
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5