פרסומות באתר המחדש
-
לאחרונה התחילו להציק לי הפרסומות באתר המחדש
https://hm-news.co.il/
עשיתי סמניה למחיקת הפרסומותjavascript: (() => { let x = document.querySelectorAll("iframe"); for (i of x) { i.remove(); } let y = document.querySelectorAll("div"); for (i of y) { if (/zid-[0-9]/.test(i.className)){ i.remove(); } } })();
אשמח לתגובות והערות
-
@אביחיל כשאתה כותב את הקוד תכתוב אותו נורמלי עם קפיצות שורה והכל, ורק כשאתה רואה /שהכל עובד תהפוך אותו ל"דחוס" ככה בלי קפיצות שורה ובלי console.log וכדומה.
הקוד טוב, אפשר דבר ראשון למזג את הסלקטור של הiframe עם הdiv,
לגבי בדיקת הclass עם מכיל zid- נראה לי אפשר להשתמש עם סלקטור מכיל:div[class*=zid-]
.
הנה קוד דחוס לכמה מילים:javascript: [...document.querySelectorAll("iframe,div[class*=zid-]")].forEach(x => x.remove());
-
@אביחיל כתב בפרסומות באתר המחדש:
מה זה שלוש הנקודות בהתחלה?
זה הופך אוספים דמויי מערך למערכים רגילים.
הפונקציה forEach קיימת במערך, ואילו querySelectorAll מחזיר אוסף שאיננו מערך, אולם שניתן "לעבור עליו" (זה נקרא Iterable בר-מעבר) בלולאת for of כפי שהדגמת.
כל אוסף שניתן למעבר ניתן להמרה למערך על ידי Array.from או מES6 עם הסוגריים והשלוש נקודות.
הסוגריים והשלוש נקודות לא נועדו לזה בכלל, אלא לשטיחת מערכים. למשל יש לי שני מערכים (a, b למשל) ועוד שני אלמנטים ואני רוצה את כל האיברים במערך אחד, אז כותבים ככה:const all = [...a, ...b, elementA, elementB ];
אלמלא השלוש נקודות היה במיקום ה0 במערך מערך שלם (a). השלוש נקודות פורשים אותו והאיברים שלו מוכנסים בזה אחר זה. כיון שמותר לשים במקום מערך אוסף דמוי מערך, זה מביא את הטירק דלעיל המקובל כיום.
-
@אביחיל כתב בפרסומות באתר המחדש:
ומה זה הסלקטור מכיל, איך משתמשים בו?
div[disabled=true]
זה סלקטור שבחור את כל האלמנטים מסוג div בתנאי שיש להם attribute בשם disabled שמכיל את הערך true. בשביל לעשות מכיל עושים סימן כוכבית לפני השווה:
div[class*=123]
מביא את כל הdiv בהם התכונה class מכילה 123.
-
@אביחיל כתב בפרסומות באתר המחדש:
להציק לי הפרסומות
יש תוסף ייעודי לאתרים האלו
https://chrome.google.com/webstore/detail/cleaner-and-helper/abceolommehmfcheephklpllmcocgmol?hl=iw -
פוסט זה נמחק!
-
@ivrtikshoret נכון, החמצתי את העובדה שגם NodeList יש את מתודת forEach.
-