はじめに

Vue + Cordova の iOS アプリを Xcode v11 でビルドすると Cannot read property 'toLowerCase' of undefined のエラーが出たので、解決方法について整理した。

TL;DR

  • Xcode v11 と cordova-ios v4 系は互換性がない
    • vue add cordova でインストールされるのは cordova-ios v4.5.5 (2019/11/21 現在)
  • cordova platform rm ioscordova platform add ios@latest で解決
続きを読む

はじめに

Vue.js + TypeScript で CDN からスクリプトを読み込んで、xxxx.tswindow.hoge にアクセスするコードをビルドすると Property 'hoge' does not exist on type 'Window'. のビルドエラーが出たので、解決方法を調べて整理した。

TL;DR

  • declare global を使う
    • declare global { interface Window { hoge: any } }
  • ↑ の後に window.hoge = window.hoge || {};
続きを読む

はじめに

最近のサイトでよく見かける「このサイトでは 〜 Cookie を利用します」という表示を、osano/cookieconsent を用いて簡単に実現する方法について調べた。

TL;DR

  • osano/cookieconsent で簡単に表示を追加可能
  • 公式ページ で簡単に見た目を変更可能
  • オプションが豊富なため、細かいカスタマイズもできる
続きを読む

はじめに

jQuery Select2 で、選択肢に存在しない情報を動的に追加する方法を調べた。

ユーザー入力で一致する選択肢がある場合は既存選択肢を、そうでなければユーザー入力をそのまま選択肢として追加する、というイメージ。

TL;DR

  • tags: true を指定すると選択肢を動的に追加できる
  • createTag で選択肢追加時の挙動を制御できる
  • multiple の場合は複数選択しを追加できる
続きを読む

はじめに

jQuery Select2 で、ajax で選択肢を取得する方法方法を調べた。

TL;DR

  • ajax オプション内で設定
  • url, data オプションで API Request に関する設定
  • processResults オプションで API Response を受信した後の処理
  • templateResult, templateSelection オプションで見た目(HTML)の設定
続きを読む

はじめに

jQuery Select2 で、複数選択(multiple)を有効にした場合の、最大選択可能数を設定する方法を調べた。

TL;DR

  • $('xx').select2({maximumSelectionLength: n}) で最大選択可能数を設定できる
  • multiple<select multiple> でも、select2({multiple: "multiple"}) でも良い
  • language: maximumSelected でメッセージをカスタマイズできる
続きを読む

Lozad.js で Lazy Load (非 jQuery)



カテゴリー Programming

はじめに

jQuery を使わずに Lazy Load できる ApoorvSaxena/lozad.js の使い方を整理した。

TL;DR

  • <img class="lozad" src="dummy" data-src="image"> のように指定
    • class="lozad" を追加
    • data-src に Lazy Load 対象画像、src にダミー画像を設定
  • lozad().observe() を実行して Lazy Load 起動(監視処理の起動)
  • IntersectionObserver を使っているので SEO 的にも良い(らしい)
続きを読む

はじめに

サイトのタイトルは document.title で取得できるが、description は一発で取れない(専用の関数が無い)ので、簡単に取得する方法を調べた。

TL;DR

  • Array.prototype.slice.call(document.head.children).find(t => t.tagName === "META" && t.name === "description") で取れる
    • Array.prototype.slice.call と組み合わせると、Array.prototype のメソッドも使える
    • tagNamename などを変更すると、他のタグも一撃で取れるはず
  • Array.from(document.head.children).find(t => t.tagName === "META" && t.name === "description") でも良い
続きを読む

はじめに

Chrome 拡張機能を React などで構成された SPA で動作させる方法 で、background から JS を注入する方法を整理した。が、別要件で上手くいかないケースがあったのでメッセージドリブンで処理タイミングを通知する方法を整理した。

TL;DR

続きを読む

はじめに

とあるページ向けに作っていた拡張機能が上手く動作しなくなったので確認すると、React.js を利用した SPA に変更されていた。

リロードするとちゃんと動作するのだが、クリックなどでページ遷移すると拡張機能が動作しないので、対応方法について調べた。

続編: Chrome 拡張機能で background scripts から content scripts にメッセージを送信する

TL;DR

続きを読む

r17n


Softwear Engineer


Fukuoka