get_the_title()重复输出问题:无父页面时页面标题打印两次
排查页面标题重复打印的问题
嘿,我来帮你捋清楚这个问题!这种无父页面时标题打印两次的情况,大概率是你对父页面存在性的判断逻辑出了问题,结合前端常见的脚本场景,我给你拆解几个最可能的原因:
1. 错误判断了父页面的存在
很多新手会误以为顶层页面的window.parent是null或undefined,但实际上——哪怕是完全独立的页面,window.parent也会指向页面自身!
举个典型的错误写法例子:
// 错误逻辑:顶层页面的window.parent永远为真,若判断写反就会错误执行重复打印代码 if (!window.parent) { console.log(window.parent.document.title, document.title); } else { // 这个分支会被顶层页面触发,导致标题打印两次 console.log(document.title); console.log(document.title); }
正确的判断方式应该是检查当前页面是否就是顶层页面,也就是window.parent是否等于window:
// 正确逻辑:只有当父页面不是自身时,才判定为存在嵌套 if (window.parent !== window) { console.log(window.parent.document.title, document.title); } else { // 顶层页面,只打印一次标题 console.log(document.title); }
2. 代码被重复执行了
如果你的判断逻辑没问题,但还是出现重复打印,那要检查:
- 脚本是不是在页面里被引用了两次(比如HTML里写了两个
<script>标签加载同一个文件) - 有没有重复绑定事件监听(比如多次调用
window.onload或者addEventListener('load', ...)) - 是不是在循环、递归里不小心重复调用了打印语句
3. 特殊嵌套场景的误判
如果页面是嵌套在多层iframe里,你可能误把间接父页面当成了直接父页面,但这种情况一般不会导致标题重复打印,更多是打印内容不符合预期。不过也可以排查下:比如是不是用了window.top(顶层页面)代替了window.parent(直接父页面),导致逻辑混乱。
先从第一个原因入手检查,这是最常见的坑!
内容的提问来源于stack exchange,提问作者Limpuls
相关产品推荐
相关产品推荐

