שיתוף: סקריפט להסרת אלמנט מיד לאחר שנוצר
-
@WWW אני עוד לא יודע להצביע בדיוק על מה הגורם. אבל ה-iframe של נטפרי מכסה את כל הדף במקום להיות מכונס בתוך אלמנט הוידיאו.
תראה למשל:
https://www.filamentgroup.com/lab/scrollbars
https://webkit.org/blog/9528/webgpu-and-wsl-in-safariאתה אחראי על הסקריפט?
-
-
@WWW אמר בשיתוף: סקריפט להסרת אלמנט מיד לאחר שנוצר:
נראה לך???
האמת שלא. רק שהתעניינת מה הבאג היה נשמע שהסקריפט מוכר לך, על אף שזה פעיל רק מעט זמן...
בכל מקרה, יש לך מושג איך לתקן את זה? (יש לי חורים גדולים בידיעות שלי ב-HTML) -
@yossiz אמר בשיתוף: סקריפט להסרת אלמנט מיד לאחר שנוצר:
אני עוד לא יודע להצביע בדיוק על מה הגורם.
כנראה שזה בגלל קטע זה:
If the position property is absolute, the containing block is formed by the edge of the padding box of the nearest ancestor element that has a position value other than static (fixed, absolute, relative, or sticky).
בדפים אלו האבא הישיר של ה-
video
יש לוposition: static
, המיקום של ה-iframe של נטפרי נקבע לפי המיקום של הסבא הכי קרוב שיש לוposition !== static
.התיקון יהיה לכאורה לתת לאבא של הוידיאו
position: relative
-
@yossiz אמר בשיתוף: סקריפט להסרת אלמנט מיד לאחר שנוצר:
(יש לי חורים גדולים בידיעות שלי ב-HTML)
נדמה לי שהחורים שלי, גדולים בהרבה
-
@WWW אמר בשיתוף: סקריפט להסרת אלמנט מיד לאחר שנוצר:
כאן זה מודגם על החתימה של מיילטראק.
הפסיק למחוק לי
למה? -
@אדרת אמר בשיתוף: סקריפט להסרת אלמנט מיד לאחר שנוצר:
@WWW אמר בשיתוף: סקריפט להסרת אלמנט מיד לאחר שנוצר:
כאן זה מודגם על החתימה של מיילטראק.
הפסיק למחוק לי
למה?לא יודע, אצלי זה עובד.
-
-
@מוגן זה קורה בגלל מדיניות מניעת הזרקה שנוספה לאחרונה בג'מייל.
הפתרון להוסיף את הקוד הבא:if (window.trustedTypes && window.trustedTypes.createPolicy) { window.trustedTypes.createPolicy('default', { createHTML: (string, sink) => string }); }
אני מעדכן גם למעלה.
-
מאתמול אני שוב רואה שהסמל חזר
אשמח אם תוכל לבדוק שוב האם זה משהו כללי או נקודתי אצלי
תודה רבה. -
אצלי משום מה לא עובד
תוכל להעלות שוב את כל הקוד שכתבת? -
-
-
-
@מוגן בתוסף הזה צריך להוסיף לפני הקוד את השורות הבאות:
// ==UserScript== // @name הסרת מיילטראק חתימה // @namespace http://tampermonkey.net/ // @version 0.1 // @description // @author WWW // @match https://mail.google.com/* // @grant none // ==/UserScript==
-
זה הקוד שכתבתי ללא הצלחה...
// ==UserScript== // @name הסרת מיילטראק חתימה // @namespace http://tampermonkey.net/ // @version 0.1 // @description // @author WWW // @match https://mail.google.com/* // @grant none // ==/UserScript== (function() { if (window.trustedTypes && window.trustedTypes.createPolicy) { window.trustedTypes.createPolicy('default', { createHTML: (string, sink) => string }); } // insertion-query v1.0.3 (2016-01-20) https://github.com/naugtur/insertionQuery // license:MIT // Zbyszek Tenerowicz <naugtur@gmail.com> (http://naugtur.pl/) var insertionQ = (function () { "use strict"; var sequence = 100, isAnimationSupported = false, animationstring = 'animationName', keyframeprefix = '', domPrefixes = 'Webkit Moz O ms Khtml'.split(' '), pfx = '', elm = document.createElement('div'), options = { strictlyNew: true, timeout: 20 }; if (elm.style.animationName) { isAnimationSupported = true; } if (isAnimationSupported === false) { for (var i = 0; i < domPrefixes.length; i++) { if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) { pfx = domPrefixes[i]; animationstring = pfx + 'AnimationName'; keyframeprefix = '-' + pfx.toLowerCase() + '-'; isAnimationSupported = true; break; } } } function listen(selector, callback) { var styleAnimation, animationName = 'insQ_' + (sequence++); var eventHandler = function (event) { if (event.animationName === animationName || event[animationstring] === animationName) { if (!isTagged(event.target)) { callback(event.target); } } }; styleAnimation = document.createElement('style'); styleAnimation.innerHTML = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { outline: 1px solid transparent } to { outline: 0px solid transparent } }' + "\n" + selector + ' { animation-duration: 0.001s; animation-name: ' + animationName + '; ' + keyframeprefix + 'animation-duration: 0.001s; ' + keyframeprefix + 'animation-name: ' + animationName + '; ' + ' } '; document.head.appendChild(styleAnimation); var bindAnimationLater = setTimeout(function () { document.addEventListener('animationstart', eventHandler, false); document.addEventListener('MSAnimationStart', eventHandler, false); document.addEventListener('webkitAnimationStart', eventHandler, false); //event support is not consistent with DOM prefixes }, options.timeout); //starts listening later to skip elements found on startup. this might need tweaking return { destroy: function () { clearTimeout(bindAnimationLater); if (styleAnimation) { document.head.removeChild(styleAnimation); styleAnimation = null; } document.removeEventListener('animationstart', eventHandler); document.removeEventListener('MSAnimationStart', eventHandler); document.removeEventListener('webkitAnimationStart', eventHandler); } }; } function tag(el) { el.QinsQ = true; //bug in V8 causes memory leaks when weird characters are used as field names. I don't want to risk leaking DOM trees so the key is not '-+-' anymore } function isTagged(el) { return (options.strictlyNew && (el.QinsQ === true)); } function topmostUntaggedParent(el) { if (isTagged(el.parentNode) || el.nodeName === 'BODY') { return el; } else { return topmostUntaggedParent(el.parentNode); } } function tagAll(e) { tag(e); e = e.firstChild; for (; e; e = e.nextSibling) { if (e !== undefined && e.nodeType === 1) { tagAll(e); } } } //aggregates multiple insertion events into a common parent function catchInsertions(selector, callback) { var insertions = []; //throttle summary var sumUp = (function () { var to; return function () { clearTimeout(to); to = setTimeout(function () { insertions.forEach(tagAll); callback(insertions); insertions = []; }, 10); }; })(); return listen(selector, function (el) { if (isTagged(el)) { return; } tag(el); var myparent = topmostUntaggedParent(el); if (insertions.indexOf(myparent) < 0) { insertions.push(myparent); } sumUp(); }); } //insQ function var exports = function (selector) { if (isAnimationSupported && selector.match(/[^{}]/)) { if (options.strictlyNew) { tagAll(document.body); //prevents from catching things on show } return { every: function (callback) { return listen(selector, callback); }, summary: function (callback) { return catchInsertions(selector, callback); } }; } else { return false; } }; //allows overriding defaults exports.config = function (opt) { for (var o in opt) { if (opt.hasOwnProperty(o)) { options[o] = opt[o]; } } }; return exports; })(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// insertionQ('.mt-signature').every(function(element){ element.parentNode.removeChild(element); }); })();
-
כעת אין שגיאה אבל בפועל לא מוסתר לי החתימה.
-
-
@מעלה-ומוריד ככל הנראה זה בגלל שיש לו דפדפן כרום בטא.
-
מעלה ומורידהשיב לWWW ב 8 באפר׳ 2024, 21:58 נערך לאחרונה על ידי מעלה ומוריד 4 באוג׳ 2024, 21:59
@WWW מעניין אם כן מהי הסיבה שהקוד הזה אצלי אינו עושה את העבודה.
אני משתמש בכרום רגיל. העתקתי את הקוד מההודעה הראשונה והתאמתי אותו לסקריפט בטמפרמונקי. -
@מעלה-ומוריד א. תודות @WWW על העזרה בפרטי
כרגע למרות הרצון הטוב והנסיון הממושך באופן פרטי לא נפתרה הבעיה.
באמת משהו מוזר. -
כעת בבדיקה נוספת הקוד הזה עובד לי ב"ה.
// ==UserScript== // @name הסרת מיילטראק חתימה // @namespace http://tampermonkey.net/ // @version 0.1 // @description // @author WWW // @match https://mail.google.com/* // @grant none // ==/UserScript== (function() { // insertion-query v1.0.3 (2016-01-20) https://github.com/naugtur/insertionQuery // license:MIT // Zbyszek Tenerowicz <naugtur@gmail.com> (http://naugtur.pl/) var insertionQ = (function () { "use strict"; var sequence = 100, isAnimationSupported = false, animationstring = 'animationName', keyframeprefix = '', domPrefixes = 'Webkit Moz O ms Khtml'.split(' '), pfx = '', elm = document.createElement('div'), options = { strictlyNew: true, timeout: 20 }; if (elm.style.animationName) { isAnimationSupported = true; } if (isAnimationSupported === false) { for (var i = 0; i < domPrefixes.length; i++) { if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) { pfx = domPrefixes[i]; animationstring = pfx + 'AnimationName'; keyframeprefix = '-' + pfx.toLowerCase() + '-'; isAnimationSupported = true; break; } } } function listen(selector, callback) { var styleAnimation, animationName = 'insQ_' + (sequence++); var eventHandler = function (event) { if (event.animationName === animationName || event[animationstring] === animationName) { if (!isTagged(event.target)) { callback(event.target); } } }; styleAnimation = document.createElement('style'); styleAnimation.innerHTML = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { outline: 1px solid transparent } to { outline: 0px solid transparent } }' + "\n" + selector + ' { animation-duration: 0.001s; animation-name: ' + animationName + '; ' + keyframeprefix + 'animation-duration: 0.001s; ' + keyframeprefix + 'animation-name: ' + animationName + '; ' + ' } '; document.head.appendChild(styleAnimation); var bindAnimationLater = setTimeout(function () { document.addEventListener('animationstart', eventHandler, false); document.addEventListener('MSAnimationStart', eventHandler, false); document.addEventListener('webkitAnimationStart', eventHandler, false); //event support is not consistent with DOM prefixes }, options.timeout); //starts listening later to skip elements found on startup. this might need tweaking return { destroy: function () { clearTimeout(bindAnimationLater); if (styleAnimation) { document.head.removeChild(styleAnimation); styleAnimation = null; } document.removeEventListener('animationstart', eventHandler); document.removeEventListener('MSAnimationStart', eventHandler); document.removeEventListener('webkitAnimationStart', eventHandler); } }; } function tag(el) { el.QinsQ = true; //bug in V8 causes memory leaks when weird characters are used as field names. I don't want to risk leaking DOM trees so the key is not '-+-' anymore } function isTagged(el) { return (options.strictlyNew && (el.QinsQ === true)); } function topmostUntaggedParent(el) { if (isTagged(el.parentNode) || el.nodeName === 'BODY') { return el; } else { return topmostUntaggedParent(el.parentNode); } } function tagAll(e) { tag(e); e = e.firstChild; for (; e; e = e.nextSibling) { if (e !== undefined && e.nodeType === 1) { tagAll(e); } } } //aggregates multiple insertion events into a common parent function catchInsertions(selector, callback) { var insertions = []; //throttle summary var sumUp = (function () { var to; return function () { clearTimeout(to); to = setTimeout(function () { insertions.forEach(tagAll); callback(insertions); insertions = []; }, 10); }; })(); return listen(selector, function (el) { if (isTagged(el)) { return; } tag(el); var myparent = topmostUntaggedParent(el); if (insertions.indexOf(myparent) < 0) { insertions.push(myparent); } sumUp(); }); } //insQ function var exports = function (selector) { if (isAnimationSupported && selector.match(/[^{}]/)) { if (options.strictlyNew) { tagAll(document.body); //prevents from catching things on show } return { every: function (callback) { return listen(selector, callback); }, summary: function (callback) { return catchInsertions(selector, callback); } }; } else { return false; } }; //allows overriding defaults exports.config = function (opt) { for (var o in opt) { if (opt.hasOwnProperty(o)) { options[o] = opt[o]; } } }; return exports; })(); if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { module.exports = insertionQ; } if (window.trustedTypes && window.trustedTypes.createPolicy) { window.trustedTypes.createPolicy('default', { createHTML: (string, sink) => string }); } insertionQ('#mt-signature').every(function(element){ element.parentNode.removeChild(element); console.log("חתימה הוסרה בהצלחה!"); }); })();
-
תסלחו לי על הבורות רציתי לשאול מה בדיוק הנושא פה? ולמה צריך כזה סקריפט משוכלל ולא לעשות סקריפט פשוט שמוחק את האלמנט או מסתיר אותו (מסתמא עדיף כדי למנוע שגיאות בלתי צפויות)?
אני שואל כי אני רוצה לטעון אתר דרך C# ולהסיר כמה אלמנטים על ידי הזרקת JS אז לפני תחילת העבודה אני רוצה לברר למה אני נכנס ואיפה התקרים.... -
@pcinfogmach תתייג את @WWW לי אין שום הבנה בענין.
-
@pcinfogmach כי זה לא אלמנט שקיים עם טעינת הדף
רק כשיוצרים מייל חדש