MW211 EXIT

devlog
JavaScript/コールバック関数の変数スコープ
2012年09月20日
以下のようにコールバック関数にグローバル的な変数valueを引き渡すことは
直書きだと可能だ。
┌──────────────────────────────────────┐
│function main() {                                                           │
│    var value = 1;                                                          │
│    $.getJSON(url,                                                          │
│              function(json) {                                              │
│                  alert(value);                                             │
│              }                                                             │
│    );                                                                      │
│}                                                                           │
└──────────────────────────────────────┘

しかし、コールバック関数を外に出すと、引き渡すことはできない。
┌──────────────────────────────────────┐
│function main() {                                                           │
│    var value = 1;                                                          │
│    $.getJSON(url,                                                          │
│              sub                                                           │
│    );                                                                      │
│}                                                                           │
├──────────────────────────────────────┤
│function sub(json) {                                                        │
│    alert(value);                                                           │
│}                                                                           │
└──────────────────────────────────────┘

本格的にグローバル変数にしてしまえばなんとでもなるが、
安易な濫用は避けたいところ。

ってことで、妥協案は以下の通りか。
┌──────────────────────────────────────┐
│function main() {                                                           │
│    var value = 1;                                                          │
│    $.getJSON(url,                                                          │
│              function(json) {                                              │
│                  sub(json, value);                                         │
│              }                                                             │
│    );                                                                      │
│}                                                                           │
├──────────────────────────────────────┤
│function sub(json, value) {                                                 │
│    alert(value);                                                           │
│}                                                                           │
└──────────────────────────────────────┘
コールバック関数に長々と記述するのを避けることはできる。

もっといい方法があるんだろうな、きっと。
分類:JavaScript、jQuery
JavaScript/例外情報
2012年08月04日
try-catchで捕捉できるエラーの一覧情報が欲しい………、でもない。
ということで、自分で作っていこう。
┌───────┬──────────────────────────────┐
│     name     │                          message                           │
├───────┼──────────────────────────────┤
│Error         │                                                            │
├───────┼──────────────────────────────┤
│EvalError     │                                                            │
├───────┼──────────────────────────────┤
│InternalError │                                                            │
├───────┼──────────────────────────────┤
│RangeError    │                                                            │
├───────┼──────────────────────────────┤
│ReferenceError│IE    :'■■'は定義されていません。                        │
│              │FF    :■■ is not defined                                 │
│              │Chrome:■■ is not defined                                 │
│              │Safari:Can't find variable: ■■                           │
│              │Opera :Undefined variable: ■■                            │
├───────┼──────────────────────────────┤
│StopIteration │                                                            │
├───────┼──────────────────────────────┤
│SyntaxError   │                                                            │
├───────┼──────────────────────────────┤
│TypeError     │IE    :'■■'はNullまたはオブジェクトではありません。      │
├───────┼──────────────────────────────┤
│URIError      │                                                            │
└───────┴──────────────────────────────┘
分類:JavaScript、【未解決】
JavaScript/エラーを握り潰す方法
2012年08月03日
try-catchで捕捉したら、throwしてあげれば闇へ葬り去ることができる。
┌──────────────────────────────────────┐
│try {                                                                       │
│    処理                                                                    │
│} catch (e) {                                                               │
│    if (e.name == 'ReferenceError') {                                       │
│        throw e;  // エラーを握り潰す                                       │
│    }                                                                       │
│}                                                                           │
└──────────────────────────────────────┘
ま、握り潰す対象は、エラー名称とかで絞り込んだ方がいいけどね(上記は一例)。

これによって、IEの左下に警告△アイコンが出なくなるよん。
分類:JavaScript
JavaScript/try-catchを動作させる
2012年07月22日
try-catchで例外を発生せればcatchへ飛ぶわけだが、簡単な例外発生の方法としては
未定義の変数を使ってしまうというのがある。
┌──────────────────────────────────────┐
│try {                                                                       │
│    alert(reigai);  // reigaiは未定義                                       │
│} catch (e) {                                                               │
│    alert(e);                                                               │
│}                                                                           │
└──────────────────────────────────────┘

catchの中身は以下のように定義すると以下のような結果となる。
┌─────────┬────────────────────────────┐
│alert(e);         │「ReferenceError:'reigai'は定義されていません。」       │
├─────────┼────────────────────────────┤
│alert(e.message); │「'reigai'は定義されていません。」                      │
└─────────┴────────────────────────────┘
分類:JavaScript
JavaScript/【未解決】自身の関数名
2012年07月19日
IE以外なら「arguments.callee.name」で取得できる。

統一的な取得方法ってないものか。。。
分類:JavaScript、【未解決】
JavaScript/関数の中身
2012年07月18日
「arguments.callee.toString()」ってすると、
その関数のソースの中身が取得できるみたい。
分類:JavaScript
JavaScript/変更を反映させる
2012年04月30日
JavaScriptのソースコードを変更しても、
既に動作中のユーザがブラウザに前の状態をキャッシュし続けて反映されない、
という問題に出くわした場合の対処方法の一例。

┌──────────────────────────────────────┐
│<script type="text/javascript" src="javascript.js?1.0"></script>            │
└──────────────────────────────────────┘
上記のように「?バージョン」みたいなパラメータを付加しておいて、
ここの値を変えてあげれば再読込してくてる。
#この方法は、HTMLソース(テンプレート)の変更が必要ってことになる
分類:JavaScript
画面をリフレッシュする方法
2012年04月26日
いろいろある。

【1】メタタグを使う方法
┌──────────────────────────────────────┐
│<meta http-equiv="Refresh" content="秒"/>                                   │
└──────────────────────────────────────┘

【2】JavaScriptを使う方法
┌──────────────────────────────────────┐
│<script type="text/javascript">                                             │
│  window.onload = function() {                                              │
│    setTimeout("location.reload()", ミリ秒);                                │
│  }                                                                         │
│</script>                                                                   │
└──────────────────────────────────────┘
分類:JavaScript、HTML
JavaScript/クリップボードへデバッグ
2012年03月30日
InternetExplorerにてJavaScriptの変数をクリップボードに出力する方法。
┌──────────────────────────────────────┐
│clipboardData.setData("Text", 変数);                                        │
└──────────────────────────────────────┘
処理を実行すると、クリップボードに変数の内容が出力されるので、
メモ帳などに「貼り付け」すると、その内容がテキストとして取得できる。
分類:JavaScript
JavaScript/特定の文字が何文字含まれているか
2012年02月13日
┌──────────────────────────────────────┐
│文字数 = 対象.length - 対象.replace(/文字/g, "").length;                    │
└──────────────────────────────────────┘
数えたい文字を除去してしまい、その前後で文字数を比較すれば、
文字数がわかるという魂胆。

┌──────────────────────────────────────┐
│2 = "いっぱい".length - "いっぱい".replace(/い/g, "").length;               │
└──────────────────────────────────────┘
みたいな感じ。
分類:JavaScript
前へ 1 2 3 4 5 6 7 8 9 次へ