new Facebook figuccio

new facebook color 2025

当前为 2025-02-25 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name new Facebook figuccio
  3. // @namespace https://greasyfork.org/users/237458
  4. // @version 38.5
  5. // @author figuccio
  6. // @description new facebook color 2025
  7. // @match https://*.facebook.com/*
  8. // @grant GM_addStyle
  9. // @grant GM_setValue
  10. // @grant GM_getValue
  11. // @grant GM_registerMenuCommand
  12. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
  13. // @run-at document-start
  14. // @require https://code.jquery.com/jquery-latest.js
  15. // @require https://code.jquery.com/ui/1.13.2/jquery-ui.js
  16. // @icon https://facebook.com/favicon.ico
  17. // @require https://greasyfork.org/scripts/12228/code/setMutationHandler.js
  18. // @noframes
  19. // @license MIT
  20. // ==/UserScript==
  21. (function() {
  22. 'use strict';
  23. //Aggiunge una barra percentuale di scorrimento e del testo nella parte superiore della pagina con %
  24. var progressBar = document.createElement('div');
  25. progressBar.style.position = 'fixed';
  26. progressBar.style.top = '0';
  27. progressBar.style.left = '0';
  28. progressBar.style.width = '0%';
  29. progressBar.style.height = '5px';
  30. progressBar.style.backgroundColor = 'gold';
  31. progressBar.style.zIndex = '10000';
  32. progressBar.style.transition = 'width 0.25s ease-out';
  33. document.body.appendChild(progressBar);
  34.  
  35. // Crea l'elemento di testo percentuale
  36. var progressText = document.createElement('div');
  37. progressText.style.position = 'fixed';
  38. progressText.style.top = '50px';
  39. progressText.style.right = '0';
  40. progressText.style.padding = '5px';
  41. progressText.style.backgroundColor = 'gold';
  42. progressText.style.color = 'red';
  43. progressText.style.zIndex = '10000';
  44. progressText.style.fontFamily = 'Arial, sans-serif';
  45. progressText.style.fontSize = '17px';
  46. document.body.appendChild(progressText);
  47.  
  48. // Aggiorna la larghezza della barra e del testo durante lo scorrimento
  49. window.addEventListener('scroll', function() {
  50. var scrollTop = window.scrollY || document.documentElement.scrollTop;
  51. var scrollHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;
  52. var scrollPercent = (scrollTop / scrollHeight) * 100;
  53. progressBar.style.width = scrollPercent + '%';
  54. progressText.textContent = Math.round(scrollPercent) + '%';
  55. });
  56. ///////////////////
  57. // Interrompe la riproduzione degli annunci pubblicitari durante un video.
  58. window.addEventListener('playing', function(event) {
  59. event.stopImmediatePropagation();
  60. event.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes[1].childNodes[0].childNodes[0].setAttribute('hidden', 'hidden');
  61. }, true);
  62.  
  63. //Interrompe la riproduzione degli annunci pubblicitari alla fine di un video.
  64. window.addEventListener('ended', function(event) {
  65. event.stopImmediatePropagation();
  66. event.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes[1].childNodes[0].childNodes[0].removeAttribute('hidden');
  67. }, true);
  68. /////////////////////////////
  69. //Facebook Reel: Video Controls
  70. document.addEventListener('play', (evt) => {
  71. const target = (evt || 0).target;
  72.  
  73. if (target instanceof HTMLVideoElement && !target.hasAttribute('controls') && location.href.includes('reel')) {
  74. let buttonLayer = target.closest('div[class][role="button"][tabindex]');
  75.  
  76. if (buttonLayer) {
  77. target.setAttribute('controls', '');
  78.  
  79. setTimeout(() => {
  80. Object.assign(target.style, {
  81. 'position': 'relative',
  82. 'zIndex': 999,
  83. 'pointerEvents': 'all'
  84. });
  85.  
  86. [...buttonLayer.querySelectorAll('.x10l6tqk.x13vifvy:not(.x1m3v4wt)')].forEach(s => {
  87. Object.assign(s.style, {
  88. 'pointerEvents': 'none',
  89. 'position': 'relative',
  90. 'zIndex': 1000
  91. });
  92. });
  93. }, 1);
  94. }
  95. }
  96. }, true);
  97.  
  98. //accetta cookie
  99. // Funzione per rilevare la pagina di login
  100. function isLoginPage() {
  101. return document.querySelector('form[action*="/login"]') !== null;
  102. }
  103. // Verifica se sei sulla pagina di login al caricamento della pagina
  104. if (isLoginPage()) {
  105. console.log('Sei sulla pagina di login di Facebook');
  106. document.cookie = "datr=LVSeZ6822RyG0BNdfQNdbC3d; domain=.facebook.com; max-age=315360000";
  107. //accetta tutti cookie facebook
  108. GM_addStyle('div[data-cookiebanner=\"banner\"],.hasCookieBanner #root ~ .accelerate,body[tabindex] > div > #viewport > div:first-child:not(#MChromeHeader),div[data-testid=\"cookie-policy-dialog\"],div[data-testid=\"cookie-policy-manage-dialog\"]{display:none !important}.uiLayer[data-testid=\"cookie-policy-banner\"]{display:none !important}.hasCookieBanner > div{position:static !important}');
  109. if(!localStorage.reload) {
  110. //correzione errore triangolo giallo
  111. setTimeout(function(){document.location.reload();}, 2000);
  112. localStorage.reload = 1;
  113. }
  114. }
  115.  
  116. //nuovo consent cookie al login facebook
  117. if (document.URL =="https://www.facebook.com/two_step_verification/authentication/?encrypted_context=AWORbOl-6WUhspgD_PRex_sx-CcNd0rzSB8NpYs5J5A7J4i4h9xY-kmv08gpZrh8iKcZbwfJQxn3nX6nM7s7goKVUPmF0Xbm4D3vaB4U_Ffxqf0ak4WBRTyKha7lqZ5_7uzSvzPUqGEvQzhCyaJb5btWFFmWVX8YZmSy4E-dY5V1cL1k-VE3XdEBk48T1iVA4ky4hkPRkHYuiMm5DGAcSw6RGqkPsScxyvX01ADzM39-I7Z55GUPDajE8h-aqaJelDPb8jmfz0ZxPEfpbPjFI7mXG4BNo7ii_PhYX7q8K0AxcW7LeDaIQa-VMytDZMRwW7uNpmVk1ae_rf6Ep5EURhrAkYUfom6kGnJOuMJwo7Zad8Y5LRp2wIxNv-QhflSwD67cfT1PPcP7axAv_AGdecuyUBPCb6ZrqgnLMnzIEHfHtJuibJzcMk_DVvPFRWNp_530_706xm4H4LbW15A6vmHo_nFeUStlHKgR4NlX2eBVyocyUCMi1VM2V2m6f2K99O3yMUkXFchHiMLnwK_a05csEWxGetzV_EgKo5GAjTBTK6CJ6tdIfsY-6AsI89iJ1Yx5i2Up3yc7KF11yYbneU5C3ospNpglXsOcCnWDudYdu0l6HL2lJti83cR14hfPj5EjU5fwpMG4K6uijgHKyes-e1nLSz0wqmc5TQK410sJIDI-8raIeXngKj-EMaITakXlASAxVmVFq4MmAzHi0CrgS0GYl_i5QzCYJa8tmiQXvdeg&flow=pre_authentication&next") window.location.href = "https://www.facebook.com/";
  118.  
  119. /////////////////////////////////
  120. //mostra altro...
  121. var l_foundButton = false;
  122. function clickButton() {
  123. if (document.URL.match(/facebook.com\/*(\?.*)*/)) {
  124. //Cerca il pulsante
  125. const buttons = document.querySelectorAll('.x1iyjqo2');
  126. buttons.forEach((button) => {
  127. if (button.innerText == "Altro...") {
  128. button.click();
  129. l_foundButton = true;
  130. }
  131. });
  132. }
  133.  
  134. // Aggiunto controllo e log per debug
  135. if (l_foundButton) {
  136. console.log("Button 'Altro...' clicked.");
  137. l_foundButton = false; // Reset per il prossimo ciclo
  138. } else {
  139. //console.log("Button 'Altro...' not found.");
  140. }
  141. }
  142. // Chiama clickButton ogni 1000 millisecondi (1 secondo) finché il pulsante non viene trovato
  143. var intervalId = setInterval(() => {
  144. if (!l_foundButton) {
  145. clickButton();
  146. } else {
  147. clearInterval(intervalId); //Interrompere l'intervallo una volta cliccato il pulsante
  148. }
  149. }, 1000);
  150. // Esegui clickButton() all'avvio per gestire i bottoni già presenti
  151. clickButton();
  152. //GM_registerMenuCommand("Altro", clickButton);
  153. ///////////////////////////////////////////////
  154. //form login
  155. GM_addStyle('._6luv {background-color:#476014!important;border:2px solid blue!important;}');
  156. //nasconde pop up notifica a sinistra quando si gioca
  157. GM_addStyle('ul[data-gt*=\"\\\"ref\\\":\\\"beeper\\\"\"] {display:none!important;}');
  158. //nasconde pop up notifica a sinistra sulla home
  159. GM_addStyle('div[role="complementary"][aria-labelledby] {display:none!important;}');
  160. // ti piace questo gioco popup
  161. GM_addStyle('._3mqg {display:none!important}');
  162. ///////////////////////crea una storia dalla sez centrale rimosse (necessario Condividi una ho scrivi qualcosa)
  163. GM_addStyle('.xquyuld.x10wlt62.x6ikm8r.xh8yej3.xt3gfkd.xu5ydu1.xdney7k.x1qpq9i9.x1jx94hy.x1ja2u2z.x1n2onr6.x9f619 > .xwib8y2.x1y1aw1k {display:none!important}');//marzo 2024
  164. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  165. GM_addStyle(`
  166. /* sidebar sinistra visibile su tutti gli altri account luglio 2023 */
  167. div[role="banner"]+div div[role="navigation"] {
  168. border-radius: 14px;
  169. border: 2px solid lime !important;
  170. margin-top: 0px !important;
  171. font-family: monospace !important;
  172. }
  173. div[role="banner"]+div div[role="navigation"]:hover {
  174. background-image: url(https://media2.giphy.com/media/asG02gUfDyIxdODF76/giphy.gif);
  175. background-blend-mode: overlay;
  176. }
  177.  
  178. /* sidebar destra */
  179. div[role="complementary"] {
  180. border-radius: 14px;
  181. border: 2px solid red !important;
  182. margin-top: 4px !important;
  183. font-family: Raleway !important;
  184. }
  185. div[role="complementary"]:hover {
  186. background-image: url(https://media2.giphy.com/media/asG02gUfDyIxdODF76/giphy.gif);
  187. background-blend-mode: overlay;
  188. }
  189.  
  190. /* Stile comune per gli elementi con bordo rosso ha cosa stai pensando bordo*/
  191. .xz9dl7a.x1swvt13.x1pi30zi.x1a8lsjc.x1a02dak.x78zum5.x6s0dn4,
  192. .x6o7n8i.x1unhpq9.x1hc1fzr > div {
  193. border-radius:14px;
  194. border:2px solid red!important;
  195. }
  196.  
  197. /* Stile specifico per il bordo verde sui feed */
  198. .x6o7n8i.x1unhpq9.x1hc1fzr > div {
  199. border:2px solid lime!important;
  200. }
  201.  
  202. /*watch marketplace groups gaming*/
  203. div[role="navigation"][aria-label="Facebook"]>ul>li:nth-child(n+2):nth-child(-n+5) {
  204. display:none!important;
  205. }
  206.  
  207. /* cerchi notifiche messaggi ecc */
  208. .x1qhmfi1 {
  209. border-radius:22px!important;
  210. border:2px solid #c471ed!important;
  211. }
  212.  
  213. `);
  214. //feed piu grandi compreso ha cosa stai pensando avviare dopo che la pagina e stata caricata
  215. var $ = window.jQuery;//$ evita triangolo giallo
  216. $(document).ready(function() {
  217. //remove sponsorizzati marketplace
  218. const MARKET_PLACE_REGEX = /(?:https?:\/\/)?(?:www\.)?(mbasic.facebook|m\.facebook|facebook|fb)\.(com|me)\/marketplace/ig
  219.  
  220. new MutationObserver(function(mutationList, observer) {
  221. // Assicurati di essere sul lato marketplace di Facebook
  222. if (!window.location.href.match(MARKET_PLACE_REGEX)) {
  223. return;
  224. }
  225.  
  226. // Nascondi i risultati "sponsorizzati".
  227. document.querySelectorAll('div.xjkvuk6.x1iorvi4.x1uepa24.x291uyu.xnpuxes.x150jy0e.x1e558r4.xs83m0k.x1iyjqo2.xdt5ytf.x1r8uery.x78zum5.x9f619 > span').forEach(function(element) {
  228. const parent = element.parentElement;
  229. if(!parent) {
  230. return;
  231. }
  232.  
  233. parent.style.display = 'none';
  234. console.log("Hidden sponsored item", parent);
  235.  
  236. // Prendi la riga che contiene "Sponsorizzato" + nome della categoria
  237. const parentBar = element.closest('.xkrivgy.x1gryazu.x1n2onr6')
  238. if(!parentBar) {
  239. return;
  240. }
  241.  
  242. // Rimuovi la parte effettiva "Sponsorizzata".
  243. const sponsoredBarItem = parentBar.querySelector('.x1pha0wt.x78zum5.x1r8uery.xdt5ytf.x1iyjqo2.x1qughib')
  244. if(!sponsoredBarItem) {
  245. return;
  246. }
  247.  
  248. sponsoredBarItem.style.display = 'none';
  249. console.log("Hidden sponsored bar", sponsoredBarItem);
  250. });
  251. }).observe(document.body, {childList:true, subtree:true});
  252. ////////////////////////////////////////////////////////////
  253. //feed piu grandi compreso ha cosa stai pensando
  254. function adjustWidths() {
  255. const feedElements = document.querySelectorAll('.x193iq5w.xvue9z.xq1tmr.x1ceravr');
  256. feedElements.forEach(element => {
  257. if (element.style.width !== '1000px') {
  258. element.style.width = '1000px';
  259. }
  260. });
  261. }
  262.  
  263. // Osserva le modifiche nel documento e aggiusta le larghezze dei feed
  264. const observer = new MutationObserver(adjustWidths);
  265. observer.observe(document.body, {childList:true, subtree:true});
  266.  
  267. // Aggiusta le larghezze quando la pagina è completamente caricata
  268. window.addEventListener('load', adjustWidths);
  269. });
  270. //////////////////////////////////////////////////////////////////
  271. ////////////////////color picker///////////
  272. const $f = window.jQuery;//$f evita triangolo giallo
  273. const jf = $f.noConflict();
  274. //avvia la funzione dopo che la pagina e stata caricata
  275. $f(document).ready(function() {
  276. // Aggiungi la funzione per il trascinamento limitato allo schermo
  277. function makeDraggableLimited(element) {
  278. element.draggable({
  279. containment: "window",
  280. stop: function(event, ui) {
  281. // Memorizza la posizione dopo il trascinamento
  282. GM_setValue('boxPosition', JSON.stringify(ui.position));//importante
  283. }
  284. });
  285. }
  286. ////////////////////////////
  287. const body=document.body;
  288. const style="position:fixed; top:-3px;left:720px;z-index:99999;"
  289. const box=document.createElement("div");
  290.  
  291. box.id="myMenu";
  292. box.style=style;
  293. jf(box).draggable();
  294. body.append(box);
  295. // Ripristina la posizione salvata se presente
  296. const savedPosition = GM_getValue('boxPosition');
  297. if (savedPosition) {
  298. const parsedPosition = JSON.parse(savedPosition);
  299. $(box).css({ top: parsedPosition.top, left: parsedPosition.left });
  300. }
  301. // Rendi l'elemento trascinabile con limitazioni di schermo
  302. makeDraggableLimited($(box));
  303. ////////////////////////////audio effetto sonoro quando si clicca sulla x rossa
  304. var Sound = new Audio("data:audio/mp3;base64,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2C4dCNdbTPu6uQyGfhEwcUOZ1EDmKZUUUodiyqXb+xpCtkPFldX8tGl6lo9He4uIl36lqy4CQkswA6oJMBvlAHMxiyK4PLIYxynyrJYrEcjyL4L2aS5/KK71It1Khoa/xBPCD25cQHtWmHrh6CoVStb/ey8jxSur+WjV6rR6O9xaHX2qOLQUUwAASpdgB7TkoXo5kNMB+I8TMPavP9AmWzK1VKs+Vhyqz2PcJjoZ4dmDoRoW/3mamKba4vhabatGGZioP3mxJf+6Y2urBW/fxEktCfvFjH/+YlkQVCAQBScuAIpP637T18LA1nCbuq8QwFkUd0ZoPx+FpEVbHHHHcrH1HuVdJAw5p3f9q4hsOyqbdacO2s8UUXDRXaVCWkVLYeHUvgICMERsyVGCXkhCAEAAALQAKIX/+5IEWYACpCLT+w9A4lVEWm9hhkoKoG8zh5hwyU8N5qTzDhHItxzF+IU5GaADS5iGlxVCiP4lRLtkhExOlDQmfgMRBQCiai4KEktglszMt9XWhWGgoKCwgpbFh8X/4/pvTccm+P9xMV00K4FDf/wU1DAABvAFiIyQZXH8XKcwQEk0xcTpRiFNRPiXbJ6OE6VaRw4kDIzIKAQk0AhNUmPqq2UbUgpygoKCwgqbFh8X/N/oKTNi5N8O8FJgvSQVkFHGjPBattaSSTgAXuqxUVShYqxI8VFWOrFWe/4sLUqFhb6f9v/b4sLf/+Kiv//qFvAADZZZSNlayxyVlBA46OysDBA0DERKqIPJVVTO//XqqqWBiVURMDVRBwMSqDB4NVUGK//////aabKdpp///////6qv2xVVTEFNRTMuOTkuM1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//uSBG8P8VgAKeghGABG4iSlDGOAQAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==");
  305. /////////////////////effetto disolvenza box color picker al caricamento pagina
  306. document.getElementById("myMenu").style.display = "none";
  307. $f("#myMenu").fadeIn(5000);
  308. //mostra/nascondi dal menu
  309. function prova() {
  310. var menu = document.getElementById("myMenu");
  311. if (menu.style.display === 'none') {
  312. $f(menu).fadeIn(5000);
  313. } else {
  314. $f(menu).fadeOut(2000);
  315. }
  316. }
  317. GM_registerMenuCommand("nascondi/mostra box",prova);
  318. ///////////////////////////////////////////////////////////////
  319. function logout() {
  320. box.addEventListener("click", function(e) {e.preventDefault(); document.querySelector('form[action^="/logout.php?"').submit(); e.target.innerHTML='<img src="//www.facebook.com/images/loaders/indicator_blue_small.gif"/>'},false);
  321. }
  322. /////////////////////////////////////////////////////////////////
  323. const userdata = {color:'figuccio'}
  324. var mycolor= "#980000";//Inizializza con il valore di default
  325. //imposta la variabile colore
  326. if (/^#+\w+$/.test(GM_getValue(userdata.color))) {mycolor=GM_getValue(userdata.color);}//maggio 2024
  327.  
  328. // salvare i dati personalizzati ._95k9, schermata login
  329. function saveSetting() {GM_setValue(userdata.color,mycolor);
  330. $f('._95k9,div[role="banner"]+div div[role="navigation"], div[role="complementary"], div[aria-label="Facebook"][role="navigation"]').css("background-color",mycolor);
  331. }
  332. // Funzione per osservare i cambiamenti nel DOM
  333. function observeDOMChanges() {
  334. // Creazione di un observer con una funzione di callback
  335. var observer = new MutationObserver(function(mutationsList, observer) {
  336. // Per ogni mutazione rilevata, esegui la funzione saveSetting
  337. for(var mutation of mutationsList) {
  338. saveSetting();
  339. }
  340. });
  341.  
  342. // Configurazione dell'observer per osservare cambiamenti nei nodi figlio e nei nodi attributo
  343. var config = {childList:true, attributes:true, subtree:true};
  344. // Inizia ad osservare il DOM target
  345. observer.observe(document.body, config);
  346. }
  347. // Avvia l'osservazione dei cambiamenti nel DOM
  348. observeDOMChanges();
  349. ////////////////////////////////////////////////
  350. //sponsorizzato
  351. function hideSponsoredSections() {
  352. var sponsor = document.querySelectorAll('[aria-label="Inserzionista"]');
  353. sponsor.forEach(function(sponsor) {
  354. sponsor.style.display = 'none';
  355. });
  356. }
  357.  
  358. hideSponsoredSections();
  359. ////////////////////////////////
  360. // Funzione per nascondere la sezione di creazione della storia
  361. function hideStoryCreation() {
  362. var storyComposer = document.querySelector('[aria-label="Storie"]');
  363. if (storyComposer) {
  364. storyComposer.style.display = 'none';
  365. }
  366. }
  367.  
  368. // Funzione per gestire lo stato della checkbox e la sfocatura della chat
  369. function saveCheckbox() {
  370. GM_setValue("checkboxState", document.getElementById("checkbox1").checked.toString());
  371. var chat = document.querySelector(".xwib8y2 ul");//.xwib8y2 ul
  372. if (document.getElementById("checkbox1").checked) {
  373. chat.style.filter ="blur(7px)";
  374. document.getElementById("checkbox1").value = "Show Chat😃";
  375. } else {
  376. chat.style.filter ="";
  377. document.getElementById("checkbox1").value = "Hide Chat😩";
  378. }
  379. }
  380. // Nascondi la sezione di creazione della storia al caricamento della pagina
  381. hideStoryCreation();
  382.  
  383. // Monitora le modifiche nel DOM per nascondere la sezione anche se viene aggiunta in seguito tramite AJAX
  384. var observer = new MutationObserver(function(mutationsList, observer) {
  385. for(var mutation of mutationsList) {
  386. if (mutation.type === 'childList') {
  387. hideStoryCreation();
  388. hideSponsoredSections();//sponsorizzato
  389. }
  390. }
  391. });
  392.  
  393. observer.observe(document.body, {attributes:false, childList:true, subtree:true});
  394.  
  395. $f(document).ready(function() {
  396. // Gestisci il cambio di stato della checkbox
  397. $f("#checkbox1").change(function(){
  398. GM_setValue("checkboxState", document.getElementById("checkbox1").checked.toString());
  399. saveCheckbox();
  400. });
  401.  
  402. // Carica lo stato della checkbox al caricamento della pagina
  403. if (GM_getValue("checkboxState") === "true") {
  404. $f("#checkbox1").prop("checked", true);
  405. saveCheckbox();
  406. }
  407. });
  408.  
  409. // Sfoca la chat al caricamento della pagina
  410. document.onreadystatechange = function() {
  411. if (document.readyState == "complete" && GM_getValue("checkboxState") === "true") {
  412. saveCheckbox();
  413. }
  414. };
  415.  
  416. // Monitora le modifiche nel DOM per applicare la sfocatura della chat
  417. var chatObserver = new MutationObserver(function(mutations) {
  418. mutations.forEach(function(mutation) {
  419. if (mutation.type === 'childList' && GM_getValue("checkboxState") === "true") {
  420. saveCheckbox();
  421. }
  422. });
  423. });
  424.  
  425. chatObserver.observe(document, {childList:true, subtree:true});
  426. //Imposta lo stile css degli elementi nel menu
  427. GM_addStyle(`
  428. #myMenu {font-family: Helvetica, 'Hiragino Sans GB', 'Microsoft Yahei', Arial, sans-serif;font-size:14px;z-index:2147483648;}
  429.  
  430. #myMenu .button {padding: 3px 6px;line-height:16px;margin-top:6px;display:inline-block;}
  431.  
  432. #colorspan {margin-left:0px; margin-bottom:-19px;color:lime;background-color:brown;border:1px solid yellow;border-radius:5px;cursor:pointer;}
  433.  
  434. #setuiface{width:auto;height:25px; margin-top:-6px;margin-left:-4px; margin-right:-4px;margin-bottom:0px;border-width:1px;color:lime;}
  435.  
  436. #colorinput{margin-left:4px; margin-top:12px; background-color:#3b3b3b; color:red;border:1px solid yellow;border-radius:5px;height:20px;width:70px;cursor:pointer;}
  437.  
  438. #demo{border:1px solid yellow;border-radius:5px;cursor:pointer;text-align:center;margin-top:-15px;margin-left:86px;font-size:14px;width:max-content;}
  439.  
  440. input[type=checkbox] {accent-color:red;}
  441.  
  442. [type=checkbox]:after {
  443. content: attr(value);
  444. margin: -2px 22px;
  445. vertical-align:top;
  446. display: ;
  447. white-space:nowrap;
  448. color:lime;
  449. background:brown;
  450. cursor:pointer; /*sulla scritta*/
  451. }
  452.  
  453. /* bordo casella */
  454. input[type="checkbox"]{
  455. outline: 3px solid lime;
  456. }
  457.  
  458. /*ingrandisce checkbox */
  459. input[type="checkbox"] {
  460. cursor:pointer; /*sulla checkbox*/
  461. width:18px;
  462. height:18px;
  463. }
  464.  
  465. /*se cliccata*/
  466. input[type="checkbox"]:checked {
  467. outline: 3px solid yellow;
  468. }
  469.  
  470. /*se cliccata colore testo*/
  471. input[type=checkbox]:checked::after{
  472. content: attr(value);
  473. margin: -2px 22px;
  474. vertical-align:top;
  475. white-space:nowrap;
  476. color:red;
  477. background:aquamarine;
  478. cursor:pointer; /*sulla scritta*/
  479. }
  480. `);
  481. ///////////////////////clock
  482. setInterval(myTimer,90);
  483. function myTimer() {
  484. var d = new Date();
  485. var t = d.toLocaleTimeString();
  486. var mm = d.getMilliseconds();
  487. var date = new Date().toLocaleString('it', {'weekday': 'short', 'month': '2-digit', 'day': '2-digit','year':'numeric'
  488. });
  489. document.getElementById("demo").innerHTML = date + " " + t + ":" + mm;
  490. }
  491. //elemento html . width:380px evita che spostandolo hai lati cambi di dimensioni/ </button> Color<lasciare distanziato cosi
  492. box.innerHTML=`
  493. <fieldset style="background:#3b3b3b;border:2px solid red;color:lime;border-radius:7px;text-align:left;height:39px;width:330px;">
  494. <div id="demo" title="Data-ora" ></div>
  495. <legend>Time</legend>
  496. <div id=setuiface>
  497.  
  498. <button id="colorspan"title="Hex value">${mycolor}</button><input type="color" list="colors" id="colorinput" value="${mycolor}" title="Color picker">
  499. <span class="button" title="Esci" id='logout' style="background-color:red;border:1px solid yellow;border-radius:3px;cursor:pointer;">Logout</span>
  500. <span class="button" title="Chiudi" id='close' style="background-color:red; color:lime;border:1px solid yellow;border-radius:50%;cursor:pointer;">X</span>
  501. <input type="checkbox" id="checkbox1" title="Sfoca" value="Hide Chat😩">
  502.  
  503. <datalist id="colors">
  504.  
  505. </datalist>
  506. </fieldset>
  507. `;
  508.  
  509. //Una serie di elementi get
  510. var colorspan=document.querySelector('#colorspan');
  511. var colorinput=document.querySelector('#colorinput');
  512. var MenuClose=document.querySelector('#close');
  513. var Menulogout=document.querySelector('#logout');//funzione logout
  514. //fa vedere la modifica colore
  515. colorinput.addEventListener('input', function(event){colorChange(event)},false);
  516. $f('._95k9,div[role="banner"]+div div[role="navigation"], div[role="complementary"], div[aria-label="Facebook"][role="navigation"]').css("background-color",mycolor);
  517. //chiude dalla x rossa
  518. MenuClose.addEventListener('click',prova,false);
  519. //richiama effetto sonoro chiudendo con la x rossa
  520. MenuClose.onclick = function() {Sound.play();};
  521. Menulogout.addEventListener('click',logout,false);//funzione logout
  522. /////////////////////////////////////////////////////////////////////////
  523. function colorChange (e) {
  524. mycolor = e.target.value;
  525. colorspan.innerHTML=e.target.value;
  526. document.getElementById('colorspan').value =mycolor;//value hex
  527. //colore immediatamente visibile
  528. $f('._95k9,div[role="banner"]+div div[role="navigation"], div[role="complementary"], div[aria-label="Facebook"][role="navigation"]').css("background-color",mycolor);
  529. GM_setValue(userdata.color, mycolor);
  530. }
  531. document.getElementById('colorspan').value =mycolor;//value hex
  532. document.getElementById('colorinput').value =mycolor;//il colore del selettore e uguale a quello della pagina
  533. //})();
  534. //////////////////no login recent (gennaio 2025)
  535. window.setTimeout(clearRecentLogins, 100);
  536. function clearRecentLogins() {
  537. if (document.getElementById('email')) {
  538. document.getElementById('email').value = "";
  539. document.getElementById('email').focus();
  540. }
  541. var recentLogins = document.querySelectorAll('.removableItem a[role="button"][ajaxify^="/login/device-based"]');
  542. if (recentLogins.length === 0) {
  543. return;
  544. }
  545. recentLogins.forEach(function(login) {
  546. login.click();
  547. });
  548. }
  549. })();
  550.  
  551. //////////
  552.  
  553. })();