WordPress+Visual Composer标签页出现getRelatedTab未定义错误求助
嘿,针对你遇到的这个问题——用Visual Composer 5.4.7搭配WordPress 4.9.6,添加VC标签页后出现Cannot read property 'getRelatedTab' of undefined错误,还导致主菜单下拉无法显示,我整理了几个靠谱的排查和修复方案,你可以挨个试试:
1. 先排查插件冲突
从错误栈来看,问题大概率和WordPress Popup插件的JS脚本有关:
- 先临时禁用这个Popup插件,刷新页面看看错误是不是消失了,菜单下拉能不能正常显示。如果搞定了,那就是两个插件的兼容性问题:
- 优先试试把
WordPress Popup更新到最新版本(如果有更新的话) - 要是更新没用,要么换个弹窗插件,要么给插件开发者提个兼容性bug
- 优先试试把
- 如果禁用Popup后问题还在,就逐个禁用其他非必需插件,看看是哪个插件在搞事情
2. 清理缓存+重新安装VC
- 先清掉WordPress缓存插件(如果有的话)、浏览器缓存,确保加载的是最新的VC脚本文件,有时候旧缓存会导致脚本加载异常
- 要是还不行,就备份好VC的设置,卸载VC后重新安装5.4.7版本,说不定是VC的脚本文件损坏了
3. 用自定义JS修复事件冲突
你可以在主题的functions.php里加一段自定义JS(或者用专门的自定义JS插件),来修正这个事件绑定的问题:
jQuery(document).ready(function($) { // 先移除VC标签页原来的冲突事件 $(document).off('change', '.vc-tabs'); // 重新绑定事件,确保vcTabs实例存在再调用方法 $(document).on('change', '.vc-tabs', function(e) { var tabInstance = $(this).data('vcTabs'); if (tabInstance) { tabInstance.getRelatedTab(e.target); } }); });
这段代码会避免在VC标签页实例还没初始化好的时候就调用getRelatedTab,从而解决undefined的错误。
4. 检查主题兼容性
- 临时切换到WordPress默认主题(比如Twenty Seventeen),看看问题还存在不。如果消失了,那就是你当前用的主题和VC标签页有兼容性问题,要么联系主题开发者修复,要么自己排查主题的JS文件有没有覆盖jQuery事件的代码
附上你提供的控制台错误信息,方便后续排查:
JQMIGRATE: Migrate is installed, version 1.4.1
vc-tabs.min.js?x71958&ver=5.0.1:1 Uncaught TypeError: Cannot read property 'getRelatedTab' of undefined
at HTMLDocument.changeHandler (vc-tabs.min.js?x71958&ver=5.0.1:1)
at HTMLDocument.dispatch (jquery.js?x71958&ver=1.12.4:3)
at HTMLDocument.r.handle (jquery.js?x71958&ver=1.12.4:3)
at Object.trigger (jquery.js?x71958&ver=1.12.4:3)
at Object.a.event.trigger (jquery-migrate.min.js?x71958&ver=1.4.1:2)
at HTMLDivElement. (jquery.js?x71958&ver=1.12.4:3)
at Function.each (jquery.js?x71958&ver=1.12.4:2)
at a.fn.init.each (jquery.js?x71958&ver=1.12.4:2)
at a.fn.init.trigger (jquery.js?x71958&ver=1.12.4:3)
at a.fn.init.t.fn.(/beta/shared-hosting/anonymous function) [as hide]
内容的提问来源于stack exchange,提问作者user9867960

