2024年12月4日水曜日

Bookmarklet で jQuery を使う方法

Bookmarklet で jQuery を使う方法

概要

もしページ内ですでに読み込まれている場合はそのまま使えます
読み込んでいない場合はブックマークレット側で読み込めば使えるようになります

環境

  • Chrome 131.0.6778.86

ブックマークレット

javascript:(function() {
    if (!window.jQuery) {
        let script = document.createElement('script');
        script.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
        script.type = 'text/javascript';
        script.onload = runBookmarklet;
        document.getElementsByTagName('head')[0].appendChild(script);
    } else {
        runBookmarklet();
    }
    function runBookmarklet() {
        alert('jQuery バージョン: ' + $.fn.jquery);
    }
})();

最後に

他のライブラリも同じ仕組みで読み込めると思います
バージョンなどは面倒ですが直接書き込むしかないです

2024年12月3日火曜日

サイト内の画像だけを抽出し表示するブックマークレット

サイト内の画像だけを抽出し表示するブックマークレット

概要

上からずらっと表示します

環境

  • Chrome 131.0.6778.86

ブックマークレット

javascript:(function() {
    const images = Array.from(document.querySelectorAll('img'));
    if (images.length === 0) {
        alert('画像が見つかりませんでした');
        return;
    }
    document.body.innerHTML = '';
    document.body.style.margin = '0';
    document.body.style.padding = '0';
    document.body.style.backgroundColor = 'black';
    images.forEach(img => {
        const newImg = document.createElement('img');
        newImg.src = img.src;
        newImg.style.display = 'block';
        newImg.style.margin = '10px auto';
        newImg.style.maxWidth = '90%';
        newImg.style.height = 'auto';
        document.body.appendChild(newImg);
    });
    alert(`${images.length} 個の画像を表示しました`);
})();

最後に

画像だけシンプルに表示したい場合に使えます
スタイルも全部解除するのでどんなページにも使えるはずです

2024年12月2日月曜日

GIGOのオンクレでプレイ中のプライズのみ表示するブックマークレット

GIGOのオンクレでプレイ中のプライズのみ表示するブックマークレット

概要

ブックマークレットを紹介します
DOM が変わった場合は適宜クラス名などを変更してください

環境

  • Chrome 131.0.6778.86

ブックマークレット

javascript:(function() {
    const targetUlClass = 'prizes__list';
    var allListItems = document.querySelectorAll(`ul.${targetUlClass} > li`);
    allListItems.forEach(function(li) {
        var spans = li.querySelectorAll('span');
        var hasTargetBackground = false;
        spans.forEach(function(span) {
            var bgColor = window.getComputedStyle(span).backgroundColor;
            if (bgColor === 'rgb(255, 226, 108)') {
                hasTargetBackground = true;
            }
        });
        if (hasTargetBackground) {
            li.style.display = '';
        } else {
            li.style.display = 'none';
        }
    });
    var highestIntervalId = setInterval(() => {}, 1000);
    for (var i = 0; i <= highestIntervalId; i++) {
        clearInterval(i);
    }
})();

最後に

ページのリロードする API のコールも停止しているので適宜手動でリロードしてください