{"id":1318,"date":"2026-08-17T07:00:00","date_gmt":"2026-08-17T05:00:00","guid":{"rendered":"https:\/\/iconoclaste.net\/blog\/?p=1318"},"modified":"2026-08-16T09:48:45","modified_gmt":"2026-08-16T07:48:45","slug":"fqtbtm","status":"publish","type":"post","link":"https:\/\/iconoclaste.net\/blog\/2026\/08\/17\/fqtbtm\/","title":{"rendered":"FQTBTM*"},"content":{"rendered":"\n<!--\n  SALUT TATA \u2013 jouet interactif iconoclaste.net\n  \u2192 Coller TOUT ce code dans un bloc \u00ab HTML personnalis\u00e9 \u00bb (Gutenberg)\n  \u2192 Fonctionne aussi dans un widget HTML ou un template\n  Comportement :\n  Phase A (d\u00e9faut) :\n  - a1 \u2192 a2 \u2192 a3 \u2192 a4 \u2192 a5 \u2192 a4 \u2192 a3 \u2192 a2 \u2192 a1 \u2026\n  - Pause de 1 seconde sur a1\n  - Clic \u2192 passe en phase B\n  Phase B :\n  - b01 \u2192 b02 \u2192 \u2026 \u2192 b17 (s\u00e9quence unique)\n  Phase C (apr\u00e8s b17) :\n  - c1 \u2192 c2 \u2192 c3 \u2192 c2 \u2192 c1 \u2192 c2 \u2192 \u2026 (ping-pong)\n  - Clic \u2192 flash tr\u00e8s rapide de zoom.webp puis retour sur a1 (phase A)\n  - Centr\u00e9es horizontalement, fond transparent, bordure 1px #ff33ff\n  - Taille ~550\u00d7550\n  iconoclaste.net \u2013 2026-08-10\n-->\n<div id=\"iconoclaste-salut-tata\">\n  <img fetchpriority=\"high\" id=\"salut-tata-img\"\n       src=\"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_1_1.webp\"\n       width=\"550\"\n       height=\"550\"\n       alt=\"Salut Tata\"\n       loading=\"eager\"\n       decoding=\"async\">\n<\/div>\n<style>\n  #iconoclaste-salut-tata {\n    position: relative;\n    max-width: 550px;\n    margin: 0 auto 1.5em;\n    line-height: 0;\n    background: transparent !important;\n    -webkit-tap-highlight-color: transparent;\n    user-select: none;\n    -webkit-user-select: none;\n    text-align: center;\n    cursor: pointer;\n  }\n  #iconoclaste-salut-tata.phase-b {\n    cursor: default;\n  }\n  #iconoclaste-salut-tata.phase-c {\n    cursor: pointer;\n  }\n  #iconoclaste-salut-tata.phase-zoom {\n    cursor: default;\n  }\n  #iconoclaste-salut-tata img {\n    display: block;\n    width: 100%;\n    max-width: 550px;\n    height: auto;\n    margin: 0 auto;\n    vertical-align: top;\n    pointer-events: none;\n    background: transparent;\n    border: 1px solid #ff33ff;\n    box-sizing: border-box;\n  }\n<\/style>\n<script>\n(function () {\n  \"use strict\";\n  if (window.__iconoclasteSalutTataInit) return;\n  window.__iconoclasteSalutTataInit = true;\n  \/\/ \u2014\u2014\u2014 Frames \u2014\u2014\u2014\n  const FRAMES_A = [\n    \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_1_1.webp\",\n    \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_1_2.webp\",\n    \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_1_3.webp\",\n    \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_1_4.webp\",\n    \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_1_5.webp\"\n  ];\n  const FRAMES_B = [];\n  for (let i = 1; i <= 17; i++) {\n    const num = String(i).padStart(2, \"0\");\n    FRAMES_B.push(\"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_2_\" + num + \".webp\");\n  }\n  const FRAMES_C = [\n    \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_3_1.webp\",\n    \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_3_2.webp\",\n    \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/salut_tata_3_3.webp\"\n  ];\n  const ZOOM_SRC = \"https:\/\/iconoclaste.net\/blog\/wp-content\/uploads\/2026\/08\/zoom.webp\";\n  const SPEED          = 130;   \/\/ ms entre images (A, B, C)\n  const PAUSE          = 1000;  \/\/ pause 1s sur a1\n  const ZOOM_DURATION  = 280;   \/\/ flash tr\u00e8s rapide de zoom.webp\n  function init() {\n    const container = document.getElementById(\"iconoclaste-salut-tata\");\n    const img       = document.getElementById(\"salut-tata-img\");\n    if (!container || !img) return;\n    \/\/ Pr\u00e9chargement de tout\n    FRAMES_A.concat(FRAMES_B, FRAMES_C, [ZOOM_SRC]).forEach(function (src) {\n      const preload = new Image();\n      preload.src = src;\n    });\n    let phase      = \"A\";   \/\/ \"A\" | \"B\" | \"C\" | \"ZOOM\"\n    let frameIndex = 0;\n    let direction  = 1;\n    let timer      = null;\n    let running    = true;\n    function clearTimer() {\n      if (timer) {\n        clearTimeout(timer);\n        timer = null;\n      }\n    }\n    function setPhaseClass() {\n      container.classList.remove(\"phase-b\", \"phase-c\", \"phase-zoom\");\n      if (phase === \"B\")    container.classList.add(\"phase-b\");\n      if (phase === \"C\")    container.classList.add(\"phase-c\");\n      if (phase === \"ZOOM\") container.classList.add(\"phase-zoom\");\n    }\n    \/\/ \u2014\u2014\u2014 Phase A (ping-pong + pause a1) \u2014\u2014\u2014\n    function scheduleA() {\n      if (!running || phase !== \"A\") return;\n      const delay = (frameIndex === 0) ? PAUSE : SPEED;\n      timer = setTimeout(function () {\n        if (phase !== \"A\") return;\n        let next = frameIndex + direction;\n        if (next >= FRAMES_A.length) {\n          direction = -1;\n          next = FRAMES_A.length - 2;\n        } else if (next < 0) {\n          direction = 1;\n          next = 1;\n        }\n        frameIndex = next;\n        img.src = FRAMES_A[frameIndex];\n        scheduleA();\n      }, delay);\n    }\n    \/\/ \u2014\u2014\u2014 Phase B (s\u00e9quentiel 01 \u2192 17) \u2014\u2014\u2014\n    function scheduleB() {\n      if (!running || phase !== \"B\") return;\n      timer = setTimeout(function () {\n        if (phase !== \"B\") return;\n        frameIndex++;\n        if (frameIndex >= FRAMES_B.length) {\n          \/\/ Fin de B \u2192 passer en C\n          phase = \"C\";\n          frameIndex = 0;\n          direction = 1;\n          setPhaseClass();\n          img.src = FRAMES_C[0];\n          scheduleC();\n          return;\n        }\n        img.src = FRAMES_B[frameIndex];\n        scheduleB();\n      }, SPEED);\n    }\n    \/\/ \u2014\u2014\u2014 Phase C (ping-pong c1\u2194c3) \u2014\u2014\u2014\n    function scheduleC() {\n      if (!running || phase !== \"C\") return;\n      timer = setTimeout(function () {\n        if (phase !== \"C\") return;\n        let next = frameIndex + direction;\n        if (next >= FRAMES_C.length) {\n          direction = -1;\n          next = FRAMES_C.length - 2;\n        } else if (next < 0) {\n          direction = 1;\n          next = 1;\n        }\n        frameIndex = next;\n        img.src = FRAMES_C[frameIndex];\n        scheduleC();\n      }, SPEED);\n    }\n    \/\/ \u2014\u2014\u2014 Phase ZOOM puis retour A \u2014\u2014\u2014\n    function startZoom() {\n      phase = \"ZOOM\";\n      setPhaseClass();\n      img.src = ZOOM_SRC;\n      timer = setTimeout(function () {\n        \/\/ Retour \u00e0 la phase A sur a1\n        phase = \"A\";\n        frameIndex = 0;\n        direction = 1;\n        setPhaseClass();\n        img.src = FRAMES_A[0];\n        startCurrentPhase();\n      }, ZOOM_DURATION);\n    }\n    function startCurrentPhase() {\n      clearTimer();\n      running = true;\n      setPhaseClass();\n      if (phase === \"A\") {\n        scheduleA();\n      } else if (phase === \"B\") {\n        scheduleB();\n      } else if (phase === \"C\") {\n        scheduleC();\n      }\n      \/\/ ZOOM est g\u00e9r\u00e9 par startZoom()\n    }\n    function stopAll() {\n      running = false;\n      clearTimer();\n    }\n    \/\/ \u2014\u2014\u2014 Clics \u2014\u2014\u2014\n    container.addEventListener(\"click\", function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      if (phase === \"A\") {\n        \/\/ A \u2192 B\n        stopAll();\n        phase = \"B\";\n        frameIndex = 0;\n        direction = 1;\n        setPhaseClass();\n        img.src = FRAMES_B[0];\n        startCurrentPhase();\n      } else if (phase === \"C\") {\n        \/\/ C \u2192 ZOOM \u2192 A\n        stopAll();\n        startZoom();\n      }\n      \/\/ B et ZOOM : pas de clic\n    }, { passive: false });\n    \/\/ D\u00e9marrage\n    startCurrentPhase();\n    \/\/ Pause onglet arri\u00e8re-plan\n    document.addEventListener(\"visibilitychange\", function () {\n      if (document.hidden) {\n        stopAll();\n      } else {\n        if (phase === \"ZOOM\") {\n          \/\/ Si on revient pendant le zoom, on force le retour A\n          phase = \"A\";\n          frameIndex = 0;\n          direction = 1;\n          img.src = FRAMES_A[0];\n        }\n        startCurrentPhase();\n      }\n    });\n  }\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", init);\n  } else {\n    init();\n  }\n})();\n<\/script>\n\n\n\n<h4 class=\"wp-block-heading\">FQTBTM des Snuls, tu connais?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Inspir\u00e9 du nom d'un groupe de voleurs de poules \u00abNTM\u00bb et du rap d\u00e9gueulasse qui l'accompagne, laisse sous entendre qu'avant d'aller au lit, tu dois faire une bise \u00e0 ta m\u00e8re. Le gag principal repose sur le double sens de \u00ab baise \u00bb en Belgique (o\u00f9 \u00ab une baise \u00bb = un bisou) et le sens fran\u00e7ais cru du groupe sus-mentionn\u00e9. <br \/>Et comme le bon go\u00fbt ne laissent rien au hasard, il existe un clip\/bonus o\u00f9 quelques snuls avec Benny B, Daddy K et le troisi\u00e8me dont j'ai perdu le nom,mais je m'en fout, y font les cons.<br \/>C\u2019est [\u00e9videmment] film\u00e9 dans des conditions de merde absolue.<br \/>C\u2019est le niveau de qualit\u00e9 snulle attendue: trash, mal fichue, surement improvis\u00e9, et compl\u00e8tement touch\u00e9 de la sainte iconoclastie!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>FQTBTM des Snuls, tu connais? Inspir\u00e9 du nom d&rsquo;un groupe de voleurs de poules \u00abNTM\u00bb et du rap d\u00e9gueulasse qui l&rsquo;accompagne, laisse sous entendre qu&rsquo;avant d&rsquo;aller au lit, tu dois faire une bise \u00e0 ta m\u00e8re. Le gag principal repose sur le double sens de \u00ab baise \u00bb en Belgique (o\u00f9 \u00ab une baise \u00bb [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[269,93],"tags":[302,301,300,137],"class_list":["post-1318","post","type-post","status-publish","format-standard","hentry","category-experiences","category-maitres-iconoclastiques","tag-pornstar","tag-reagan-foxx","tag-snuls","tag-xxx"],"_links":{"self":[{"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/posts\/1318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/comments?post=1318"}],"version-history":[{"count":6,"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/posts\/1318\/revisions"}],"predecessor-version":[{"id":1387,"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/posts\/1318\/revisions\/1387"}],"wp:attachment":[{"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/media?parent=1318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/categories?post=1318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iconoclaste.net\/blog\/wp-json\/wp\/v2\/tags?post=1318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}