サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
pisuke-code.com
JavaScriptにはこういう関数はありません。 HTML特殊文字をエスケープできる関数PHPのhtmlspecialchars的な関数だから自作する必要があります。 いくつか方法があったので、 JSで特殊文字エスケープの方法をまとめました。 大前提.HTMLでエスケープすべき特殊文字とはググれば出てくるけど次の6つです。 「&」 : アンパサンド「'」 : シングルクォート「」 : アクサングラーブ,「"」 : ダブルクオート「<」 : 小なり記号「>」 : 大なり記号関係ないけど 「」 ってアクサングラーブ(またはグレーブアクセント)と呼ぶらしいです。こんな名前があるとは知らなかった これらをエスケープするのはXSS攻撃を防ぐためです。(XSS攻撃については次記事を参照 : https://pisuke-code.com/xss-attack-by-one-line-javascri
JavaScriptで要素をオブジェクトとして扱う方法は主に次の2つです。 jQueryオブジェクト DOM要素(DOM Element) ライブラリを入れてjQuer内で要素を扱うときはjQueryオブジェクトが、 純粋なライブラリなしのJavaScript内で要素を扱うときはDOM要素が使われます。 そしてこの2つはある方法を使えば互いに変換することも可能です。 ということでjQueryオブジェクトとDOM要素の変換方法について解説 ここでは jQueryオブジェクト ⇒ DOM要素 DOM要素 ⇒ jQueryオブジェクト に変換する方法についてコード例と一緒に紹介していきます。 jQueryオブジェクト ⇒ DOM要素 まず初めはjQueryオブジェクトからDOM要素に変換する方法 こちらはjQueryオブジェクトに対してget関数を呼び出すだけです。 例えば次はjQuery内で
例えば画像素材サイトとかだと・・・ 素材ページに飛んだら、自動でダウンロードみたいな機能がついてると思います。 こういう自動ダウンロードは意外と簡単に実装できます。 ここでは JavaScript、jQuery 両方でのやり方・コード例 をまとめてみました。 リンクから手動ダウンロードするやり方 まず1つめは画像のDLリンクを生成する方法について 画像のURLではなく、データ自体をダウンロードするリンクを作るということです。 その手順を箇条書きすると、こんな感じ 画像データをURL化する そのURLを元にリンク要素作成 生成したリンクを埋め込む 大事なのは「画像データをURL化する」というところですね。 JavaScript、jQueryを使ったやり方は次の通り JavaScriptでダウンロードリンクを作るコード例 まずはjQueryとかライブラリを使わず、素のJSでやる方法について コ
サーバーに大きなデータを送信するとき・・・ できるだけデータ量を小さくしたい サーバーに負荷をかけたくない そういうときはクライアント側(JS側)で圧縮したいときがあります。 僕自身そういう場面があったので、 ここでは JavaScriptで gzip圧縮・展開できる zlib.js というライブラリ を使ってみました。 その忘備録。これから非サーバー側からgzip圧縮したい人の役に立つかもです。 今回は zlib.js というライブラリを導入してみた 今回使ったのは zlib.js というライブラリ このライブラリは色んな圧縮形式に対応しているようで・・・ ZLIB(RFC1950), DEFLATE(RFC1951) GZIP(RFC1952) PKZIP(ZIP) これだけの形式をシンプルなコードで圧縮・展開できるみたいです。 便利そうだったので、GitHubからダウンロードしてみま
JavaScriptの this ってオブジェクト指向と相性が悪い・・・ 最近JSでクラス(class)を使っていて、そう感じる場面がありました。 そこでJavaScriptでクラスを使う場合、 コールバック内でクラス(class)のthisを参照する方法 をまとめておきます。 これは気を付けてないと重大なバグの温床になるかもしれません(怖) 問題に遭遇したのはクラスを作っていた時・・・ 昔のJavaScriptだと クラス なんて高尚なものは使えなかったです。 せいぜい prototype で疑似的なクラスを再現する程度みたいな感じ でもES2016から class が正式にサポートされてます。これは大きな進展 ▼ あと各ブラウザでの対応状況
タイトルの通り。 Bootstrapでの *-primary 色の変え方について。 自力で書き変えする方法もありますが、 一括でprimary色を変更するツールもあります。 超便利だったので、その方法をまとめました。 デフォルトでは *-primary の色は #007bff Bootstrapの初期設定では・・・ *-primary = #007bff この色に設定されているみたいですね。 そして *-primary の * はこういうのです。 bg-primary , text-primary
要素の属性値が変わったとき、要素が追加・削除されたとき、要素の中身が変更されたとき・・・ このような場合に変更を感知して何かイベント処理したいこともありますよね? ただ標準のイベントではそれを感知する術はありません。 では諦めるしかないのか、というとそうではなく解決策はあります。 ここでは要素(DOM)の変化の監視方法について紹介します。 要素の変化の感知にchangeは使えない・・・ まず初めに注意しておきたいこと それは要素の中身の変化、要素の追加や削除の感知にchangeイベントは使えないということです。 例えば次のようにjQueryでdiv要素の中身の変化を change で監視しようとしても無駄です。
Web開発の心強い味方と言えば、Chrome開発者ツール ページ内の要素を書き換えできり、 要素のスタイル(CSS)を変えたり、 ユーザーエージェントを変えたり、 コンソール内でスクリプト実行したり、 これを使うとWebアプリ開発が本当にはかどりますね。 でもAndroid実機だと開発者ツールが使えないのが不便(困る) PC版にも エミュレーター機能があるけど、アレは役不足力不足です。 ※ 「役不足」って違う意味だった。コメント訂正感謝です。 そこで自分用メモも兼ね、Android実機で開発者ツールを開く手順をメモしておきます。 手順1.まずAndroidとパソコンをUSB接続 最初にすべきは Android と パソコンをUSB接続すること 単純に専用のUSBケーブルを用意し、 パソコン(ここではWindows)とAndroid実機をつなげるだけでOKです。 ただし、USBケーブルは必ず
JavaScriptではご存知のように配列などを順々に処理していくのに forEach関数 が使えます。 ただこの forEach で問題なのは途中で処理を止める break みたいなことができないことなんですよね・・・ そこでbreakの代わりになるコードを紹介します。
Ajax から PHP を呼び出すとき、 普通の方法だと1回ぽっきりのレスポンスしか受け取れません。 でも次みたいな場合、リアルタイムにレスポンスを受け取りたいです。 データを常に画面上で更新したい場合 Twitterタイムライン的なのを作る場合 とにかくリアルタイム通信したい場合 僕もあるWebアプリを作っていて、リアルタイムレスポンスが必要でした。 ここでは自分の記憶の整理も兼ね、 PHPでストリーム出力して Ajax でリアルタイム更新する方法 を紹介します。 ストリーム出力の基本さえ知っていれば、意外と簡単にできます。 手順0.PHP + Ajax でリアルタイム更新する基本の流れ リアルタイム更新をする処理、これは2つの部分に分けられます。 サーバー側(データを更新する) ブラウザ側(データを受け取る) サーバー側では PHP を使ってストリーム出力、 ブラウザ側では Ajax
ブラウザでページが読み込まれる場合、大体次の3パターンがあります。 ブラウザで初めて読み込まれるパターン 更新ボタンで更新して読み込まれるパターン 戻る・進むボタンから読み込まれるパターン こういう風にどうやってページが読み込まれたか調べたいときってありますよね。 そこでJavaScriptからページの読み込みタイプを調べる方法をまとめました。 読み込みタイプ取得には PerformanceNavigationTiming を使う ではどうやって読み込みの種類を取得すればいいのか・・・ その結論から言うと PerformanceNavigationTiming から取得可能です。 これはブラウザのパフォーマンス的な情報を調べるためのインターフェイスで、その中の type を調べれば読み込みの種類を文字列として返してくれます。 ただし PerformanceNavigationTimin
みたいに const を使うのが一般的だと思います。 でもあるとき、この方法だと期待通りの動作にならないことがありました。 というか定数定義なら、もっと確実な方法があったんです。 そこで自分への忘備録もかね、 ここでは JavaScriptでグローバル定数を定義する正しい方法 を解説!! ちょうどPHPにおける define関数 みたいな実装方法です。 const による定数定義が上手くいかない場面 まず const がグローバルな定数定義に向いていない理由について。 それはブロックスコープだから この一言に尽きます。 どういうことかというと、MDNでの説明を引用すると次の通り 定数 (const) は、 let 文を使って定義する変数と同じ、ブロックスコープです。定数の値は、再代入による変更はできず、再宣言もできません。 引用元 : const - JavaScript | MDN
PHP でWebアプリとかサービスを作ってる人なら、 もっと多くの人に使ってほしい、 海外の人にも使ってほしい、 そうだ、日本語以外に多言語化しよう!みたいにPHPで作ったアプリを多言語化したいことあると思います。自分もつい最近Webサービスをリリースしたんですが、グローバルでもいけそうな内容だったので多言語化してみました。ここではそういう人たちに向けて、PHPで作ったアプリを gettext & poedit を使って多言語化する手順を紹介!手順通りに進めれば、今すぐにでも多言語化できます。手順0.翻訳を外注できるサービス... gettext は難しそうだけど、案外それほど面倒でもないです。 ただそうはいうものの・・・面倒なことせず多言語化対応だけしたい場面もあるはず そこで JavaScriptからGoogle翻訳を使い、サクッと多言語化する手順 まとめました。 ただし、機械翻訳なん
jQueryオブジェクト ⇒ HTML文字列 HTML文字列 ⇒ jQueryオブジェクト このように互いに変換したい場合、いくつかのjQuery関数を組み合わせて使えば簡単に変換可能です。 ということでここではその変換テクニックについて詳解していきます。 jQueryオブジェクトをHTML文字列に変換する方法 まず初めはjQueryオブジェクトを文字列としてのHTMLに変換する方法 その変換は次のような手順で可能です。 変換したい要素を入れるダミーの要素を作る 要素をclone関数でコピーしてダミー要素に挿入 html関数でダミー要素内部のHTML取得 clone関数というのはあるjQueryオブジェクトのディープコピーを取得できる関数です。 それでこの関数と要素内部のhtmlを取得できるhtml関数をうまく組み合わせれば変換できます。 では具体的な例を使って説明しましょう。 例えば次が
JavaScriptでコードを書くとき、次の2つのやり方によく悩みます。 文字列をある規則で配列に分割するやり方 配列をN等分の配列に分けるやり方 やり方さえ分かってれば、どうってことないんですが・・・ ということで、この2つのやり方をコード例付きでまとめてみました。 1.文字列を分解して配列にするやり方 これには String.split メソッドを使うのが手っ取り早いです。 まず String.split メソッドについての説明は次の通り(引用) split() メソッドは、指定した separator 文字列を使って分割する箇所を決定し、文字列を複数の部分文字列に区切ることにより String オブジェクトを文字列の配列に分割します。 str.split([separator[, limit]]) 戻り値 与えられた文字列で separator が発生するそれぞれの箇所で分割した文
最近 PWA って言葉をよく聞きます。 PWAはこの略 ⇒ 「Progressive Web Apps(プログレッシブ ウェブ アプリ)」 なんか長ったらしい名前だけど、普通のサイトをアプリ化できるってことです。 ホーム画面にアイコンも作れるし、 アドレスバーも隠せるし、 プッシュ通知とかも送信できるし、、、 こんなのが普通のWebサイトで使えるなんて・・・一昔前は信じられなかったです。 僕も少し興味があったので、実際にあるWebサイトをPWA化してみました。 同じようにPWA化したい人のために、 ここではWebサービス・サイトをPWA化する手順をまとめてみます。 手順1.manifest.jsonを作成する PWA化で絶対にやらないといけないこと それが manifest.json の作成 いわゆるマニフェストファイルというやつで、 この名前のファイルをWebサイトのルートディレクトリに
JavaScriptで複数行文字列を代入する方法は色々ありますよね。調べると+で行を連結するやり方とかやたらトリッキーな手法とかが見つかります。 ですが現在はテンプレートリテラルを使えば長い文字列でもスマートに代入したり表示する方法があるので、わざわざ面倒なことをする必要がなくなりました。 ここではこのテンプレートリテラルについてまとめてみてみます。
テキストエリアの高さを行数で指定したいことってありますよね。 例えば3行とか5行とか10行とかそういう感じで ただし、普通にテキストエリアに height: 5em; とか height: 10em; とか指定しても上手くはいきません。本当に行数ピッタリにするには少しだけ工夫が必要です。 ということでCSSでテキストエリアの高さを行数指定する方法をまとめました。またCSSでなくjQueryで動的に指定するやり方についても紹介します。
inputには絶対に半角数字しか入力させたくないってことありますよね? 検索してみるとそのためのコードがいくらでも出てくると思いますが、実は厳密に0~9以外は入力不可にしたいとなると結構大変です。 ということでその方法について紹介します。
CSSで枠線を内側に引きたい場合、方法は1つじゃありません。 いくつかやり方を考えてみると次の3つが使えます。 box-sizingプロパティを使った方法 outline-offsetプロパティを使った方法 after疑似要素を使った方法 どれを使っても内側に枠線を引くことができますが、微妙に動作とかが違います。 そこで記憶の整理も兼ねてこれらのやり方とコード例についてまとめてみました。 1. box-sizingプロパティを使った方法 box-sizing とはボックス(要素)サイズの算出方法を指定するためのプロパティ この値に border-box を指定することでボーダーを要素サイズに含めることが可能です。 なのでそれを応用すれば内側に枠線を引けます。 そのやり方は次のコード例の通り
JavaScriptでモバイル端末(スマホやタブレット)を調べたい場合、色々な方法があります。 ここではその中でも使いやすそうな3つのテクニックをまとめました。 スマホ判別の3つのテクニック そのテクニックは次の通り userAgentの値から判断する CSSのメディアクエリを使う 専用のライブラリを使う この3つについて具体的なやり方を説明していきます。 userAgentの値を見る まず初めはブラウザのユーザーエージェントから判別する方法 コードからは window.navigator.userAgent で調べることが可能です。 そしてこの値に例えば次のモバイル端末と思われる Android iPhone iPad BlackBerry IEMobile などの値が含まれていればモバイルだと判別できるわけです。 具体的なコード例は次の通り var regexp = /Android
最初に言っておくとCSSでは完全な正規表現は使えません。 ただ完全ではないものの、セレクタ内で正規表現を使うことは可能です。 ということでCSS内のセレクタで使える正規表現とそのコード例を紹介します。 セレクタに使える3つの正規表現 CSSでセレクタに使うことができる正規表現は次の3つ 前方一致 後方一致 不完全一致 この3つを使ってある属性に当てはまる要素にスタイルを適用可能です。 詳しい使い方やコード例については次の通り 前方一致 : attr^="value" まず1つめは属性値に対して前方一致させるような正規表現 要素を elem 、属性名を attr 、一致させたい値を value として次のように書きます。
こういう $ is not defined エラーってjQueryを使ってると頻繁というほどでもないけど、よく見かけることが多いですよね。 でも実はこのエラーは大したものでなく、少しコードを直せば簡単に解決できます。 ここではエラーの原因とコード修正のやり方について具体的なコード例と一緒にまとめました。 このエラーが出てしまう原因 ずばり $ is not defined エラーの原因を一言でいうなら jQueryで読み込まれてない段階でjQuery関数を使おうとしているから たったこれだけの単純な理由です。 例えばエラーが出てしまうのは次みたいなコード例 <!-- jQuery読み込み前に実行 --> <script> $(function(){ $('#hoge').html('CANNOT execute'); }); </script> <!-- jQueryをCDNから読み込
「ボタンにイベントを設定したはずなのに発火しない」 「チェックボックスにチェックが入ってもイベントが起きない」 こういう風になぜかイベントが発火しないことはjQueryを使っているとちょくちょく遭遇します。 しかもエラーも出ないし、DOMの読み込み後にイベントを設定してるのに関わらずです。 という訳でイベントが発火しないときの簡単にできる対処法について紹介 イベントが発火しないのはなぜ? まずなんでイベントが発生しないのか? ということですが、それは単純にイベントハンドラが登録されていないからです。 そもそもイベントハンドラが登録されてなければイベントは発火しようがありません。 ではどういうときにイベントが未登録になってしまうのか・・・ それは動的にボタンやチェックボックスなどの部品を追加したときです。 これだけだと分かりにくいので少し例を使って説明します。 例えば次のようなHTMLを作成
このページを最初にブックマークしてみませんか?
『pisuke-code.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く