昨日改

  • /*
     * @title 昨日改
     * @description 「userId」で指定したユーザーあるいは、はてなドメインならURLから取得したユーザーIDのブックマーク一覧ページを画面左上に表示されるカレンダーから選択した日付別に表示するブックマークレット。
     * @include http://*
     * @license MIT License
     * @require 
     */
    
    
    javascript:(function(){
        // 1. ユーザーIDの取得
        let userId = 'mame-tanuki';
        if (location.host === 'b.hatena.ne.jp') {
            const match = location.pathname.match(/^\/([^\/]+)\//);
            if (match) userId = match[1];
        }
    
        // 2. 入力フォーム(date型)の作成
        const input = document.createElement('input');
        input.type = 'date';
        
        // スタイル調整:スマホでも見やすく中央に配置
        Object.assign(input.style, {
            position: 'fixed',
            top: '20%', // スマホのキーボードやパネルを考慮して少し上に
            left: '50%',
            transform: 'translateX(-50%)',
            zIndex: '2147483647', // 最大の重なり順
            padding: '12px',
            fontSize: '18px', // モバイルでズームされないサイズ
            border: '2px solid #00A4DE',
            borderRadius: '8px',
            backgroundColor: '#fff',
            boxShadow: '0 4px 20px rgba(0,0,0,0.4)'
        });
    
        // 初期値を「昨日」に設定
        const d = new Date();
        d.setDate(d.getDate() - 1);
        input.value = d.toISOString().split('T')[0];
    
        // 3. 日付が選択された時の処理
        input.onchange = function() {
            const val = input.value.replace(/-/g, ''); 
            if (val) {
                location.href = `https://b.hatena.ne.jp/${userId}/${val}`;
            }
            // 遷移するので削除は不要だが一応
            if(input.parentNode) document.body.removeChild(input);
        };
    
        // 【改善点】スマホで消える対策:onblurをあえて設定しない、
        // もしくはクリック以外の意図しない動作で消えないように調整
        // キャンセルしたい場合は、日付以外の場所をタップしても消えるように別途実装も可能
    
        // 4. 画面に追加して実行
        document.body.appendChild(input);
        
        // showPicker() は最新ブラウザでカレンダーを自動展開するメソッド
        if (input.showPicker) {
            input.showPicker();
        } else {
            input.focus();
        }
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2026/03/04 00:19:03 - 2 days ago
  2. 2026/03/04 00:18:08 - 2 days ago
  3. 2026/03/04 00:15:35 - 2 days ago
  4. 2026/03/03 00:11:52 - 03/03
  5. 2026/03/03 00:11:28 - 03/03
  6. 2026/03/03 00:08:08 - 03/03