タグ
#JavaScript
JavaScriptに関する記事を公開しています。
navigator.share の判定だけでは PC でも共有シートが出る
スマホでシェアボタンを押すとログインを求められるので、共有シートに切り替えたところ、PC でも切り替わりました。Chrome・Safari・Edge はデスクトップでも Web Share API に対応しているためです。日本語で流通している判定方法は navigator.share の存在チェックですが、これは Chrome デスクトップが非対応だった頃の前提で、今は分けたい境界と一致しません。(pointer: coarse) と組み合わせて絞ります。
Google Analytics を入れずに Cloudflare でブログを監視する
ブログ運用の一次監視に欲しいのは「配信が壊れていないか」で、それは GA4(gtag.js)を入れなくても取れます。GA4 のクライアント計測とは別レイヤーの Cloudflare エッジ計測(GraphQL Analytics API の httpRequestsAdaptiveGroups)を GitHub Actions で回し、死活チェック・週次レポート・Issue 自動起票までを組む監視設計を、GA との役割分担つきでまとめます。
BudouX を Cloudflare Workers で使うと window is not defined
日本語の改行位置制御ライブラリ BudouX を Cloudflare Workers など DOM のないサーバー環境で import すると、エントリポイントが巻き込む win.js のトップレベル window 参照で即死します。budoux/module/parser.js の Parser とモデルを直接 import する回避策と、wbr + word-break: keep-all の実装例をまとめます。
日本語 URL の 301 リダイレクトだけが効かない原因
WordPress 移行のリダイレクトで、英語スラッグは動くのに日本語スラッグだけ 404 になる原因は percent-encoding の大文字・小文字でした。ブラウザは大文字(RFC 3986 の正規形)で送り、WordPress は小文字で保存する。URL API が既エンコード文字列を正規化しない仕様と、decode→encode による正規化をまとめます。
EmDash の definePlugin を外すとビルドは通るのに機能が止まる
Vite の defineConfig のような define* ヘルパーを「型のための identity 関数」と思い込んでインライン化すると、実行時の capability 正規化がスキップされ、ビルド・型チェック・デプロイが全部成功したまま通知機能だけが静かに死ぬ——その機構と、静的チェックで検出できない理由、対策をまとめます。
JavaScriptを最適化してページ表示を高速化する
JavaScriptの主な最適化アプローチは、「圧縮」「ファイルのバンドル」「軽量ライブラリの使用」です。ライブラリを使う場合は「読み込む順番」にも気をつけなければいけません。ファイルサイズが大きくなりがちなので、上手く最適化しましょう。