您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
더블콘이 동시에 재생될 수 있게 전부 불러온 뒤 화면에 보여지게 변경합니다
// ==UserScript== // @name Syncon // @namespace syncon // @description 더블콘이 동시에 재생될 수 있게 전부 불러온 뒤 화면에 보여지게 변경합니다 // @version 0.1.0 // @author Sangha Lee // @copyright 2024, Sangha Lee // @license MIT // @match https://gall.dcinside.com/board/view/* // @match https://gall.dcinside.com/mgallery/board/view/* // @match https://gall.dcinside.com/mini/board/view/* // @match https://gall.dcinside.com/person/board/view/* // @icon https://nstatic.dcinside.com/dc/m/img/dcinside_icon.png // ==/UserScript== /** * @param {T[]} array * @param {number} n * @returns {T[][]} */ function* chunks (array, n) { for (let i = 0; i < array.length; i += n) { yield array.slice(i, i + n) } } function sync () { for (const $chunk of [ ...chunks([...document.querySelectorAll('.comment_dccon.double video')], 2) ]) { const promises = $chunk.map( /** @returns {Promise<HTMLImageElement>} */ $video => new Promise((resolve, reject) => { // fuck off autoplay permission, we fully gifing const $img = document.createElement('img') $img.classList.add('written_dccon') $img.src = $video.getAttribute('onmousedown').split("'")[1] if ($video.classList.contains('bigdccon')) { $img.classList.add('bigdccon') } $img.addEventListener('load', () => resolve($img)) $img.addEventListener('error', reject) $video.insertAdjacentElement('beforebegin', $img) $video.remove() }) ) Promise.all(promises) .then($imgs => $imgs.forEach($img => { const src = $img.src $img.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACw=' setTimeout(() => $img.src = src, 100) })) } } new MutationObserver(sync) .observe(document.querySelector('.comment_wrap'), { childList: true }) sync()