如果你看到本段文字,说明该页面未正常加载全局JS,部分功能无法使用,请点击 刷新 重新加载页面。
如果打开页面显示缩略图创建出错,请点击刷新或页面右上WIKI功能中的刷新按钮清除页面缓存并刷新,如果还有问题,请多尝试几次。
全站通知:
用户:1541127/关于ResourceLoader的JS加载问题
刷
历
编
跳到导航
跳到搜索
问题介绍
- bwiki的框架中有时会在页面中使用ResourceLoader模板加载JS脚本,碧蓝航线wiki之前长期存在JS加载不正确的问题,如筛选表按钮无效,舰娘页面立绘无法切换,经过检查发现是ResourceLoader的实现有Bug导致的。
- ResourceLoader的实现原理是在页面中添加一个不显示的div,设置div的属性,由MediaWiki:Common.js中的代码查找对应的div,使用MediaWiki的JS函数加载脚本,但是Common.js有时会在页面DOM加载完成前就开始运行,导致检测div时div还未加载完成,因此对应的JS未正常加载。
- 此问题在页面内容较多时尤为明显,如舰娘定位筛选页面包含大量文本和数据,筛选表使用的CardSelectTr.js脚本未加载时按钮就会失效。
解决方式
- 解决方式是将Common.js的代码中ResourceLoader的部分改到DOM加载完成后再运行,具体代码可以参照碧蓝航线wikiMediaWiki:Common.js。
- 虽然上述问题本人已经明确原因,给出了解决方案并上报给了bwiki,但是bwiki的主要站点包括原神wiki、明日方舟wiki等仍然在使用旧的实现,不知原因为何。