博客首页 > 其他内容

子页面中全局name改变导致a标签target属性失效问题的解决办法

2025/5/4 15:05:32

先丢两个示例页面上来,test1.html页面

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>test</title>
</head>
<body>
    <a href="test2.html" target="iframe">test</a>
    <iframe src="test2.html" frameborder="0" name="iframe" id="iframe"></iframe>
</body>
</html>

  

test2.html页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>test2</title>
</head>
<body>
    <button id="button">变化name</button>
    <script>
    var button = document.getElementById("button");
    button.onclick = function(){
        name = 123;
    }
    </script>
</body>
</html>

  今天后端人员遇到这么一个问题,在子页面中改变name值以后,父页面中的a标签的target将会失效,不会再指定的iframe中加载页面。

  出现该问题的原因是window对象中有name属性,a标签打开页面的时候会去查找iframe中页面的window.name从而确定在哪个iframe中打开指定页面。在子页面中改变了name值,导致无法找到iframe,所以会在新的页面中加载。要避免该问题只要注意变量在使用前先进行声明即可。

test2.html(修改后)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>test2</title>
</head>
<body>
    <button id="button">变化name</button>
    <script>
    var button = document.getElementById("button");
    button.onclick = function(){
        var name = 123;
    }
    </script>
</body>
</html>

以上介绍是从网上找到的,也是正确的方法,但我遇到的问题是子页面的JS竟然加密了,我没办法修改子页面的window.name

我尝试修改父框架的name,发现改了什么都没用,子页面应该使用了自动获取父页面name的办法

讨厌的事情果然很讨厌!

最后在子页面底部,也就是加密内容的最后面,单独加上了

<script>window.name="main"</script>

竟然生效了,target不再失效,衔接不会再跳出frame了!

子页面也能正常使用,那子页面定义的window.name除了制造了麻烦,还能干嘛用呢?

image.png

推荐建站

适合外贸SOHO,中小创业公司的外贸网站建设,包含域名空间模板邮箱维护

网站必备

谷歌强推HTTPS,未安装SSL证书会被标记"不安全",影响搜索排名,降低访客信任度。安装后地址栏显示安全锁,提升企业形象与转化率 [详细介绍]

限制同行

有效防止国内同行查看您的外贸网站,保护产品价格和客户信息,海外客户正常访问,提升竞争优势 [详细介绍]

买2年送2年

专业外贸企业邮箱,海外收发稳定不掉线,到达率高达99%,退信率低,无限容量,支持多终端同步 [详细介绍]

完全免费

横幅制作:快速生成网站横幅广告图;logo制作:在线设计企业标志;图片压缩:减小体积加快加载;ICO图标:生成网站favicon;海关数据:免费查询全球提单记录

稳定提速

解决全球各地打开慢、打不开的问题,采用多节点CDN加速,让海外客户秒开网站,提升用户体验和询盘转化 [效果对比]

找客户神器

一键挖掘海外采购商邮箱、网址、社交媒体账号,精准定位目标客户,大幅提升开发效率,外贸业务员必备神器 [详细介绍]

谷歌SEO

谷歌关键词SEO优化排名,让产品关键词登上谷歌首页,获取精准流量和高质量询盘,提升品牌曝光度