תגובה: בירור | חסימת התראות במייל
בהמשך לנידונים רבים בפורום איך אפשר להתפטר אוטומטית מחתימת מייל של מייל טראק כך שהמקבל לא רואה שאני משתמש במיילטראק (Mailtrack).
השתמשתי בקוד שהובא בקישור הנ"ל עבור שמירה בכרטיסיה ובמקום ללחוץ כל פעם בפתיחת מייל, נעזרתי ב-ChatGPT שיהפוך את זה לתוסף שיעשה את העבודה אוטומטי.
מדריך:
- ניצור תיקייה חדשה במחשב
- נעתיק את הקודים המצורפים וניצור שני קבצים על ידי פנקס רשימות, ובשמירה בשם נכתוב את הסיומת התואמת לכל קוד, ונשמור בתיקייה שפתחנו.
- נכנס לתוספים של כרום נלחץ על 'מצב פיתוח'. נלחץ על 'טעינת פריט unpacked' ואז נבחר את התיקייה שלנו ולמטה נלחץ 'select folder'.
- נרענן את gmail.
זהו!
מעכשיו כל פעם שנלחץ על אימייל חדש, התוסף יסיר את החתימה במייל. ואת החלון שמציע לרכוש חבילה בתשלום.
הקודים:
- נשמור את הקובץ בשם manifest.json
{
"manifest_version": 3,
"name": "Remove Mailtrack Signature",
"version": "1.0",
"description": "Remove Mailtrack signature and Pro upgrade popup from Gmail.",
"permissions": [
"activeTab"
],
"content_scripts": [
{
"matches": ["https://mail.google.com/*"],
"js": ["content.js"]
}
]
}
- נשמור את הקובץ בשם content.js
function removeMailtrackElements() {
var elements = document.querySelectorAll('div.Am.Al.editable.LW-avf.tS-tW');
elements.forEach(function(ele) {
if (ele) {
// Remove mailtrack signature
var eld = ele.querySelector("div#mt-signature");
if (eld) {
// Remove adjacent empty lines before the signature
var prevElement = eld.previousSibling;
while (prevElement && (prevElement.nodeType === Node.TEXT_NODE || prevElement.nodeType === Node.ELEMENT_NODE)) {
if (prevElement.nodeType === Node.TEXT_NODE && /^\s*$/.test(prevElement.nodeValue)) {
var temp = prevElement.previousSibling;
prevElement.remove();
prevElement = temp;
} else if (prevElement.nodeName === 'BR' || (prevElement.nodeName === 'DIV' && prevElement.innerHTML.trim() === '')) {
var temp = prevElement.previousSibling;
prevElement.remove();
prevElement = temp;
} else {
break;
}
}
eld.remove();
}
}
});
var proUpgrade = document.querySelectorAll('div#mailtrack-pro-upgrade');
proUpgrade.forEach(function(ele) {
if (ele) {
ele.remove();
}
});
}
function observeEmailBody() {
var emailBodies = document.querySelectorAll('div.Am.Al.editable.LW-avf.tS-tW');
emailBodies.forEach(function(body) {
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
removeMailtrackElements();
});
});
observer.observe(body, {
childList: true,
subtree: true
});
});
}
function handleNewEmail() {
setTimeout(function() {
removeMailtrackElements();
observeEmailBody();
}, 500); // Give some time for the email to load
}
document.addEventListener('click', function(event) {
var composeButton = document.querySelector('.T-I.T-I-KE.L3');
var replyButton = event.target.closest('.ams.bkH');
var forwardButton = event.target.closest('.amn');
var emailLink = event.target.closest('a[href^="mailto:"]');
if ((composeButton && event.target === composeButton) || replyButton || forwardButton || emailLink) {
handleNewEmail();
}
});
document.addEventListener('paste', function(event) {
setTimeout(removeMailtrackElements, 500); // Give some time for the content to be pasted
});
document.addEventListener('keydown', function(event) {
if (event.ctrlKey && event.key === 'z') {
setTimeout(removeMailtrackElements, 500); // Give some time for undo action to complete
}
});
new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
handleNewEmail();
}
});
}).observe(document.body, { childList: true, subtree: true });
בהצלחה!