המלצה | סקריפט לטמפרמונקי להוספת כפתור צ'אט ליד פוסט!
-
אחרי הרבה עבודה...
// ==UserScript== // @name NodeBB Chat Button Injector // @namespace http://tampermonkey.net/ // @version 1.1 // @description הזרקת לחצן צ'אט מהיר ליד כל פוסט בפורומי NodeBB // @author אללוף // @match https://mitmachim.top/* // @grant unsafeWindow // @run-at document-end // ==/UserScript== (function() { 'use strict'; // פונקציה להזרקת הכפתור לפוסטים שעוד לא טופלו function injectChatButtons() { // בדיקה שפתח ה-API של הפורום זמין if (!unsafeWindow.app || !unsafeWindow.app.user) return; const currentUid = unsafeWindow.app.user.uid; // שליפת כל הפוסטים בעמוד שעוד לא קיבלו כפתור const posts = document.querySelectorAll('[component="post"]:not(.chat-btn-added)'); posts.forEach(post => { post.classList.add('chat-btn-added'); const postUid = post.getAttribute('data-uid'); // הגנה: שלא יוצג כפתור צ'אט של המשתמש עם עצמו, או אם אין uid תקין if (!postUid || Array.of(0, currentUid).includes(Number(postUid))) return; // איתור מיקום הלחצנים של הפוסט (תומך ברוב ערכות הנושא של NodeBB) const actionsContainer = post.querySelector('[component="post/actions"]') || post.querySelector('.post-tools'); if (actionsContainer) { const chatBtn = document.createElement('a'); chatBtn.className = 'btn btn-xs btn-link chat-quick-btn'; chatBtn.innerHTML = '<i class="fa fa-fw fa-comment-dots"></i> צ\'אט'; chatBtn.style.marginLeft = '8px'; chatBtn.style.cursor = 'pointer'; // אירוע לחיצה לפתיחת הצ'אט המובנה של המערכת chatBtn.addEventListener('click', async function (e) { e.preventDefault(); e.stopPropagation(); const userLink = post.querySelector('a[data-uid]'); if (!userLink) return; // ניסיון לפתוח את ה-popover המקורי userLink.dispatchEvent(new PointerEvent('pointerenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); const observer = new MutationObserver(() => { const popoverId = userLink.getAttribute('aria-describedby'); if (!popoverId) { return; } const popover = document.getElementById(popoverId); if (!popover) { return; } const btn = popover.querySelector('[component="account/new-chat"]') || popover.querySelector('[component="account/chat"]') || popover.querySelector('a[href*="/chats"]'); if (btn) { observer.disconnect(); btn.click(); } }); observer.observe(document.body, { childList: true, subtree: true }); setTimeout(() => observer.disconnect(), 5000); }); // הזרקה לתחילת או סוף רשימת הלחצנים לפי הנוחיות actionsContainer.appendChild(chatBtn); } }); } // האזנה לשינויים ב-DOM לצורך תמיכה בגלילה אינסופית ומעברי עמודים דינמיים const observer = new MutationObserver(() => { injectChatButtons(); }); observer.observe(document.body, { childList: true, subtree: true }); // הרצה ראשונית בטעינת העמוד injectChatButtons(); })();אשמח אם תעדכנו אם עובד לכם!
דוגמה:

-
אחרי הרבה עבודה...
// ==UserScript== // @name NodeBB Chat Button Injector // @namespace http://tampermonkey.net/ // @version 1.1 // @description הזרקת לחצן צ'אט מהיר ליד כל פוסט בפורומי NodeBB // @author אללוף // @match https://mitmachim.top/* // @grant unsafeWindow // @run-at document-end // ==/UserScript== (function() { 'use strict'; // פונקציה להזרקת הכפתור לפוסטים שעוד לא טופלו function injectChatButtons() { // בדיקה שפתח ה-API של הפורום זמין if (!unsafeWindow.app || !unsafeWindow.app.user) return; const currentUid = unsafeWindow.app.user.uid; // שליפת כל הפוסטים בעמוד שעוד לא קיבלו כפתור const posts = document.querySelectorAll('[component="post"]:not(.chat-btn-added)'); posts.forEach(post => { post.classList.add('chat-btn-added'); const postUid = post.getAttribute('data-uid'); // הגנה: שלא יוצג כפתור צ'אט של המשתמש עם עצמו, או אם אין uid תקין if (!postUid || Array.of(0, currentUid).includes(Number(postUid))) return; // איתור מיקום הלחצנים של הפוסט (תומך ברוב ערכות הנושא של NodeBB) const actionsContainer = post.querySelector('[component="post/actions"]') || post.querySelector('.post-tools'); if (actionsContainer) { const chatBtn = document.createElement('a'); chatBtn.className = 'btn btn-xs btn-link chat-quick-btn'; chatBtn.innerHTML = '<i class="fa fa-fw fa-comment-dots"></i> צ\'אט'; chatBtn.style.marginLeft = '8px'; chatBtn.style.cursor = 'pointer'; // אירוע לחיצה לפתיחת הצ'אט המובנה של המערכת chatBtn.addEventListener('click', async function (e) { e.preventDefault(); e.stopPropagation(); const userLink = post.querySelector('a[data-uid]'); if (!userLink) return; // ניסיון לפתוח את ה-popover המקורי userLink.dispatchEvent(new PointerEvent('pointerenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); const observer = new MutationObserver(() => { const popoverId = userLink.getAttribute('aria-describedby'); if (!popoverId) { return; } const popover = document.getElementById(popoverId); if (!popover) { return; } const btn = popover.querySelector('[component="account/new-chat"]') || popover.querySelector('[component="account/chat"]') || popover.querySelector('a[href*="/chats"]'); if (btn) { observer.disconnect(); btn.click(); } }); observer.observe(document.body, { childList: true, subtree: true }); setTimeout(() => observer.disconnect(), 5000); }); // הזרקה לתחילת או סוף רשימת הלחצנים לפי הנוחיות actionsContainer.appendChild(chatBtn); } }); } // האזנה לשינויים ב-DOM לצורך תמיכה בגלילה אינסופית ומעברי עמודים דינמיים const observer = new MutationObserver(() => { injectChatButtons(); }); observer.observe(document.body, { childList: true, subtree: true }); // הרצה ראשונית בטעינת העמוד injectChatButtons(); })();אשמח אם תעדכנו אם עובד לכם!
דוגמה:

@מחנה-ידידים באר פרט.
זה פותח צ'אט עם כותב הפוסט?
במקרה שכבר יש צאט ישן איתו, זה פותח חדש, או שזה פותח את הישן?
זה מביא אוטומטי קישור לתגובה דרכה נפחח הצאט? -
@מחנה-ידידים באר פרט.
זה פותח צ'אט עם כותב הפוסט?
במקרה שכבר יש צאט ישן איתו, זה פותח חדש, או שזה פותח את הישן?
זה מביא אוטומטי קישור לתגובה דרכה נפחח הצאט?@צדיק-וטוב-לו-0 אם יש כבר חדר צ'אט עם המשתמש זה פותח אותו (אם יש כמה - לא יודע, אולי את ההכי חדש?).
אם אין - חדר צ'אט חדש רגיל.
אין קישור לתגובה, @מחנה-ידידים ממליץ להוסיף. -
@צדיק-וטוב-לו-0 אם יש כבר חדר צ'אט עם המשתמש זה פותח אותו (אם יש כמה - לא יודע, אולי את ההכי חדש?).
אם אין - חדר צ'אט חדש רגיל.
אין קישור לתגובה, @מחנה-ידידים ממליץ להוסיף.@אברהם-גלסר תמיכה באוצריא גם לא תזיק (או שאתה רוצה שאעשה לבד).
-
@אברהם-גלסר תמיכה באוצריא גם לא תזיק (או שאתה רוצה שאעשה לבד).
@צדיק-וטוב-לו-0 , @מחנה-ידידים יצר את הסקריפט, לא אני.
-
@אברהם-גלסר תמיכה באוצריא גם לא תזיק (או שאתה רוצה שאעשה לבד).
@צדיק-וטוב-לו-0 @אברהם-גלסר
מחילה לא נכנסתי קצת זמן..
זו לא בעיה להוסיף תמיכה באוצריא - פשוט להוסיף match בסקריפט.
קישור לתגובה - אנסה.(אם יש כמה - לא יודע, אולי את ההכי חדש?)
בדיוק מה שנפתח בלחצן בדף הפרופיל.
-
@צדיק-וטוב-לו-0 @אברהם-גלסר
מחילה לא נכנסתי קצת זמן..
זו לא בעיה להוסיף תמיכה באוצריא - פשוט להוסיף match בסקריפט.
קישור לתגובה - אנסה.(אם יש כמה - לא יודע, אולי את ההכי חדש?)
בדיוק מה שנפתח בלחצן בדף הפרופיל.
@מחנה-ידידים אולי תוכל לעשות כזה סקריפט גם לפורום בני ברק,
זה יהיה מאוד שימושי. -
@מחנה-ידידים אולי תוכל לעשות כזה סקריפט גם לפורום בני ברק,
זה יהיה מאוד שימושי.@המתכנת-התותח זה לא בעיה:
// ==UserScript== // @name NodeBB Chat Button Injector // @namespace http://tampermonkey.net/ // @version 1.1 // @description הזרקת לחצן צ'אט מהיר ליד כל פוסט בפורומי NodeBB // @author אללוף // @match https://mitmachim.top/* // @match https://bnebrak.com/* // @grant unsafeWindow // @run-at document-end // ==/UserScript== (function() { 'use strict'; // פונקציה להזרקת הכפתור לפוסטים שעוד לא טופלו function injectChatButtons() { // בדיקה שפתח ה-API של הפורום זמין if (!unsafeWindow.app || !unsafeWindow.app.user) return; const currentUid = unsafeWindow.app.user.uid; // שליפת כל הפוסטים בעמוד שעוד לא קיבלו כפתור const posts = document.querySelectorAll('[component="post"]:not(.chat-btn-added)'); posts.forEach(post => { post.classList.add('chat-btn-added'); const postUid = post.getAttribute('data-uid'); // הגנה: שלא יוצג כפתור צ'אט של המשתמש עם עצמו, או אם אין uid תקין if (!postUid || Array.of(0, currentUid).includes(Number(postUid))) return; // איתור מיקום הלחצנים של הפוסט (תומך ברוב ערכות הנושא של NodeBB) const actionsContainer = post.querySelector('[component="post/actions"]') || post.querySelector('.post-tools'); if (actionsContainer) { const chatBtn = document.createElement('a'); chatBtn.className = 'btn btn-xs btn-link chat-quick-btn'; chatBtn.innerHTML = '<i class="fa fa-fw fa-comment-dots"></i> צ\'אט'; chatBtn.style.marginLeft = '8px'; chatBtn.style.cursor = 'pointer'; // אירוע לחיצה לפתיחת הצ'אט המובנה של המערכת chatBtn.addEventListener('click', async function (e) { e.preventDefault(); e.stopPropagation(); const userLink = post.querySelector('a[data-uid]'); if (!userLink) return; // ניסיון לפתוח את ה-popover המקורי userLink.dispatchEvent(new PointerEvent('pointerenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); const observer = new MutationObserver(() => { const popoverId = userLink.getAttribute('aria-describedby'); if (!popoverId) { return; } const popover = document.getElementById(popoverId); if (!popover) { return; } const btn = popover.querySelector('[component="account/new-chat"]') || popover.querySelector('[component="account/chat"]') || popover.querySelector('a[href*="/chats"]'); if (btn) { observer.disconnect(); btn.click(); } }); observer.observe(document.body, { childList: true, subtree: true }); setTimeout(() => observer.disconnect(), 5000); }); // הזרקה לתחילת או סוף רשימת הלחצנים לפי הנוחיות actionsContainer.appendChild(chatBtn); } }); } // האזנה לשינויים ב-DOM לצורך תמיכה בגלילה אינסופית ומעברי עמודים דינמיים const observer = new MutationObserver(() => { injectChatButtons(); }); observer.observe(document.body, { childList: true, subtree: true }); // הרצה ראשונית בטעינת העמוד injectChatButtons(); })(); -
@צדיק-וטוב-לו-0 @אברהם-גלסר
מחילה לא נכנסתי קצת זמן..
זו לא בעיה להוסיף תמיכה באוצריא - פשוט להוסיף match בסקריפט.
קישור לתגובה - אנסה.(אם יש כמה - לא יודע, אולי את ההכי חדש?)
בדיוק מה שנפתח בלחצן בדף הפרופיל.
@מחנה-ידידים אתה יכול לפרוז את זה בגיט, ואז אפשר להתקין ממך בקלות, ואתה יכול לעדכן את הסקריפט.
ג'מיני ממש שמח להסביר לי את זה. -
אחרי הרבה עבודה...
// ==UserScript== // @name NodeBB Chat Button Injector // @namespace http://tampermonkey.net/ // @version 1.1 // @description הזרקת לחצן צ'אט מהיר ליד כל פוסט בפורומי NodeBB // @author אללוף // @match https://mitmachim.top/* // @grant unsafeWindow // @run-at document-end // ==/UserScript== (function() { 'use strict'; // פונקציה להזרקת הכפתור לפוסטים שעוד לא טופלו function injectChatButtons() { // בדיקה שפתח ה-API של הפורום זמין if (!unsafeWindow.app || !unsafeWindow.app.user) return; const currentUid = unsafeWindow.app.user.uid; // שליפת כל הפוסטים בעמוד שעוד לא קיבלו כפתור const posts = document.querySelectorAll('[component="post"]:not(.chat-btn-added)'); posts.forEach(post => { post.classList.add('chat-btn-added'); const postUid = post.getAttribute('data-uid'); // הגנה: שלא יוצג כפתור צ'אט של המשתמש עם עצמו, או אם אין uid תקין if (!postUid || Array.of(0, currentUid).includes(Number(postUid))) return; // איתור מיקום הלחצנים של הפוסט (תומך ברוב ערכות הנושא של NodeBB) const actionsContainer = post.querySelector('[component="post/actions"]') || post.querySelector('.post-tools'); if (actionsContainer) { const chatBtn = document.createElement('a'); chatBtn.className = 'btn btn-xs btn-link chat-quick-btn'; chatBtn.innerHTML = '<i class="fa fa-fw fa-comment-dots"></i> צ\'אט'; chatBtn.style.marginLeft = '8px'; chatBtn.style.cursor = 'pointer'; // אירוע לחיצה לפתיחת הצ'אט המובנה של המערכת chatBtn.addEventListener('click', async function (e) { e.preventDefault(); e.stopPropagation(); const userLink = post.querySelector('a[data-uid]'); if (!userLink) return; // ניסיון לפתוח את ה-popover המקורי userLink.dispatchEvent(new PointerEvent('pointerenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); userLink.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); const observer = new MutationObserver(() => { const popoverId = userLink.getAttribute('aria-describedby'); if (!popoverId) { return; } const popover = document.getElementById(popoverId); if (!popover) { return; } const btn = popover.querySelector('[component="account/new-chat"]') || popover.querySelector('[component="account/chat"]') || popover.querySelector('a[href*="/chats"]'); if (btn) { observer.disconnect(); btn.click(); } }); observer.observe(document.body, { childList: true, subtree: true }); setTimeout(() => observer.disconnect(), 5000); }); // הזרקה לתחילת או סוף רשימת הלחצנים לפי הנוחיות actionsContainer.appendChild(chatBtn); } }); } // האזנה לשינויים ב-DOM לצורך תמיכה בגלילה אינסופית ומעברי עמודים דינמיים const observer = new MutationObserver(() => { injectChatButtons(); }); observer.observe(document.body, { childList: true, subtree: true }); // הרצה ראשונית בטעינת העמוד injectChatButtons(); })();אשמח אם תעדכנו אם עובד לכם!
דוגמה:

@מחנה-ידידים עשיתי גירסה שכוללת קישור ישיר לפוסט המקור - על בסיס הסקריפט שלך.
מיועד כמובן עבור מי שיש לו את התוסף Tampermonkey בדפדפן.
פרסתי את זה בגיטאהב, כך שזה יאפשר עדכון אוטומטי במקרה הצורך.
להתקנה לחץ כאן - ולאשר התקנה.
ניתן לתת
בגיטאב של הסקריפט שלי כאן: https://github.com/Tzadikvtovlo/Mitmachim-QuickChat-Linker
-
@מחנה-ידידים יש מצב לזה גם לפורום רכוסניק
תודה רבה@Tיו_ תעשה העתק הדבק, ותחליף את הכתובת של מתמחים בפורום שאתה רוצה.
-
@Tיו_ תעשה העתק הדבק, ותחליף את הכתובת של מתמחים בפורום שאתה רוצה.
@צדיק-וטוב-לו-0 קודם זה לא הפורום שלי
אני ישלח למנהל שם
השאלה אם @מחנה-ידידים מאשר את זה -
@צדיק-וטוב-לו-0 קודם זה לא הפורום שלי
אני ישלח למנהל שם
השאלה אם @מחנה-ידידים מאשר את זה@Tיו_ זה לא קשור למנהל.
אתה מתקין את זה לעצמך, ורק לך מופיע הכפתור. -
@Tיו_ זה לא קשור למנהל.
אתה מתקין את זה לעצמך, ורק לך מופיע הכפתור.@צדיק-וטוב-לו-0 לא הצלחתי להבין איך אני מתקין את זה?
-
@צדיק-וטוב-לו-0 לא הצלחתי להבין איך אני מתקין את זה?
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות