打开主菜单
首页
随机
最近更改
特殊页面
沙盒
互助客栈
方针与指引
帮助
页面信息
链入页面
相关更改
设置
关于LLWiki
免责声明
LLWiki
搜索
用户菜单
13.59.69.53
讨论
监视列表
贡献
登录
LLWiki正在建设中,欢迎
加入我们
!
查看“MediaWiki:Gadget-autocomplete-core.js”的源代码
←
MediaWiki:Gadget-autocomplete-core.js
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
该页提供此wiki软件的界面文字,它已被保护以防止恶意修改。您可以点击右侧按钮在讨论页提出编辑请求,让管理人员代为编辑:
提出编辑请求
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
$(function() { if(!['edit','submit'].includes( mw.config.get('wgAction') ) || mw.config.get('wgPageContentModel') != 'wikitext') { return; } mw.util.addCSS('.wikiEditor-ui-text { position:relative; } #autocompleteHints { display:inline-block; position:absolute; left:50%; top:0; cursor:move; padding:0.1em 0.3em; } #autocompleteHints ul { list-style:none; margin:0; } #autocompleteHints li { cursor:pointer; color:#0645ad; } #autocompleteHints li:hover { text-decoration:underline; }'); var editbox = $('#wpTextbox1'), 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]) ) { 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; var prefix = getPrefix(); if(prefix[1]) { updateHints(prefix); } editbox.on('input', function() { var prefix = getPrefix(); if(!prefix) { hideHints(); } else { setTimeout(function() { updateHints(prefix); }, 500); } }); }; var hideHints = function() { //console.log('Autocompletion ends.'); autocomplete = false; editbox.off('input'); $('#autocompleteHints').remove(); }; var updateHints = function(prefix) { 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); if(prefix[0] == '*' || prefix[0] == '0') { editbox.val(left.replace(regexp1,'[[') + ele.text() + ']]' + right); } if(prefix[0] == '6|14') { editbox.val(left.replace(regexp1,'[[:') + ele.text() + ']]' + right); } else if(prefix[0] == '10') { editbox.val(left.replace(regexp2,'{{') + ele.text().substring(9) + '}}' + right); } else if(prefix[0] == '828') { editbox.val(left.replace(regexp3,'{{#invoke') + ele.text().substring(2) + '}}' + right); } else if(prefix[0] == '274') { editbox.val(left.replace(regexp4,'{{#') + ele.text() + '}}' + right); } hideHints(); }); } if(!prefix[1]) { 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>'); } }); }; editbox.keydown(function(e) { if(e.keyCode == 9) { var prefix = getPrefix(); e.preventDefault(); if(prefix && !autocomplete) { showHints(); } } if(e.keyCode == 27) { e.preventDefault(); if(autocomplete) { hideHints(); } } }); });
返回
MediaWiki:Gadget-autocomplete-core.js
。