JavaScript » 履歴 » バージョン 1
kanata, 2025/04/13 15:52
| 1 | 1 | kanata | # JavaScript |
|---|---|---|---|
| 2 | |||
| 3 | {{rawhtml(<canvas id="map"></canvas><script src="/javascripts/pagemap.min.js"></script><script>pagemap(document.querySelector("#map"));</script>)}} |
||
| 4 | |||
| 5 | {{toc}} |
||
| 6 | |||
| 7 | # Portal,TextBook,Cheat Sheet |
||
| 8 | |||
| 9 | Lastest Hacking News - JavaScript Cheat Sheet Free Download |
||
| 10 | http://www.cheatography.com/davechild/cheat-sheets/javascript/pdf/ |
||
| 11 | |||
| 12 | はてな教科書 JavaScript 編 |
||
| 13 | https://hatena.github.io/Hatena-Textbook-JavaScript/ |
||
| 14 | |||
| 15 | JavaScript Programming お気楽 ECMAScript2015 超入門 |
||
| 16 | http://www.geocities.jp/m_hiroi/light/js2015.html |
||
| 17 | |||
| 18 | K-TechLaboゼミ用学習ノート - JavaScriptのテキスト |
||
| 19 | http://www.k-techlabo.org/blog2/?page_id=1022 |
||
| 20 | |||
| 21 | JavaScriptの入門書を jsprimer.net で公開しました |
||
| 22 | https://efcl.info/2018/10/26/jsprimer.net/ https://jsprimer.net/ |
||
| 23 | |||
| 24 | JavaScript Promiseの本 |
||
| 25 | http://azu.github.io/promises-book/ |
||
| 26 | |||
| 27 | trekhleb/javascript-algorithms |
||
| 28 | https://github.com/trekhleb/javascript-algorithms/blob/master/README.ja-JP.md |
||
| 29 | |||
| 30 | >多種多様なアルゴリズムやデータ構造に関するサンプル例がまとめられたリポジトリ |
||
| 31 | |||
| 32 | 初心者に分かりやすい!JavaScript 入門チートシート |
||
| 33 | https://commte.net/javascript-basics |
||
| 34 | |||
| 35 | モダンJavaScriptについて |
||
| 36 | https://qiita.com/ayuoyk/items/b0183b36881f69b91282 |
||
| 37 | |||
| 38 | |||
| 39 | |||
| 40 | # Gadgets |
||
| 41 | |||
| 42 | ## jQuery の使用 |
||
| 43 | |||
| 44 | 次のコードを実行することにより、jQuery を読み込んでいないページでも jQuery を使用することができる。 |
||
| 45 | |||
| 46 | ```Javascript |
||
| 47 | if (!window.jQuery) { |
||
| 48 | document.body.appendChild((function(){ |
||
| 49 | var s = document.createElement("script"); |
||
| 50 | s.type = "text/javascript"; |
||
| 51 | s.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"; |
||
| 52 | return s; |
||
| 53 | })()); |
||
| 54 | } |
||
| 55 | ``` |
||
| 56 | |||
| 57 | ## jQueryの使用(Chrome DevToolsのSnippets機能編) |
||
| 58 | |||
| 59 | ChromeのDev Toolsを開き(Ctrl+Shift+IかF12キーを押す)、Sourcesパネルを開いてその中のSnippetsタブをクリック。その後、左側の空白欄を右クリックしてメニューを表示し、その中の『New』をクリック。 |
||
| 60 | |||
| 61 | そうすると新しいsnippetが追加され、真ん中にコード記入欄ができるのでsnippetの名前を『jqueryfy』、コード下記のように記入し保存。 |
||
| 62 | |||
| 63 | ``` |
||
| 64 | (function () { |
||
| 65 | if ( !window.jQuery ) { |
||
| 66 | var dollarInUse = !!window.$; |
||
| 67 | var s = document.createElement('script'); |
||
| 68 | s.setAttribute('src', '//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js'); |
||
| 69 | s.addEventListener('load', function(){ |
||
| 70 | console.log('jQuery loaded!'); |
||
| 71 | |||
| 72 | if(dollarInUse) { |
||
| 73 | jQuery.noConflict(); |
||
| 74 | console.log('`$` already in use; use `jQuery`'); |
||
| 75 | } |
||
| 76 | }); |
||
| 77 | |||
| 78 | document.body.appendChild(s); |
||
| 79 | }else if( !window.$ ){ |
||
| 80 | window.$ = window.jQuery; |
||
| 81 | console.log("'$' is jQuery") |
||
| 82 | } |
||
| 83 | |||
| 84 | })(); |
||
| 85 | ``` |
||
| 86 | |||
| 87 | jqueryfyの箇所を右クリックしてメニューを表示し、『Run』をクリックする。 |
||
| 88 | |||
| 89 | while(isプログラマ) - Chrome DevToolsのSnippets機能がすごい便利そう |
||
| 90 | http://am-yu.net/2014/08/07/chrome-devtools-snippets/ |
||
| 91 | |||
| 92 | |||
| 93 | ## ページ内に仕掛けられた全てのEventListenersの設定元の一覧をダンプ |
||
| 94 | |||
| 95 | last log - ページ内に仕掛けられた全てのEventListenersの設定元の一覧をダンプし、必要な対策を施す方法 |
||
| 96 | http://uupaa.hatenablog.com/entry/2014/09/05/004431 |
||
| 97 | |||
| 98 | 実際にconsoleに貼り付ける時は、関数の中身だけをコピペする |
||
| 99 | |||
| 100 | ```javascript |
||
| 101 | function getAllNodeEventListeners() { |
||
| 102 | var nodes = [].concat(window, [].slice.call(document.getElementsByTagName("*"))); |
||
| 103 | |||
| 104 | nodes.forEach(function(node) { |
||
| 105 | var result = getEventListeners(node); |
||
| 106 | for (var type in result) { |
||
| 107 | console.log(type, result[type]); |
||
| 108 | } |
||
| 109 | }); |
||
| 110 | } |
||
| 111 | ``` |
||
| 112 | |||
| 113 | # Chrome DevTools Snippets |
||
| 114 | |||
| 115 | ChromeのDevTools(開発者ツール)にはSnippetsという、コンソールでデバッグの際に使うスクリプトを保持してくれる機能がある。 |
||
| 116 | |||
| 117 | DevTools Snippets |
||
| 118 | http://bgrins.github.io/devtools-snippets/ |
||
| 119 | |||
| 120 | |||
| 121 | |||
| 122 | # Debug |
||
| 123 | |||
| 124 | JavaScriptが敬遠される理由の7割ぐらいは、このデバックのし難くさにかかっていると思う。 |
||
| 125 | まだ実機で試してないのもあるけど。 |
||
| 126 | |||
| 127 | JavaScriptのデバッグ方法 – JSを嫌いにならないためのTips |
||
| 128 | http://postd.cc/how-to-not-hate-javascript-tips-from-the-frontline/ |
||
| 129 | |||
| 130 | Qiita - JavaScript,jQueryの爆速コーディング、デバッグ方法論の勧め~実践向け逆引き(windows,chrome向け)~ |
||
| 131 | http://qiita.com/shgkt/items/0054670269e1d3aa49b8 |
||
| 132 | |||
| 133 | javascript-visualizer - JavaScriptの実行内容を可視化 |
||
| 134 | https://tylermcginnis.com/javascript-visualizer |
||
| 135 | |||
| 136 | |||
| 137 | |||
| 138 | |||
| 139 | ## alert |
||
| 140 | |||
| 141 | 最も原始的なのが、alert()を使う方法です。同様にconfirm()を使うこともできます。 |
||
| 142 | C言語のprintfで変数を出力したり、Java言語のSystem.out.println()でインスタンスの中身を出力するのと同じです。 |
||
| 143 | |||
| 144 | ```javascript |
||
| 145 | alert("Alex"); |
||
| 146 | ``` |
||
| 147 | |||
| 148 | ## debuggerステートメント |
||
| 149 | |||
| 150 | デベロッパーツール側では手動でブレークポイントを配置したものと認識されます。 |
||
| 151 | |||
| 152 | ```javascript |
||
| 153 | debugger; |
||
| 154 | ``` |
||
| 155 | |||
| 156 | ## console.log,console.warn,console.error,console.info |
||
| 157 | |||
| 158 | いずれも以下のようなC言語で使われるような出力フォーマットをサポートします。 |
||
| 159 | |||
| 160 | ```javascript |
||
| 161 | console.log("Hello %s", "Brian"); |
||
| 162 | ``` |
||
| 163 | |||
| 164 | Qiita - console.logまとめ 2016年夏 |
||
| 165 | http://qiita.com/ykyk1218/items/0f5858d077d43a49cfe2 |
||
| 166 | |||
| 167 | ## console.table() |
||
| 168 | |||
| 169 | 結果はコンソール上にテーブルで出力され、オブジェクトの属性でソートすることができます。 |
||
| 170 | オブジェクトの中身、JSON(たぶん)、配列が、視覚的に把握しやすくなります。 |
||
| 171 | |||
| 172 | ```javascript |
||
| 173 | console.table([[1,2,3], [2,3,4]]); |
||
| 174 | ``` |
||
| 175 | |||
| 176 | ## コールトレースを取得する |
||
| 177 | |||
| 178 | 失敗した時だけでなく、成功した時にもコールトレースを確認することができます。 |
||
| 179 | 非標準の関数ですが、主要なデスクトップブラウザではサポートされています。 |
||
| 180 | |||
| 181 | ```javascript |
||
| 182 | console.trace(); |
||
| 183 | ``` |
||
| 184 | |||
| 185 | 非同期コールは、いかが役に立つかもしれません。 |
||
| 186 | |||
| 187 | ```javascript |
||
| 188 | TraceConsole.trace(); |
||
| 189 | ``` |
||
| 190 | |||
| 191 | ## 誰がオブジェクトを変更するか? Objects.observe + console.trace |
||
| 192 | |||
| 193 | オブジェクトのプロパティの一部が変更されることがありますが、誰が犯人か判らないことがよくあります。 |
||
| 194 | このような場合Object.observeが役に立ちます。personオブジェクトに対する全ての変更を確認する場合を見てみましょう。 |
||
| 195 | console.traceと併用すると、コールトレースも確認できるので、誰が犯人かまで判ります。 |
||
| 196 | ただ、現在(2015.05:未確認)は、Chromeのみがこの機能をサポートしているようです。 |
||
| 197 | |||
| 198 | ```javascript |
||
| 199 | var person = { |
||
| 200 | firstName: "John" |
||
| 201 | } |
||
| 202 | |||
| 203 | Object.observe(person, function(changes) { |
||
| 204 | // This callback runs asynchronousty and aggregates the changes that happened |
||
| 205 | // in the previous execution turn into `changes` param. |
||
| 206 | changes.forEach(function(change) { |
||
| 207 | consote.log(change.type, change.name, change.oldVatue); |
||
| 208 | consote.trace(); |
||
| 209 | }); |
||
| 210 | }); |
||
| 211 | Object {firstName."John"} |
||
| 212 | |||
| 213 | ``` |
||
| 214 | |||
| 215 | ## 誰がDOMやHTML要素を変更するのか |
||
| 216 | |||
| 217 | MutationObserverと呼ばれるオブジェクトがあり、これによってDOM要素の監視が可能になります。 |
||
| 218 | ドキュメント全体で発生した全ての変更をリストアップしたい場合を考えてみましょう。 |
||
| 219 | この場合、ドキュメントは選択されたどのDOM要素にも当てはまります。 |
||
| 220 | |||
| 221 | ```javascript |
||
| 222 | var observer = new MutationObserver(function(mutations) { |
||
| 223 | mutations.forEach(function(mutation) { |
||
| 224 | for (var i = 0; i < mutation.addedNodes.Length; i++) |
||
| 225 | console.log(mutation.addedNodes[i]); |
||
| 226 | }) |
||
| 227 | }); |
||
| 228 | observer.observe(document, { childList: true }); |
||
| 229 | ``` |
||
| 230 | |||
| 231 | Chromeでは、プログラミング以外の解決策も使えます。DOM Breakpointsと呼ばれるもので、バックグラウンドではMutation Eventを使っています。 |
||
| 232 | |||
| 233 | ## サーバ側でクライアントのエラーログを取る |
||
| 234 | |||
| 235 | 実に簡単なのですが、Windowオブジェクトにonerrorイベントハンドラを追加するだけでクライアント側の処理は完了です。 |
||
| 236 | ハンドラは、サーバ上にエラー情報を蓄積するRESTのエンドポイントに対してAjaxリクエストを行うことができます。 |
||
| 237 | |||
| 238 | ```javascript |
||
| 239 | window.onerror = function(msg, url, line){ |
||
| 240 | if(encodeURIComponent) { |
||
| 241 | var req = new AjaxRequest(); |
||
| 242 | var params = encodeURIComponent(url) + encodeURIComponent(msg); |
||
| 243 | req.setMethod("POST"); |
||
| 244 | return req.loadXMLDoc("/my/servtet", params); |
||
| 245 | } |
||
| 246 | return false; |
||
| 247 | }; |
||
| 248 | ``` |
||
| 249 | |||
| 250 | # jQuery |
||
| 251 | |||
| 252 | 【脱JQuery】モダンなJSの書き方 |
||
| 253 | https://qiita.com/tatsumi_t2/items/ec41fdc4cf269bfa86bc |
||
| 254 | |||
| 255 | ## Cheatsheet |
||
| 256 | |||
| 257 | jQuery Cheatsheet |
||
| 258 | http://lab.abhinayrathore.com/jquery-cheatsheet/ |
||
| 259 | |||
| 260 | ## Plugin Sample |
||
| 261 | |||
| 262 | jQueryを利用した演出がかっこいいWEBサイト50個 |
||
| 263 | http://designaholic.cc/2011/01/jqueryweb50.html |
||
| 264 | |||
| 265 | 12個のかっこいいjQueryスライドショープラグインまとめ |
||
| 266 | http://webdesignfactory.schoolbus.jp/jquery_slide/ |
||
| 267 | |||
| 268 | 流行のjQueryでスクロールするサイトを集めてみました |
||
| 269 | http://webrocketsmagazine.com/entry/20111102/scrollable-website-with-jquery.html |
||
| 270 | |||
| 271 | クライアントワークでよくお世話になっているjQueryプラグインいろいろ |
||
| 272 | http://webdesignrecipes.com/jquery-plugins-in-cliant-works/ |
||
| 273 | |||
| 274 | ## 使いたいけど難あり |
||
| 275 | |||
| 276 | http://grow.weblike.jp/immature_design/jquerys/865.html |
||
| 277 | |||
| 278 | http://galleria.io/ |
||
| 279 | |||
| 280 | # JavaScript Emulator |
||
| 281 | |||
| 282 | JSBin |
||
| 283 | http://jsbin.com/ |
||
| 284 | |||
| 285 | JSFiddle |
||
| 286 | https://jsfiddle.net/ |
||
| 287 | |||
| 288 | glot.io - 様々な言語のコードスニペットが共有できるサイト |
||
| 289 | https://glot.io/ |
||
| 290 | |||
| 291 | javascript-visualizer - JavaScriptの実行内容を可視化 |
||
| 292 | https://tylermcginnis.com/javascript-visualizer |
||
| 293 | |||
| 294 | |||
| 295 | # JavaScript Beatutify |
||
| 296 | |||
| 297 | Online Javascript beatutify |
||
| 298 | http://jsbeautifier.org/ |
||
| 299 | |||
| 300 | # Memo |
||
| 301 | |||
| 302 | くんすとの備忘録 - BATファイルにJScriptを埋め込む |
||
| 303 | http://kunst1080.hatenablog.com/entry/2015/12/15/222711 |
||
| 304 | |||
| 305 | LintCI(Web上でJavaScriptのLint) |
||
| 306 | https://lint-ci.io/ |
||
| 307 | |||
| 308 | Programming Tutorials and Source Code Examples |
||
| 309 | http://www.java2s.com/ |
||
| 310 | |||
| 311 | Qiita - ブレークポイントを使ったJavaScriptデバッグを整理してみた【再入門】 |
||
| 312 | http://qiita.com/nekoneko-wanwan/items/02aed17773833c3ad3b2 |
||
| 313 | |||
| 314 | Qiita - Reactを使うとなぜjQueryが要らなくなるのか |
||
| 315 | http://qiita.com/naruto/items/fdb61bc743395f8d8faf |
||
| 316 | |||
| 317 | Qiita - JavaScript ショートコードテクニック集(ES6含む) |
||
| 318 | http://qiita.com/ichimonji_haji/items/f602f6c437be9e7daa88 |
||
| 319 | |||
| 320 | アプギガ - JavaScriptの学習にオススメなWebコードエディタ「Carbide」の万能すぎる可視化ウィジェットがヤバイ! |
||
| 321 | http://plus.appgiga.jp/masatolan/2016/10/13/57333/ |
||
| 322 | |||
| 323 | JavaScriptエンジニアなら知ってるよね? エラー処理のいい書き方、悪い書き方 |
||
| 324 | https://www.webprofessional.jp/proper-error-handling-javascript/ |
||
| 325 | |||
| 326 | Qiita - ゼロから始めるJavaScript生活 |
||
| 327 | http://qiita.com/takahashim/items/7838334d1451fb0a9811 |
||
| 328 | |||
| 329 | 【翻訳】 2016年にJavaScriptを学んでどう感じたか - 【翻訳】 2016年にJavaScriptを学んでどう感じたか |
||
| 330 | http://kikuchi1201.hateblo.jp/entry/2016/10/26/172404 |
||
| 331 | |||
| 332 | Subterranean Flower blog - JavaScriptの関数で何ができるのか、もう一度考える |
||
| 333 | https://sbfl.net/blog/2016/12/26/javascript-function-revisited/ |
||
| 334 | |||
| 335 | javascriptのライブラリを一覧にしてまとめてみた |
||
| 336 | https://trueman-developer.blogspot.jp/2016/05/javascript.html |
||
| 337 | |||
| 338 | GitHub - trekhleb/javascript-algorithms |
||
| 339 | https://github.com/trekhleb/javascript-algorithms |
||
| 340 | |||
| 341 | JavaScriptをもうちょっと理解する54のトピック |
||
| 342 | https://qiita.com/komlabo/items/3f14c8990a2f94fb5323 |
||
| 343 | |||
| 344 | JavaScriptの"非同期処理"を理解する(Promise/async/await) |
||
| 345 | https://qiita.com/kkrtech/items/4680c624012bd265714f |