网站出现Uncaught TypeError: window.getWidth is not a function错误的修复求助
问题排查与修复方案
错误原因分析
window.getWidth未被定义:代码直接调用了全局对象window上的getWidth方法,但该方法要么从未声明,要么声明时机晚于JawallMenu.check方法的调用,或是声明时未挂载到window全局对象上。- 执行中断引发功能失效:该类型错误会直接中断
JawallMenu.check方法的后续逻辑,导致菜单相关交互代码无法正常执行,最终出现菜单失效问题。
修复方案
方案1:补全局函数定义
如果getWidth是项目预期存在的工具函数,在script.js开头或JawallMenu初始化前添加该函数的全局定义:
window.getWidth = function() { // 实现标准的窗口宽度获取逻辑 return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; };
方案2:替换为原生API逻辑
如果getWidth仅用于获取窗口宽度,直接在调用处替换为原生代码,消除对未定义函数的依赖:
找到script.js第137行左右的错误调用代码,将:
var width = window.getWidth();
替换为:
var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
方案3:调整脚本加载顺序
如果getWidth定义在其他脚本文件中,检查HTML中的脚本引用顺序,确保包含getWidth的脚本优先于script.js加载:
<!-- 先加载包含getWidth定义的脚本 --> <script src="path/to/your/width-utils.js"></script> <!-- 再加载script.js --> <script src="script.js"></script>
验证步骤
- 修复后刷新页面,打开开发者工具Console面板,确认不再出现
window.getWidth is not a function错误。 - 测试菜单的展开、收起等交互,验证功能是否恢复正常。
内容的提问来源于stack exchange,提问作者noojum
相关产品推荐
相关产品推荐

