您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces old iOS emojis with Emojione on Telegram Web
当前为
// ==UserScript== // @name Telegram Web Emojione // @namespace https://gf.qytechs.cn/users/649 // @version 1.0.29 // @description Replaces old iOS emojis with Emojione on Telegram Web // @author Adrien Pyke // @match *://web.telegram.org/* // @grant none // @require https://gf.qytechs.cn/scripts/5679-wait-for-elements/code/Wait%20For%20Elements.js?version=250853 // @require https://gf.qytechs.cn/scripts/38329-emojione-min-js/code/emojioneminjs.js?version=250047 // ==/UserScript== (function() { 'use strict'; var SCRIPT_NAME = 'Telegram Web Emojione'; var Util = { log: function() { var args = [].slice.call(arguments); args.unshift('%c' + SCRIPT_NAME + ':', 'font-weight: bold;color: #233c7b;'); console.log.apply(console, args); }, q: function(query, context) { return (context || document).querySelector(query); }, qq: function(query, context) { return [].slice.call((context || document).querySelectorAll(query)); }, appendStyle: function(str) { var style = document.createElement('style'); style.textContent = str; document.head.appendChild(style); }, regexEscape: function(str) { return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } }; var sizes = [ { size: 20 }, { class: ['im_short_message_text', 'im_short_message_media'], size: 16 }, { class: ['composer_emoji_tooltip', 'stickerset_modal_sticker_alt'], size: 26 } ]; Util.appendStyle(sizes.map(function(size) { var output = '.emojione'; if (size.class) { output = size.class.map(function(c) { return '.' + c + ' .emojione'; }).join(', '); } return output + ' {width: ' + size.size + 'px;}'; }).join('')); var replacements = { ':+1:': ':thumbsup:', ':facepunch:': ':punch:', ':hand:': ':raised_hand:', ':moon:': ':waxing_gibbous_moon:', ':phone:': ':telephone:', ':hocho:': ':knife:', ':boat:': ':sailboat:', ':car:': ':red_car:', ':large_blue_circle:': ':blue_circle:', '\uD83C\uDFF3': '\uD83C\uDFF3\uFE0F', '\uFE0F\uFE0F': '\uFE0F' }; var makeReplacements = function(str) { for (var property in replacements) { if (replacements.hasOwnProperty(property)) { str = str.replace(new RegExp(Util.regexEscape(property), 'g'), replacements[property]); } } return str; }; var getImageSrc = function(shortname) { var tempDiv = document.createElement('div'); tempDiv.innerHTML = emojione.toImage(replacements[shortname] || shortname); return Util.q('img', tempDiv).src; }; var convert = function(msg) { Util.qq('.emoji', msg).forEach(function(emoji) { emoji.outerHTML = emoji.textContent; }); Array.from(msg.childNodes).forEach(function(node) { var content = node.textContent; if (content) { content = makeReplacements(content); var withEmoji = emojione.toImage(emojione.shortnameToUnicode(content)); if (node.nodeType === Node.TEXT_NODE) { var tempDiv = document.createElement('div'); tempDiv.innerHTML = withEmoji; if (Util.q('img', tempDiv)) { tempDiv.childNodes.forEach(function(child) { msg.insertBefore(child.cloneNode(), node); }); node.remove(); } } else { node.innerHTML = withEmoji; } } }); }; waitForElems({ sel: [ '.im_message_text', '.im_message_author', '.im_message_webpage_site', '.im_message_webpage_title > a', '.im_message_webpage_description', '.im_dialog_peer > span', '.stickerset_modal_sticker_alt', '.im_message_photo_caption', '.im_message_document_caption' ].join(','), onmatch: function(msg) { convert(msg); var changes = waitForElems({ context: msg, onchange: function() { changes.stop(); convert(msg); } }); setTimeout(function() { changes.stop(); }, 1000); // if no changes after 1 second, assume no changes } }); waitForElems({ sel: [ '.im_short_message_text', '.im_short_message_media > span > span > span' ].join(','), onmatch: function(msg) { convert(msg); var changes = waitForElems({ context: msg, onchange: function() { changes.stop(); convert(msg); changes.resume(); } }); } }); waitForElems({ sel: '.composer_emoji_btn', onmatch: function(btn) { btn.innerHTML = emojione.toImage(replacements[btn.title] || btn.title); } }); waitForElems({ sel: '.composer_emoji_option', onmatch: function(option) { var emoji = Util.q('span', option).textContent; emoji = replacements[emoji] || emoji; Util.q('.emoji', option).outerHTML = emojione.toImage(emoji); } }); var textarea = Util.q('.composer_rich_textarea'); var textChanges = waitForElems({ context: textarea, config: { characterData: true, childList: true, subtree: true }, onchange: function() { textChanges.stop(); var convertNodes = function(node) { if (node.nodeType === Node.TEXT_NODE) { var tempDiv = document.createElement('div'); tempDiv.innerHTML = emojione.toImage(makeReplacements(node.textContent)); if (Util.q('img', tempDiv)) { Util.qq('img', tempDiv).forEach(function(emoji) { emoji.removeAttribute('class'); emoji.classList.add('emoji', 'emoji-w20', 'emoji-spritesheet-0', 'e1-converted'); emoji.style.backgroundImage = 'url(' + emoji.src + ')'; emoji.style.backgroundSize = 'cover'; emoji.src = 'img/blank.gif'; }); Array.from(tempDiv.childNodes).forEach(function(tempChild) { node.parentNode.insertBefore(tempChild, node); }); node.remove(); } } else if (node.tagName === 'IMG') { if (!node.classList.contains('e1-converted')) { node.removeAttribute('style'); node.classList.add('e1-converted'); node.style.backgroundImage = 'url(' + getImageSrc(node.alt) + ')'; node.style.backgroundSize = 'cover'; } } else { if (node.childNodes) { Array.from(node.childNodes).forEach(convertNodes); } } }; Array.from(textarea.childNodes).forEach(convertNodes); textChanges.resume(); } }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址