首页
随机
附近
登录
设置
关于陋室
免责声明
陋室
搜索
查看“︁MediaWiki:Gadget-SelectionCounter.js”︁的源代码
←
MediaWiki:Gadget-SelectionCounter.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于这些用户组的用户执行:
用户
、
自动确认用户
本页面提供本维基软件的界面文本,并受到保护以防止滥用。 要添加或更改所有维基的翻译,请使用MediaWiki的本地化项目
translatewiki.net
。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有网站访客。
您可以查看和复制此页面的源代码。
/* MediaWiki Gadget: SelectionCounter */ ( function () { 'use strict'; if ( window.SelectionCounterLoaded ) { return; } window.SelectionCounterLoaded = true; mw.loader.using( [ 'jquery', 'mediawiki.util' ] ).then( function () { var $counter; var rafId = 0; var hideTimer = 0; var lastRendered = ''; var lastShownAt = 0; var selecting = false; var canSegment = typeof Intl !== 'undefined' && typeof Intl.Segmenter === 'function'; var segmenter = canSegment ? new Intl.Segmenter( mw.config.get( 'wgUserLanguage' ) || 'zh-cn', { granularity: 'grapheme' } ) : null; function getMessage( count ) { var lang = ( mw.config.get( 'wgUserLanguage' ) || mw.config.get( 'wgContentLanguage' ) || 'zh-cn' ).toLowerCase(); return lang.indexOf( 'en' ) === 0 ? 'Selected ' + count + ' chars' : '已选 ' + count + ' 字'; } function getSelectionText() { var selection = window.getSelection && window.getSelection(); if ( !selection || selection.rangeCount === 0 || selection.isCollapsed ) { return ''; } return selection.toString(); } function countText( text ) { var compact = text.replace( /\s+/g, '' ); if ( !compact ) { return 0; } if ( segmenter ) { return Array.from( segmenter.segment( compact ) ).length; } return Array.from( compact ).length; } function hideCounter() { lastRendered = ''; $counter.attr( 'hidden', 'hidden' ).text( '' ); } function renderCounter( text ) { var count = countText( text ); var rendered; if ( count < 1 ) { hideCounter(); return; } rendered = getMessage( count ); if ( rendered !== lastRendered ) { $counter.text( rendered ); lastRendered = rendered; } lastShownAt = Date.now(); $counter.removeAttr( 'hidden' ); } function updateCounter() { var text; rafId = 0; text = getSelectionText(); if ( text ) { renderCounter( text ); return; } if ( !selecting && Date.now() - lastShownAt > 800 ) { hideCounter(); } } function scheduleUpdate() { if ( rafId ) { return; } rafId = window.requestAnimationFrame( updateCounter ); } function scheduleHide() { window.clearTimeout( hideTimer ); hideTimer = window.setTimeout( scheduleUpdate, 900 ); } $( function () { $counter = $( '#mw-selection-counter' ); if ( !$counter.length ) { $counter = $( '<div>' ) .attr( { id: 'mw-selection-counter', hidden: 'hidden', role: 'status', 'aria-live': 'polite', 'aria-atomic': 'true' } ) .addClass( 'mw-selection-counter' ) .appendTo( document.body ); } document.addEventListener( 'selectionchange', scheduleUpdate, { passive: true } ); document.addEventListener( 'pointerdown', function () { selecting = true; scheduleUpdate(); }, true ); document.addEventListener( 'pointermove', function () { if ( selecting ) { scheduleUpdate(); } }, { passive: true, capture: true } ); document.addEventListener( 'pointerup', function () { selecting = false; scheduleUpdate(); scheduleHide(); }, true ); document.addEventListener( 'keyup', function ( event ) { if ( event.key === 'Escape' ) { hideCounter(); return; } scheduleUpdate(); } ); window.addEventListener( 'blur', hideCounter ); } ); } ); }() );
返回
MediaWiki:Gadget-SelectionCounter.js
。