gpt4 book ai didi

javascript - 如何使 Topbar 扩展与最新的 MediaWiki 兼容?

转载 作者:行者123 更新时间:2023-11-27 22:57:54 25 4
gpt4 key购买 nike

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

此后,顶栏扩展不再起作用:

  • 通常,顶栏 div 根本不会插入。
  • 偶尔会出现顶栏 div,但链接不起作用。

后一个问题可能是我的CSS有问题(我不知道),但间歇性的行为让我担心。因此,首要任务是确保顶部栏 div 至少每次都会出现。

此扩展只是一个小型 JavaScript,应该在页面加载时运行,以在顶部附近添加一 block HTML ( <div id="mw-writh-topbar" ...> )。确实如此using a jQuery function .

不幸的是,我并不是一个真正的网络开发人员,所以即使这个简单的例程也有点超出我的理解范围。

这是我所知道的:

  • 不存在 500 服务器错误,PHP 不存在明显问题。
  • 在我调查的早期某个时刻,开发者控制台有时会提示 Uncaught ReferenceError: jQuery is not defined ,但我现在无法再重现它了。研究vaguely suggested可能是因为扩展没有使用新的ResourceLoader机制,所以我尝试 migrate Topbar to use the ResourceLoader mechanism (通过 maintenance/convertExtensionToRegistration.php ,然后 wfLoadExtension('Topbar') 中的 LocalSettings.php )但它似乎没有任何区别。
  • 似乎调用了 Topbar Hook ,因为 css/Topbar.css被添加到页面。但我不知道是否 js/Topbar.js曾经运行过,如果运行过,会发生什么。

那么:我该如何调试呢?

最佳答案

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

执行此操作的说明如下:

两个注意事项:

  1. 自 MediaWiki 1.25 起,扩展程序应该使用所谓的“extension registration”,而不是遵循上述手册,但这可能需要更多的工作和专业知识。
  2. 丑陋的黑客警告:您可以忽略所有这些,只需使用 RLQ.push( function(){ /* All of the code here */ } ); 将代码包装在 JS 文件中。这会将其全部插入 ResourceLoader 的队列中,因此它将在 jQuery 可用后加载。我不推荐这样做,但为了完整起见,在这里显示它。

关于javascript - 如何使 Topbar 扩展与最新的 MediaWiki 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37423269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com