页面加载弹出unidentified提示框问题排查(关联菜单功能代码)
问题根源与解决办法
代码逻辑解析
先拆解下你提供的两段代码的核心逻辑:
第一段代码:
- 维护了一个
loadEvents数组,用来存储需要在页面初始化阶段执行的函数及其优先级(seq) addInitFunction(func)的作用是把传入的函数对象以默认优先级(seq=-1)加入到初始化队列中- 这里的关键是:它期望接收的是一个函数引用,而不是字符串
- 维护了一个
第二段代码:
- 你定义了
homeInit、menuFixup等一系列初始化函数,这部分逻辑没问题 - 但调用
addInitFunction时,你传入的是字符串(比如addInitFunction('homeInit')),而不是函数本身(addInitFunction(homeInit)) - 页面加载时,必然存在一段你没贴出来的代码,会遍历
loadEvents数组并执行每个项的func属性。当它尝试执行字符串'homeInit'时,JS引擎无法识别这个“函数”,就会抛出错误,最终触发那个显示“unidentified”的alert
- 你定义了
解决步骤
只需要把第二段代码中所有addInitFunction的参数从字符串改成函数引用即可,去掉引号:
修改前:
addInitFunction('homeInit'); addInitFunction('menuFixup'); addInitFunction('setWallp'); addInitFunction('tidyFunc'); addInitFunction('moveBasket'); addInitFunction('loginMenu');
修改后:
addInitFunction(homeInit); addInitFunction(menuFixup); addInitFunction(setWallp); addInitFunction(tidyFunc); addInitFunction(moveBasket); addInitFunction(loginMenu);
验证效果
这样修改后,loadEvents数组里存储的就是真正的函数对象了,页面初始化时能正确执行这些函数:
- 菜单相关的
menuFixup、loginMenu等功能会正常运行 - 不会再出现“unidentified”的alert提示
内容的提问来源于stack exchange,提问作者user9795198
相关产品推荐
相关产品推荐

