MediaWiki:Common.js
来自開源之海
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/* 核心修復:1.43 Source 模式全能補全監聽器 */
mw.hook('ve.activationComplete').add(function() {
var surface = ve.init.target.getSurface();
if (surface && surface.getMode() === 'source') {
// 定義觸發符號與對應指令的映射關係
var completionMap = {
'[[': 'link', // 連結補全
'{{': 'template', // 模板補全
'[[F': 'media', // 媒體/文件 (適配 [[File: 或 [[文件:)
'[[f': 'media'
};
surface.getView().$element.on('keyup', function(e) {
// 僅監聽關鍵的觸發鍵:[ 和 {
if (['[', '{'].includes(e.key) || [219, 221].includes(e.keyCode)) {
var surfaceModel = surface.getModel();
var range = surfaceModel.getSelection().getRange();
var doc = surfaceModel.getDocument();
// 獲取光標前的字符(取 3 位以兼容 [[F 這種情況)
var context = doc.data.getText(new ve.Range(range.end - 3, range.end));
// 遍歷映射表進行匹配
for (var key in completionMap) {
if (context.endsWith(key)) {
console.log("偵測到觸發符:" + key + ",執行指令:" + completionMap[key]);
surface.executeCommand(completionMap[key]);
break;
}
}
}
});
}
});