はじめに
jQuery Select2 で、複数選択(multiple)を有効にした場合の、最大選択可能数を設定する方法を調べた。
TL;DR
$('xx').select2({maximumSelectionLength: n})で最大選択可能数を設定できるmultipleは<select multiple>でも、select2({multiple: "multiple"})でも良いlanguage: maximumSelectedでメッセージをカスタマイズできる
jQuery Select2 で、複数選択(multiple)を有効にした場合の、最大選択可能数を設定する方法を調べた。
$('xx').select2({maximumSelectionLength: n}) で最大選択可能数を設定できるmultiple は <select multiple> でも、select2({multiple: "multiple"}) でも良いlanguage: maximumSelected でメッセージをカスタマイズできるRails で favicn を設定する方法(と、ついでに favicon そのものの生成)についてまとめた。
favicon_link_tag を使う/public 配下の場合は / 始まりで指定/app/assets など配下の場合は / 無しで指定簡易的に「あなたはxx歳以上ですか?」の年齢認証ページを挟む方法について整理した。
前提や要件は以下。
ちょっと分かりづらいけど。
Rails で静的ページを作成する方法について調べて、thoughtbot/high_voltage に辿り着いたので使い方を整理した。
Gemfile に gem 'high_voltage' を追加して bundle でインストールapp/views/pages/ 配下に静的ページ用の view ファイルを作成link_to 'About', page_path('about') のようにすると静的ページへのリンクを生成可能jQuery を使わずに Lazy Load できる ApoorvSaxena/lozad.js の使い方を整理した。
<img class="lozad" src="dummy" data-src="image"> のように指定class="lozad" を追加data-src に Lazy Load 対象画像、src にダミー画像を設定lozad().observe() を実行して Lazy Load 起動(監視処理の起動)IntersectionObserver を使っているので SEO 的にも良い(らしい)2019年11月時点で主要な SNS である(と個人的に思う) Twitter, Facebook, LINE への共有リンクの設定方法についてまとめた。
https://twitter.com/intent/tweet?text=<text>via, related, url, hashtagshttps://www.facebook.com/share.php?u=<url>https://line.me/R/msg/text/?<text>Rails で OGP meta tags を設定する方法について整理した。この例では content_for を使ってページ別に定義する方法を用いている。
yield(:ogp) を追加し、ページ別の設定内容を展開content_for(:ogp) でページ別の設定内容を記述サイトのタイトルは document.title で取得できるが、description は一発で取れない(専用の関数が無い)ので、簡単に取得する方法を調べた。
Array.prototype.slice.call(document.head.children).find(t => t.tagName === "META" && t.name === "description") で取れるArray.prototype.slice.call と組み合わせると、Array.prototype のメソッドも使えるtagName や name などを変更すると、他のタグも一撃で取れるはずArray.from(document.head.children).find(t => t.tagName === "META" && t.name === "description") でも良いArray.from は IE 非対応なので注意Chrome 拡張機能を React などで構成された SPA で動作させる方法 で、background から JS を注入する方法を整理した。が、別要件で上手くいかないケースがあったのでメッセージドリブンで処理タイミングを通知する方法を整理した。
chrome.runtime.onMessage.addListener を使ってメッセージを待つchrome.tabs.sendMessage を使ってメッセージを送るchrome.tabs.onUpdated.addListener でタブの更新の検出や URL の絞り込みを行うとあるページ向けに作っていた拡張機能が上手く動作しなくなったので確認すると、React.js を利用した SPA に変更されていた。
リロードするとちゃんと動作するのだが、クリックなどでページ遷移すると拡張機能が動作しないので、対応方法について調べた。
続編: Chrome 拡張機能で background scripts から content scripts にメッセージを送信する
chrome.tabs.onUpdated.addListener でページ遷移を検知chrome.tabs.executeScript で JS を注入