LLWiki正在建设中,欢迎
加入我们
!
查看“MediaWiki:Gadget-autocomplete-core.js”的源代码
←
MediaWiki:Gadget-autocomplete-core.js
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
该页提供此wiki软件的界面文字,它已被保护以防止恶意修改。您可以点击右侧按钮在讨论页提出编辑请求,让管理人员代为编辑:
提出编辑请求
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
//<nowiki> $(function() { var editbox, prefix, api = new mw.Api(), autocomplete = false; const regexp1 = /\[\[((?:(?!(\[|]|\|)).)*)$/, regexp2 = /{{((?:(?!({|}|\||:|#)).)*)$/, regexp3 = /{{#invoke:((?:(?!({|}|\|)).)*)$/i, regexp4 = /{{#widget:((?:(?!({|}|\|)).)*)$/i; var getPrefix = function() { var position = editbox.prop('selectionEnd'), left = editbox.val().substring(0, position), result = null; if(result = left.match(regexp1)) { if( /^(.+)#/.test(result[1]) ) { var section = result[1].match(/^(.+)#(.*)/); return ['sec', section[1], section[2]]; } if( /^(.+):/.test(result[1]) ) { return ['*', result[1]]; } if( /^:/.test(result[1]) ) { return ['6|14', result[1]]; } return ['0', result[1]]; } if(result = left.match(regexp2)) { return ['10', result[1]]; } if(result = left.match(regexp3)) { return ['828', result[1]]; } if(result = left.match(regexp4)) { return ['274', result[1]]; } return null; }; var showHints = function() { //console.log('Autocompletion begins.'); autocomplete = true; if(prefix[1]) { updateHints(); } editbox.on('input', function() { prefix = getPrefix(); if(!prefix) { hideHints(); } else { setTimeout(function() { updateHints(); }, 500); } }); }; var hideHints = function() { //console.log('Autocompletion ends.'); autocomplete = false; editbox.off('input'); $('#autocompleteHints').remove(); }; var updateHints = function() { var hints; if( $('#autocompleteHints').length ) { hints = $('#autocompleteHints').eq(0); } else { hints = $('<div id="autocompleteHints" class="ui-widget-content">').insertAfter(editbox); hints.draggable(); hints.on('click', 'li', function(e) { var ele = $(e.target), position = editbox.prop('selectionEnd'), left = editbox.val().substring(0, position), right = editbox.val().substring(position); switch(prefix[0]) { case 'sec': left = left.replace(regexp1,'[[') + prefix[1] + '#' + ele.text() + ']]'; break; case '*': case '0': left = left.replace(regexp1,'[[') + ele.text() + ']]'; break; case '6|14': left = left.replace(regexp1,'[[:') + ele.text() + ']]'; break; case '10': left = left.replace(regexp2,'{{') + ele.text().substring(9) + '}}'; break; case '828': left = left.replace(regexp3,'{{#invoke') + ele.text().substring(2) + '}}'; break; case '274': left = left.replace(regexp4,'{{#') + ele.text() + '}}'; } editbox.val(left + right); editbox.prop('selectionStart', left.length); editbox.prop('selectionEnd', left.length); hideHints(); }); } if(!prefix[1]) { hints.html('<span class="error">' + wgUCS("请输入页面部分标题", "請輸入頁面部分標題") + '</span>'); return; } if(prefix[0] == 'sec') { api.get({action:'parse', page:prefix[1], prop:'sections', formatversion:2}) .then(function(data) { var section = data.parse.sections.map((ele) => ele.anchor), secHints = [], regexp = new RegExp('^' + prefix[2]); section.forEach(function(ele) { if(regexp.test(ele)) { secHints.push(ele); } }); if(secHints.length === 0) { hints.html('<span class="error">' + wgUCS("该页面没有对应章节", "該頁面沒有對應章節") + '</span>'); } else { hints.html('<ul><li>' + secHints.join('</li><li>') + '</li></ul>'); } }, function() { hints.html('<span class="error">' + wgUCS("没有对应页面", "沒有對應頁面") + '</span>'); } ); return; } api.get({action:'query', list:'prefixsearch', pssearch:prefix[1].replace(/^:/, ''), psnamespace:prefix[0], formatversion:2}) .then(function(data) { var titles = data.query.prefixsearch.map( (ele) => '<li>' + ele.title + '</li>' ); if(titles.length) { hints.html('<ul>' + titles.join('') + '</ul>'); } else { hints.html('<span class="error">' + wgUCS("没有对应页面", "沒有對應頁面") + '</span>'); } }); }; $('body').on('keydown', '#wpTextbox1, #Wikiplus-Quickedit', function(e) { editbox = $(this); if(e.keyCode == 9) { prefix = getPrefix(); e.preventDefault(); if(prefix && !autocomplete) { showHints(); } } if(e.keyCode == 27) { e.preventDefault(); if(autocomplete) { hideHints(); } } }); }); //</nowiki>
返回
MediaWiki:Gadget-autocomplete-core.js
。
导航菜单
个人工具
创建账号
登录
命名空间
系统消息
讨论
变体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
随机页面
最近更改
沙盒
互助客栈
方针与指引
帮助
工具
链入页面
相关更改
特殊页面
页面信息