MediaWiki:CharInsert.js
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
// START charInsert by WindPower // <pre><nowiki> function addCharacter(character) { var textarea = document.getElementById('wpTextbox1'); var scrollTop = textarea.scrollTop; var scrollLeft = textarea.scrollLeft; if (document.selection) { textarea.focus(); var sel = document.selection.createRange(); sel.moveStart ('character', -textarea.value.length); var strPos = sel.text.length; sel.text = character; sel = document.selection.createRange(); sel.moveStart('character', -textarea.value.length); sel.moveStart('character', strPos); sel.moveEnd('character', 0); sel.select(); } else if (textarea.selectionStart || textarea.selectionStart == '0') { var startPos = textarea.selectionStart; var endPos = textarea.selectionEnd; textarea.value = textarea.value.substring(0, startPos) + character + textarea.value.substr(endPos); textarea.selectionStart = startPos + character.length; textarea.selectionEnd = startPos + character.length; } else { textarea.value += character; try { textarea.selectionStart = textarea.value.length; textarea.selectionEnd = textarea.value.length; } catch(e) {} } textarea.focus(); textarea.scrollTop = scrollTop; textarea.scrollLeft = scrollLeft; } function insertCharacters(characters) { if(!document.getElementById('wpTextbox1')) return; var charsDiv = document.createElement('div'); charsDiv.setAttribute('id', 'wpCharInsert1'); document.getElementById('wpTextbox1').parentNode.insertBefore(charsDiv, document.getElementById('wpTextbox1').nextSibling); var a = []; var c, s, l; for(c in characters) { if(typeof(characters[c]) == typeof([])) { s = characters[c][0]; l = characters[c][1]; } else { s = characters[c]; l = s } if(!s) { a[c] = document.createElement('span'); a[c].setAttribute('class', 'wpCharInsertText'); a[c].appendChild(document.createTextNode(l)); } else { a[c] = document.createElement('a'); a[c].appendChild(document.createTextNode(l)); a[c].href = '#'; a[c].setAttribute('class', 'wpCharInsertLink'); a[c].setAttribute('character', s); a[c].addEventListener('click', function(){addCharacter(this.getAttribute('character')); this.blur(); return false;}, false); } charsDiv.appendChild(a[c]); } } function initCharInsert(){ // Modify the list below. // To put a custom label for the link, use ['Inserted text', 'Link label'] instead of a string. // Use '' (empty string) as inserted text to create a text label instead of a link. insertCharacters([ ['', 'Sign your name:'], ['~~~~', 'Insert signature'], ['', 'Tags:'], '{{cleanup}}', '{{stub}}' ]); } addOnloadHook(initCharInsert); // </nowiki></pre> // END charInsert