如何解决WordPress网站PageSpeed Insights提示的控制台浏览器错误?
问题
我的WordPress网站在PageSpeed Insights中显示错误提示:
Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. Learn more
具体错误为:TypeError: Cannot read properties of null (reading 'parentNode'),错误来源是一段base64编码的JS代码:
data:text/javascript;base64,dmFyIGRvd25sb2FkQnV0dG9uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb3dubG9hZCIpO3ZhciBjb3VudGVyPTQwO3ZhciBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTtuZXdFbGVtZW50LmlubmVySFRNTD0iWW91IGNhbiBkb3dubG9hZCB0aGUgZmlsZSBpbiA0MCBzZWNvbmRzLiI7dmFyIGlkO2Rvd25sb2FkQnV0dG9uLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld0VsZW1lbnQsZG93bmxvYWRCdXR0b24pO2lkPXNldEludGVydmFsKGZ1bmN0aW9uKCl7Y291bnRlci0tO2lmKGNvdW50ZXI8MCl7bmV3RWxlbWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChkb3dubG9hZEJ1dHRvbixuZXdFbGVtZW50KTtjbGVhckludGVydmFsKGlkKX1lbHNle25ld0VsZW1lbnQuaW5uZXJIVE1MPSJKVVNUIFdBSVQgIitjb3VudGVyLnRvU3RyaW5nKCkrIiBTRUNPTkRTLiIrIllPVVIgQkdNSSAyLjMgRE9XTkxPQUQgTElOSyBJUyBHRU5FUkFUSU5HIn19LDEwMDAp:1:200
我用Chrome开发者工具检查页面时发现了两个错误,但完全搞不懂问题根源,也不知道该怎么修复。
问题分析
先把这段base64编码的JS解码,得到原始逻辑:
var downloadButton=document.getElementById("download");var counter=40;var newElement=document.createElement("p");newElement.innerHTML="You can download the file in 40 seconds.";var id;downloadButton.parentNode.replaceChild(newElement,downloadButton);id=setInterval(function(){counter--;if(counter<0){newElement.parentNode.replaceChild(downloadButton,newElement);clearInterval(id)}else{newElement.innerHTML="JUST WAIT "+counter.toString()+" SECONDS. "+"YOUR BGMI 2.3 DOWNLOAD LINK IS GENERATING"}},1000)
这段代码是实现下载按钮倒计时替换的功能,但报错TypeError: Cannot read properties of null (reading 'parentNode')的原因是:代码执行时,页面中找不到id为download的元素,导致downloadButton变量为null,后续调用downloadButton.parentNode自然会触发错误。
修复步骤
- 定位代码来源:在WordPress后台排查这段JS的出处——可能是下载类插件、主题自定义脚本、页面/文章中的自定义HTML代码,或者是通过functions.php注入的脚本。
- 添加存在性判断:修改这段JS,先检查目标元素是否存在,再执行后续逻辑,避免报错:
var downloadButton = document.getElementById("download"); // 先判断元素是否存在,再执行后续逻辑 if (downloadButton) { var counter = 40; var newElement = document.createElement("p"); newElement.innerHTML = "You can download the file in 40 seconds."; var id; downloadButton.parentNode.replaceChild(newElement, downloadButton); id = setInterval(function() { counter--; if (counter < 0) { newElement.parentNode.replaceChild(downloadButton, newElement); clearInterval(id); } else { newElement.innerHTML = "JUST WAIT " + counter.toString() + " SECONDS. " + "YOUR BGMI 2.3 DOWNLOAD LINK IS GENERATING"; } }, 1000); } - 根据来源处理:
- 若代码来自插件:检查插件是否有更新,更新后看问题是否解决;如果是小众插件,直接替换插件中的对应脚本(记得备份),或者联系开发者反馈问题。
- 若代码是自己添加的:直接将原代码替换为上面的修改版。
- 若代码来自主题:建议使用子主题覆盖这段脚本,避免主题更新后修改丢失;如果没有子主题,修改主题文件前务必做好备份。
- 验证修复结果:修改完成后,重新运行PageSpeed Insights,检查控制台错误是否消失。
内容的提问来源于stack exchange,提问作者VALORANT MOBILE GAMER
相关产品推荐
相关产品推荐

