最近有人向我寻求有关一组 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>
繁花不似锦
慕斯709654
相关分类