编辑:wp-emoji.js
/** * wp-emoji.js is used to replace emoji with images in browsers when the browser * doesn't support emoji natively. * * @output wp-includes/js/wp-emoji.js */ ( function( window, settings ) { /** * Replaces emoji with images when browsers don't support emoji. * * @since 4.2.0 * @access private * * @class * * @see Twitter Emoji library * @link https://github.com/twitter/twemoji * * @return {Object} The wpEmoji parse and test functions. */ function wpEmoji() { var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, // Compression and maintain local scope. document = window.document, // Private. twemoji, timer, loaded = false, count = 0, ie11 = window.navigator.userAgent.indexOf( 'Trident/7.0' ) > 0; /** * Detect if the browser supports SVG. * * @since 4.6.0 * @private * * @see Modernizr * @link https://github.com/Modernizr/Modernizr/blob/master/feature-detects/svg/asimg.js * * @return {boolean} True if the browser supports svg, false if not. */ function browserSupportsSvgAsImage() { if ( !! document.implementation.hasFeature ) { return document.implementation.hasFeature( 'http://www.w3.org/TR/SVG11/feature#Image', '1.1' ); } // document.implementation.hasFeature is deprecated. It can be presumed // if future browsers remove it, the browser will support SVGs as images. return true; } /** * Runs when the document load event is fired, so we can do our first parse of * the page. * * Listens to all the DOM mutations and checks for added nodes that contain * emoji characters and replaces those with twitter emoji images. * * @since 4.2.0 * @private */ function load() { if ( loaded ) { return; } // Ensure twemoji is available on the global window before proceeding. if ( typeof window.twemoji === 'undefined' ) { // Break if waiting for longer than 30 seconds. if ( count > 600 ) { return; } // Still waiting. window.clearTimeout( timer ); timer = window.setTimeout( load, 50 ); count++; return; } twemoji = window.twemoji; loaded = true; // Initialize the mutation observer, which checks all added nodes for // replaceable emoji characters. if ( MutationObserver ) { new MutationObserver( function( mutationRecords ) { var i = mutationRecords.length, addedNodes, removedNodes, ii, node; while ( i-- ) { addedNodes = mutationRecords[ i ].addedNodes; removedNodes = mutationRecords[ i ].removedNodes; ii = addedNodes.length; /* * Checks if an image has been replaced by a text element * with the same text as the alternate description of the replaced image. * (presumably because the image could not be loaded). * If it is, do absolutely nothing. * * Node type 3 is a TEXT_NODE. * * @link https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType */ if ( ii === 1 && removedNodes.length === 1 && addedNodes[0].nodeType === 3 && removedNodes[0].nodeName === 'IMG' && addedNodes[0].data === removedNodes[0].alt && 'load-failed' === removedNodes[0].getAttribute( 'data-error' ) ) { return; } // Loop through all the added nodes. while ( ii-- ) { node = addedNodes[ ii ]; // Node type 3 is a TEXT_NODE. if ( node.nodeType === 3 ) { if ( ! node.parentNode ) { continue; } if ( ie11 ) { /* * IE 11's implementation of MutationObserver is buggy. * It unnecessarily splits text nodes when it encounters a HTML * template interpolation symbol ( "{{", for example ). So, we * join the text nodes back together as a work-around. * * Node type 3 is a TEXT_NODE. */ while( node.nextSibling && 3 === node.nextSibling.nodeType ) { node.nodeValue = node.nodeValue + node.nextSibling.nodeValue; node.parentNode.removeChild( node.nextSibling ); } } node = node.parentNode; } if ( test( node.textContent ) ) { parse( node ); } } } } ).observe( document.body, { childList: true, subtree: true } ); } parse( document.body ); } /** * Tests if a text string contains emoji characters. * * @since 4.3.0 * * @memberOf wp.emoji * * @param {string} text The string to test. * * @return {boolean} Whether the string contains emoji characters. */ function test( text ) { // Single char. U+20E3 to detect keycaps. U+00A9 "copyright sign" and U+00AE "registered sign" not included. var single = /[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/, // Surrogate pair range. Only tests for the second half. pair = /[\uDC00-\uDFFF]/; if ( text ) { return pair.test( text ) || single.test( text ); } return false; } /** * Parses any emoji characters into Twemoji images. * * - When passed an element the emoji characters are replaced inline. * - When passed a string the emoji characters are replaced and the result is * returned. * * @since 4.2.0 * * @memberOf wp.emoji * * @param {HTMLElement|string} object The element or string to parse. * @param {Object} args Additional options for Twemoji. * * @return {HTMLElement|string} A string where all emoji are now image tags of * emoji. Or the element that was passed as the first argument. */ function parse( object, args ) { var params; /* * If the browser has full support, twemoji is not loaded or our * object is not what was expected, we do not parse anything. */ if ( settings.supports.everything || ! twemoji || ! object || ( 'string' !== typeof object && ( ! object.childNodes || ! object.childNodes.length ) ) ) { return object; } // Compose the params for the twitter emoji library. args = args || {}; params = { base: browserSupportsSvgAsImage() ? settings.svgUrl : settings.baseUrl, ext: browserSupportsSvgAsImage() ? settings.svgExt : settings.ext, className: args.className || 'emoji', callback: function( icon, options ) { // Ignore some standard characters that TinyMCE recommends in its character map. switch ( icon ) { case 'a9': case 'ae': case '2122': case '2194': case '2660': case '2663': case '2665': case '2666': return false; } if ( settings.supports.everythingExceptFlag && ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) && // Country flags. ! /^(1f3f3-fe0f-200d-1f308|1f3f4-200d-2620-fe0f)$/.test( icon ) // Rainbow and pirate flags. ) { return false; } return ''.concat( options.base, icon, options.ext ); }, attributes: function() { return { role: 'img' }; }, onerror: function() { if ( twemoji.parentNode ) { this.setAttribute( 'data-error', 'load-failed' ); twemoji.parentNode.replaceChild( document.createTextNode( twemoji.alt ), twemoji ); } }, doNotParse: function( node ) { if ( node && node.className && typeof node.className === 'string' && node.className.indexOf( 'wp-exclude-emoji' ) !== -1 ) { // Do not parse this node. Emojis will not be replaced in this node and all sub-nodes. return true; } return false; } }; if ( typeof args.imgAttr === 'object' ) { params.attributes = function() { return args.imgAttr; }; } return twemoji.parse( object, params ); } load(); return { parse: parse, test: test }; } window.wp = window.wp || {}; /** * @namespace wp.emoji */ window.wp.emoji = new wpEmoji(); } )( window, window._wpemojiSettings );
保存文件
位置:
home
/
londongranite
/
public_html
/
wp-includes
/
js
批量上传
创建
创建
批量权限
批量删除
名称
权限
大小
修改时间
操作
↑ 返回上级
-
-
-
-
codemirror
drwxr-xr-x
-
2026-05-21 23:23
权限
删除
重命名
crop
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
dist
drwxr-xr-x
-
2026-07-17 19:44
权限
删除
重命名
imgareaselect
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
jcrop
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
jquery
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
mediaelement
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
plupload
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
swfupload
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
thickbox
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
tinymce
drwxr-xr-x
-
2024-10-28 16:19
权限
删除
重命名
admin-bar.min.js
-rw-r--r--
3.41 KB
2024-05-11 22:28
编辑
下载
权限
删除
重命名
api-request.js
-rw-r--r--
3.25 KB
2020-12-01 08:44
编辑
下载
权限
删除
重命名
autosave.js
-rw-r--r--
21.95 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
autosave.min.js
-rw-r--r--
5.67 KB
2023-02-02 21:36
编辑
下载
权限
删除
重命名
backbone.js
-rw-r--r--
78.55 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
clipboard.js
-rw-r--r--
26.18 KB
2022-10-04 19:55
编辑
下载
权限
删除
重命名
clipboard.min.js
-rw-r--r--
8.8 KB
2024-06-27 16:55
编辑
下载
权限
删除
重命名
colorpicker.js
-rw-r--r--
28.4 KB
2012-11-17 20:11
编辑
下载
权限
删除
重命名
colorpicker.min.js
-rw-r--r--
16.11 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
comment-reply.js
-rw-r--r--
12.22 KB
2024-09-04 00:36
编辑
下载
权限
删除
重命名
customize-base.js
-rw-r--r--
25.22 KB
2023-05-20 14:19
编辑
下载
权限
删除
重命名
customize-loader.js
-rw-r--r--
7.72 KB
2024-04-12 21:47
编辑
下载
权限
删除
重命名
customize-loader.min.js
-rw-r--r--
3.47 KB
2023-02-02 21:36
编辑
下载
权限
删除
重命名
customize-models.js
-rw-r--r--
6.66 KB
2020-06-25 16:43
编辑
下载
权限
删除
重命名
customize-preview-nav-menus.js
-rw-r--r--
14.67 KB
2020-07-28 03:35
编辑
下载
权限
删除
重命名
customize-preview-nav-menus.min.js
-rw-r--r--
4.92 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
customize-preview-widgets.js
-rw-r--r--
22.71 KB
2020-06-20 16:58
编辑
下载
权限
删除
重命名
customize-preview-widgets.min.js
-rw-r--r--
7.64 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
customize-preview.min.js
-rw-r--r--
10.75 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
customize-selective-refresh.js
-rw-r--r--
32.55 KB
2024-04-12 21:47
编辑
下载
权限
删除
重命名
customize-selective-refresh.min.js
-rw-r--r--
10.44 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
customize-views.min.js
-rw-r--r--
2.51 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
heartbeat.js
-rw-r--r--
23.49 KB
2024-09-12 03:09
编辑
下载
权限
删除
重命名
heartbeat.min.js
-rw-r--r--
5.81 KB
2024-09-12 03:09
编辑
下载
权限
删除
重命名
hoverIntent.min.js
-rw-r--r--
1.46 KB
2024-06-27 16:55
编辑
下载
权限
删除
重命名
hoverintent-js.min.js
-rw-r--r--
1.68 KB
2019-12-10 06:03
编辑
下载
权限
删除
重命名
imagesloaded.min.js
-rw-r--r--
5.39 KB
2023-08-11 22:18
编辑
下载
权限
删除
重命名
json2.js
-rw-r--r--
31 B
2026-03-15 20:43
编辑
下载
权限
删除
重命名
masonry.min.js
-rw-r--r--
23.57 KB
2020-06-13 22:53
编辑
下载
权限
删除
重命名
mce-view.js
-rw-r--r--
25.24 KB
2023-10-10 01:31
编辑
下载
权限
删除
重命名
mce-view.min.js
-rw-r--r--
9.54 KB
2024-06-27 16:55
编辑
下载
权限
删除
重命名
media-audiovideo.js
-rw-r--r--
24.13 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
media-audiovideo.min.js
-rw-r--r--
11.76 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
media-editor.js
-rw-r--r--
28.77 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
media-editor.min.js
-rw-r--r--
10.83 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
media-grid.js
-rw-r--r--
26.06 KB
2026-07-10 03:34
编辑
下载
权限
删除
重命名
media-grid.min.js
-rw-r--r--
12.99 KB
2026-07-10 03:34
编辑
下载
权限
删除
重命名
media-models.js
-rw-r--r--
42.52 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
media-models.min.js
-rw-r--r--
12.97 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
media-views.js
-rw-r--r--
266.49 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
quicktags.js
-rw-r--r--
22.07 KB
2021-09-09 03:29
编辑
下载
权限
删除
重命名
quicktags.min.js
-rw-r--r--
10.87 KB
2023-02-02 21:36
编辑
下载
权限
删除
重命名
shortcode.js
-rw-r--r--
10.51 KB
2020-01-29 05:45
编辑
下载
权限
删除
重命名
swfobject.min.js
-rw-r--r--
35 B
2026-03-15 20:43
编辑
下载
权限
删除
重命名
tw-sack.js
-rw-r--r--
4.85 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
tw-sack.min.js
-rw-r--r--
3.21 KB
2022-04-09 00:07
编辑
下载
权限
删除
重命名
twemoji.min.js
-rw-r--r--
19.38 KB
2026-07-10 03:34
编辑
下载
权限
删除
重命名
underscore.js
-rw-r--r--
67.26 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
underscore.min.js
-rw-r--r--
18.57 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
utils.js
-rw-r--r--
4.56 KB
2020-01-29 05:45
编辑
下载
权限
删除
重命名
wp-ajax-response.js
-rw-r--r--
3.81 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
wp-ajax-response.min.js
-rw-r--r--
2.51 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
wp-api.js
-rw-r--r--
45.88 KB
2023-01-10 14:30
编辑
下载
权限
删除
重命名
wp-auth-check.js
-rw-r--r--
4.34 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
wp-auth-check.min.js
-rw-r--r--
1.65 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
wp-backbone.min.js
-rw-r--r--
2.97 KB
2022-04-09 00:07
编辑
下载
权限
删除
重命名
wp-custom-header.js
-rw-r--r--
10.22 KB
2021-04-10 16:40
编辑
下载
权限
删除
重命名
wp-custom-header.min.js
-rw-r--r--
4.34 KB
2023-02-02 21:36
编辑
下载
权限
删除
重命名
wp-embed-template.js
-rw-r--r--
6.62 KB
2021-11-11 07:49
编辑
下载
权限
删除
重命名
wp-embed-template.min.js
-rw-r--r--
3.1 KB
2024-06-27 16:55
编辑
下载
权限
删除
重命名
wp-embed.js
-rw-r--r--
3.14 KB
2023-08-10 23:49
编辑
下载
权限
删除
重命名
wp-emoji-loader.js
-rw-r--r--
13.04 KB
2026-08-06 19:42
编辑
下载
权限
删除
重命名
wp-emoji-loader.min.js
-rw-r--r--
2.91 KB
2026-08-06 19:42
编辑
下载
权限
删除
重命名
wp-emoji-release.min.js
-rw-r--r--
22.22 KB
2026-07-10 03:34
编辑
下载
权限
删除
重命名
wp-emoji.js
-rw-r--r--
8.59 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
wp-emoji.min.js
-rw-r--r--
2.79 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
wp-list-revisions.js
-rw-r--r--
970 B
2018-06-28 06:30
编辑
下载
权限
删除
重命名
wp-list-revisions.min.js
-rw-r--r--
597 B
2021-01-06 20:29
编辑
下载
权限
删除
重命名
wp-lists.js
-rw-r--r--
24.72 KB
2023-06-24 18:32
编辑
下载
权限
删除
重命名
wp-lists.min.js
-rw-r--r--
7.34 KB
2023-06-24 18:32
编辑
下载
权限
删除
重命名
wp-pointer.js
-rw-r--r--
9.99 KB
2021-02-17 01:25
编辑
下载
权限
删除
重命名
wp-sanitize.js
-rw-r--r--
1.58 KB
2026-05-21 23:23
编辑
下载
权限
删除
重命名
wp-sanitize.min.js
-rw-r--r--
402 B
2026-05-21 23:23
编辑
下载
权限
删除
重命名
wp-util.min.js
-rw-r--r--
1.4 KB
2026-03-10 20:40
编辑
下载
权限
删除
重命名
wpdialog.js
-rw-r--r--
569 B
2023-01-25 02:13
编辑
下载
权限
删除
重命名
wpdialog.min.js
-rw-r--r--
281 B
2023-01-25 02:13
编辑
下载
权限
删除
重命名
wplink.js
-rw-r--r--
20.74 KB
2026-03-15 20:43
编辑
下载
权限
删除
重命名
wplink.min.js
-rw-r--r--
11.05 KB
2024-09-30 09:19
编辑
下载
权限
删除
重命名
zxcvbn-async.js
-rw-r--r--
821 B
2018-06-28 06:30
编辑
下载
权限
删除
重命名
zxcvbn-async.min.js
-rw-r--r--
351 B
2021-02-23 21:45
编辑
下载
权限
删除
重命名