-//make sure edit summary does not exceed byte limit
-addOnloadHook(function () {
- var summary = document.getElementById( 'wpSummary' );
- if ( !summary ) {
- return;
- }
- summary.maxLength = 250; //L must be capitalized in length.
-
- checkSummary = function (e) {
- if (!e) e = window.event; //IE
-
- //first check to see if this is actually a character key
- // being pressed.
- //Based on key-event info from http://unixpapa.com/js/key.html
- //note === sign, if undefined, still could be a real key
-
- if (e.which === 0 || e.charCode === 0 || e.ctrlKey || e.altKey || e.metaKey) {
- return true; //a special key (backspace, etc) so don't interefere.
- }
-
- //This basically figures out how many bytes a utf-16 string (which is what js sees) will take in utf-8
- //by replacing a 2 byte character with 2 *'s, etc, and counting that.
- //Note, surogate (\uD800-\uDFFF) characters are counted as 2 bytes, since theres two of them
- //and the actual character takes 4 bytes in utf-8 (2*2=4). might not work perfectly in edge cases such as
- //such as illegal sequences, but that should never happen.
-
- len = summary.value.replace(/[\u0080-\u07FF\uD800-\uDFFF]/g, '**').replace(/[\u0800-\uD7FF\uE000-\uFFFF]/g, '***').length;
- //247 as this doesn't count character about to be inserted.
- if (len > 247) {
- if (e.preventDefault) e.preventDefault();
- e.returnValue = false; //IE
- return false;
- }
- };
-
- addHandler(summary, 'keypress', checkSummary);
-});
-