המלצה | קוד ל tampermonkey לאימוג'ים שמתאימים עצמם אוטומטית לטקסט שלך
-
אוקי
הקוד הבא משום מה לא עובד בתגובות בפורום, לא ניסיתי במקומות נוספים!
עובד ביצירת נושא חדש.
מוסיף לחצן הוספת אימוג'ים מותאמים אישית שנשמרים ב דפדפן באופן מקומי מה קוראים אותו localStorage
בהצלחה (לא עובד האימוג'י)// ==UserScript== // @name Emoji Suggestion Helper + Persistent Manager // @namespace http://tampermonkey.net/ // @version 1.2 // @description מציע אימוג'ים לפי הקלדה + ניהול מותאם אישית + שמירה מקומית + תומך גם בתגובות בפורומים כמו נודביבי. // @match *://*/* // @grant none // ==/UserScript== (function () { 'use strict'; let lastTarget = null; // טען מהמקום המקומי או ברירת מחדל let emojiMap = JSON.parse(localStorage.getItem('emojiMap') || '{}'); if (Object.keys(emojiMap).length === 0) { emojiMap = { "תודה רבה": "🙏", "בהצלחה": "🍀", "כל הכבוד": "👏", "מזל טוב": "🎉", "אמן כן יהי רצון": "🙏", "לילה טוב": "🌙", "שולח חיבוק": "🤗", }; localStorage.setItem('emojiMap', JSON.stringify(emojiMap)); } const suggestionBox = document.createElement('div'); Object.assign(suggestionBox.style, { position: 'absolute', background: '#fff', padding: '6px 10px', border: '1px solid #ccc', borderRadius: '8px', display: 'none', fontSize: '22px', zIndex: 9999, cursor: 'pointer', boxShadow: '0 2px 5px rgba(0,0,0,0.2)', }); document.body.appendChild(suggestionBox); suggestionBox.addEventListener('click', () => { if (lastTarget) insertEmojiAtCursor(lastTarget, suggestionBox.innerText); }); function insertEmojiAtCursor(el, emoji) { if (el.isContentEditable) { const sel = window.getSelection(); if (!sel.rangeCount) return; const range = sel.getRangeAt(0); range.deleteContents(); range.insertNode(document.createTextNode(emoji)); range.collapse(false); sel.removeAllRanges(); sel.addRange(range); } else { const start = el.selectionStart; const end = el.selectionEnd; el.value = el.value.slice(0, start) + emoji + el.value.slice(end); el.selectionStart = el.selectionEnd = start + emoji.length; } suggestionBox.style.display = 'none'; el.focus(); } function getTextBeforeCursor(el) { if (el.isContentEditable) { const sel = window.getSelection(); if (!sel.rangeCount) return ''; const range = sel.getRangeAt(0).cloneRange(); range.collapse(true); const pre = range.cloneRange(); pre.selectNodeContents(el); pre.setEnd(range.endContainer, range.endOffset); return pre.toString(); } else { return el.value.substring(0, el.selectionStart); } } function getLastMatchingEmoji(text) { const words = text.split(/\s+/); for (let len = 6; len >= 1; len--) { const phrase = words.slice(-len).join(' ').trim(); if (emojiMap[phrase]) return emojiMap[phrase]; } return null; } function updateSuggestionBox(emoji, x, y) { suggestionBox.innerText = emoji; suggestionBox.style.left = `${x + 10}px`; suggestionBox.style.top = `${y + 10}px`; suggestionBox.style.display = 'block'; } document.addEventListener('focusin', e => { const el = e.target; if (isTextInput(el)) lastTarget = el; }); document.addEventListener('input', handleTyping); document.addEventListener('keyup', handleTyping); function handleTyping(e) { const el = e.target; if (!isTextInput(el)) return; lastTarget = el; const text = getTextBeforeCursor(el); const emoji = getLastMatchingEmoji(text); const coords = getCursorCoordinates(el); if (emoji && coords) { updateSuggestionBox(emoji, coords.x, coords.y); } else { suggestionBox.style.display = 'none'; } } function isTextInput(el) { return el instanceof HTMLTextAreaElement || (el instanceof HTMLInputElement && el.type === "text") || el.isContentEditable; } function getCursorCoordinates(el) { if (el.isContentEditable) { const sel = window.getSelection(); if (!sel.rangeCount) return null; const range = sel.getRangeAt(0).cloneRange(); range.collapse(true); const rect = range.getBoundingClientRect(); return { x: rect.left, y: rect.top }; } else { const rect = el.getBoundingClientRect(); return { x: rect.left + 10, y: rect.top + 10 }; } } document.addEventListener('click', e => { if (!suggestionBox.contains(e.target)) suggestionBox.style.display = 'none'; }); // ---------- ⚙️ כפתור ניהול קטן ---------- const managerButton = document.createElement('div'); managerButton.textContent = '➕'; Object.assign(managerButton.style, { position: 'fixed', bottom: '8px', right: '8px', padding: '6px 8px', background: '#007bffcc', color: '#fff', borderRadius: '50%', cursor: 'pointer', zIndex: 9999, fontSize: '12px', boxShadow: '0 2px 5px rgba(0,0,0,0.3)', userSelect: 'none' }); document.body.appendChild(managerButton); // גרירה עם העכבר let isDragging = false, offsetX = 0, offsetY = 0; managerButton.addEventListener('mousedown', e => { isDragging = true; offsetX = e.offsetX; offsetY = e.offsetY; e.preventDefault(); }); document.addEventListener('mouseup', () => isDragging = false); document.addEventListener('mousemove', e => { if (!isDragging) return; managerButton.style.right = 'auto'; managerButton.style.left = `${e.pageX - offsetX}px`; managerButton.style.top = `${e.pageY - offsetY}px`; }); managerButton.addEventListener('click', () => { const phrase = prompt("הכנס ביטוי שאחריו יוצג אימוג'י:"); if (!phrase) return; const emoji = prompt("הכנס את האימוג'י המתאים:"); if (!emoji) return; emojiMap[phrase.trim()] = emoji.trim(); localStorage.setItem('emojiMap', JSON.stringify(emojiMap)); alert(`הביטוי "${phrase}" נוסף עם האימוג'י ${emoji}`); }); })();
-
עכשיו עובד גם בתגובות
זה מדהים
מתרגש מאוד🤩
האימוג'י קופץ בסמוך למיקום העכבר.// ==UserScript== // @name Emoji Suggestion (Dynamic & Persistent) // @namespace http://tampermonkey.net/ // @version 1.0 // @description מציע אימוג'י לפי הקלדה, תומך בשדות רגילים ו-contentEditable, נשמר בדפדפן ומופיע ליד הקורסור // @author ChatGPT + User // @match *://*/* // @grant none // ==/UserScript== (function () { 'use strict'; const emojiSuggestions = { "תודה רבה": "🙏", "בהצלחה": "🍀", "יום טוב": "☀️", "לילה טוב": "🌙", "חג שמח": "🎉", "כל הכבוד": "👏", "מחזיק לך אצבעות": "🤞", "אוהב אותך": "❤️", "שמח בשבילך": "🥰", "מתרגש מאוד": "🤩", "גאה בך": "🥹", "אין מילים": "🤯", "זה מדהים": "😲", "שומר על קשר": "📞", "שולח חיבוק": "🤗", "הכל יסתדר בעזרת השם": "🙌", "מתגעגע": "🥲", "סומך עליך": "👍", "אלוף": "🏆", "גיבור": "🦸", "חזק ואמץ": "💪", "מתפלל בשבילך": "✡️", "אמן כן יהי רצון": "🙏", "עלה והצלח": "🚀", "שמור על עצמך": "🛡️", "הלוואי וכל חלומותיך יתגשמו": "✨", "מקווה לטוב": "🍀", "הכל בזמנו": "⏳", "איזה יופי": "😍", "מחכה לעדכון": "📝", "עוקב מקרוב": "👀", "חיבוק גדול": "🫂", "מאחל הצלחה": "🍀" }; let lastTarget = null; let mouseX = 0, mouseY = 0; // יצירת תיבת ההצעה const suggestionBox = document.createElement('div'); suggestionBox.style.position = 'fixed'; suggestionBox.style.background = '#ffffff'; suggestionBox.style.padding = '4px 8px'; suggestionBox.style.border = '1px solid #ccc'; suggestionBox.style.borderRadius = '6px'; suggestionBox.style.fontSize = '18px'; suggestionBox.style.zIndex = 999999; suggestionBox.style.boxShadow = '0 2px 6px rgba(0,0,0,0.15)'; suggestionBox.style.display = 'none'; suggestionBox.style.cursor = 'pointer'; suggestionBox.style.userSelect = 'none'; document.body.appendChild(suggestionBox); // שמירת אימוג'ים שהוצעו ונבחרו לאחרונה const storageKey = 'emoji_recent'; let recentEmojis = JSON.parse(localStorage.getItem(storageKey) || '[]'); function saveRecent(phrase) { recentEmojis.push({ phrase, time: Date.now() }); recentEmojis = recentEmojis.filter((e, i, arr) => { // שמור רק את 30 האחרונים או כאלו מהיום האחרון return arr.length - i <= 30 || (Date.now() - e.time < 86400000); }); localStorage.setItem(storageKey, JSON.stringify(recentEmojis)); } function wasRecentlyUsed(phrase) { return recentEmojis.some(e => e.phrase === phrase && (Date.now() - e.time < 60000)); // 1 דקה } // הכנסת אימוג'י function insertEmoji(emoji) { if (!lastTarget) return; if (lastTarget.isContentEditable) { const selection = document.getSelection(); if (!selection.rangeCount) return; const range = selection.getRangeAt(0); range.deleteContents(); range.insertNode(document.createTextNode(emoji)); } else if (lastTarget instanceof HTMLTextAreaElement || lastTarget instanceof HTMLInputElement) { const start = lastTarget.selectionStart; const end = lastTarget.selectionEnd; const text = lastTarget.value; lastTarget.value = text.slice(0, start) + emoji + text.slice(end); lastTarget.selectionStart = lastTarget.selectionEnd = start + emoji.length; } suggestionBox.style.display = 'none'; lastTarget.focus(); } suggestionBox.addEventListener('click', function () { const emoji = suggestionBox.innerText.trim(); if (emoji) { insertEmoji(emoji); saveRecent(suggestionBox.dataset.phrase); } }); document.addEventListener('input', function (e) { const target = e.target; if (!(target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target.isContentEditable)) { return; } lastTarget = target; const text = target.value || target.innerText || ''; for (const phrase in emojiSuggestions) { if (text.includes(phrase) && !wasRecentlyUsed(phrase)) { suggestionBox.innerText = emojiSuggestions[phrase]; suggestionBox.dataset.phrase = phrase; suggestionBox.style.left = (mouseX + 10) + 'px'; suggestionBox.style.top = (mouseY + 10) + 'px'; suggestionBox.style.display = 'block'; return; } } suggestionBox.style.display = 'none'; }, true); document.addEventListener('mousemove', function (e) { mouseX = e.clientX; mouseY = e.clientY; }); })();
-
@עדלאידע איך אני מעדכן אוטומטית מגיט?
// ==UserScript== // @name Emoji Suggestion (Dynamic + Custom Add Button) // @namespace http://tampermonkey.net/ // @version 1.1 // @description מציע אימוג'ים לפי מילים, עם הוספה מותאמת אישית בלחיצה ושמירה מקומית // @author ChatGPT + מים-אחרונים // @match *://*/* // @grant none //@updateURL https://github.com/mhotjrubho/Text-emojis/blob/main/Text.emoji // ==/UserScript==
-
@עדלאידע יש שם שגיאה ליד השורת עדכון
-
@מים-אחרונים כתב בהמלצה | קוד ל tampermonkey לאימוג'ים שמתאימים עצמם אוטומטית לטקסט שלך:
@עדלאידע יש שם שגיאה ליד השורת עדכון
שים רווח בין ה-// ל-@
-
@מים-אחרונים תשנה את השם של הקובץ בגיטאהב עם סיומת
.user.js
ואז תוסיף את זה:// @updateURL https://raw.githubusercontent.com/mhotjrubho/Text-emojis/main/Text.emoji.user.js // @downloadURL https://raw.githubusercontent.com/mhotjrubho/Text-emojis/main/Text.emoji.user.js
אתה צריך בעצם לשים את הכתובת של Raw:
בשתי התגיות// @updateURL
// @downloadURL
-
@מים-אחרונים
יישר כח על המדריך
אצלי זה לא עובד
-
@מים-אחרונים סליחה על הבורות אבל איך אני מתקין את זהTampermonkey
תודה -
@שלמה-ברייר כתב בהמלצה | קוד ל tampermonkey לאימוג'ים שמתאימים עצמם אוטומטית לטקסט שלך:
@מים-אחרונים סליחה על הבורות אבל איך אני מתקין את זהTampermonkey
תודהאתה נכנס לכאן ומתקין
-
@קראנץ-ונילה הגיוני שזה לא עובד בטלפון?
@עדלאידע -
@קראנץ-ונילה כתב בהמלצה | קוד ל tampermonkey לאימוג'ים שמתאימים עצמם אוטומטית לטקסט שלך:
@מים-אחרונים
יישר כח על המדריך
אצלי זה לא עובד
אתה צריך לרענן את הדף שבו אתה רוצה להשתמש בסקריפט
-
@מים-אחרונים כתב בהמלצה | קוד ל tampermonkey לאימוג'ים שמתאימים עצמם אוטומטית לטקסט שלך:
@קראנץ-ונילה הגיוני שזה לא עובד בטלפון?
@עדלאידעהוא בדפדפן Kiwi
אין סיבה שזה לא יעבוד -
@עדלאידע איפה אני מכניס את הקוד?
-
@שלמה-ברייר התקנת את tampermonkey ?
-
כן
-
@שלמה-ברייר כנס לדשבורד, תלחץ על התוסף, וחפש את דשבורד.
תלחץ על פלוס, תדביק את הקוד שמור ורענן את הדף. -
@מים-אחרונים כן, באנדרואיד עם דפדפן kiwi
@עדלאידע לרענן לפני הכתיבה? כי אחרי זה ימחק את הטקסט -
@שלמה-ברייר כתב בהמלצה | קוד ל tampermonkey לאימוג'ים שמתאימים עצמם אוטומטית לטקסט שלך:
@עדלאידע איפה אני מכניס את הקוד?
תעבור על המדריך הזה
ואם אתה עדיין לא מבין אז תשאל -
@קראנץ-ונילה אתה מרענן פעם אחת ואז זה יטען בכל כניסה לדף כל שהוא