Javascript 如何使Topbar扩展与最新的MediaWiki配合使用?

Javascript 如何使Topbar扩展与最新的MediaWiki配合使用?,javascript,jquery,mediawiki,mediawiki-extensions,resource-loading,Javascript,Jquery,Mediawiki,Mediawiki Extensions,Resource Loading,我运行一个MediaWiki站点,该站点使用。我最近将安装从MediaWiki的主分支升级到了最新版本:版本1.28.0-alpha(91e56cc) 之后,顶栏扩展不再工作: 通常,根本不插入顶栏div 偶尔会出现topbar div,但链接不起作用 后一个问题可能是我的CSS的问题(我不知道),但间歇性的行为与我有关。因此,首要任务是确保topbar div至少每次都出现 这个扩展只是一个小javascript,应该在页面加载时运行,在顶部附近添加一块HTML()。确实如此 不幸的是,我

我运行一个MediaWiki站点,该站点使用。我最近将安装从MediaWiki的主分支升级到了最新版本:版本1.28.0-alpha(91e56cc)

之后,顶栏扩展不再工作:

  • 通常,根本不插入顶栏div
  • 偶尔会出现topbar div,但链接不起作用
后一个问题可能是我的CSS的问题(我不知道),但间歇性的行为与我有关。因此,首要任务是确保topbar div至少每次都出现

这个扩展只是一个小javascript,应该在页面加载时运行,在顶部附近添加一块HTML(
)。确实如此

不幸的是,我不是一个真正的web开发人员,所以即使是这个简单的例程也有点让我不知所措

以下是我所知道的:

  • 没有500个服务器错误,PHP也没有明显的问题
  • 在我调查的早期,开发人员控制台有时会抱怨
    未捕获的引用错误:jQuery没有定义
    ,但我现在无法再复制它了。研究可能是因为扩展没有使用新的ResourceLoader机制,所以我尝试(通过
    maintenance/ConvertExtensionRegistration.php
    ,然后在
    LocalSettings.php
    中使用
    wfLoadExtension('Topbar')
    ),但似乎没有任何区别
  • Topbar钩子似乎被调用,因为
    css/Topbar.css
    被添加到页面中。但是我不知道
    js/Topbar.js
    是否曾经运行过,如果是,会发生什么

那么:如何调试它呢?

您需要将代码转换为使用ResourceLoader-当前扩展使用OutputPage的addScriptFile()添加代码,并假设jQuery在运行时可用。从MediaWiki 1.26开始,所有内容都是异步加载的,因此这不起作用,因此需要将其转换为新系统

操作说明如下:

注二:

  • 自MediaWiki 1.25以来,扩展应该使用所谓的“”,而不是遵循上述手册,但这可能需要更多的工作和专业知识
  • 丑陋的黑客警告:您可以忽略所有这些,只需使用
    RLQ.push(function(){/*此处所有代码*/})将代码包装到JS文件中。这会将其全部推到ResourceLoader的队列中,因此它将在jQuery可用后加载。我不推荐这个,但是为了完整起见,在这里展示它
    
    后半部分恐怕是离题了。但是,如果您删除了该选项,您的问题的其余部分就很好了。@ArtOfCode Fair-deleted。非常感谢您花时间回答。我最终迁移到了另一个皮肤,它有自己的水平顶部菜单栏,由MediaWiki:Sidebar驱动(请参见),因此我修复顶部菜单栏扩展的需要消失了。所以,虽然我现在没有时间测试这个程序,但我接受了答案!也许它能帮助别人。