javascript

xyzzyのjavascript-modeにおけるインデントの挙動をカスタマイズする

配布されているjavascript-modeのインデントの挙動がいくつか気になったので調整した。 前提として、インデント設定としてはタブ不使用の空白4桁を使用している。 javascript-modeは以下のリンク先のものを利用。 http://xyzzy.s53.xrea.com/wiki/index.php?…

Dojo Toolkitでイベント処理

この記事を書いた時点でのDojo Toolkitのバージョンは1.8.0です。 Dojo Toolkitで提供されているモジュールには、大きく分けて以下3つのものがあります。 dojo/on dojo/topic dojo/_base/connect ただし、dojo/_base/connectは古いモジュールであり、 バージ…

Dojo Toolkit 1.8で導入されたAuto Requireを試してみる

この記事を書いた時点でのDojo Toolkitのバージョンは1.8.0です。 DojoではリッチなUI(いわゆるウィジェット)が多数提供されています(この辺りでサンプルが見られます)。 これらのウィジェットを使うには、JavaScript内でnewしてDOMへ挿入する方法と、 H…

Dojo ToolkitでDOM操作

この記事はバージョン1.7以降の記法に基づいて書いています。 Dojoではバージョン1.7以降、使う関数ごとに細かくモジュールを指定する必要があるようです。 逆に、依存するモジュールをしっかり指定することで、 通常のライブラリではそのとき使わない機能に…

Dojo Toolkitの使い方

JavaScriptフレームワークのDojo Toolkitに触ったので、簡単な覚え書きを残しておきます。 この記事を書いた時点でのバージョンは1.7.2です。2014/03/01追記: バージョン1.9現在でもこの記事の内容は有効です。2018/09/30追記: サンプルのリンク先をJSFidd…

パーフェクトJavaScriptの感想と正誤表

パーフェクトJavaScript (PERFECT SERIES 4)posted at 2012.1.6井上 誠一郎,土江 拓郎,浜辺 将太技術評論社売り上げランキング: 2407Amazon.co.jp で詳細を見るまだ4章までしか読んでいませんが、うわさ通りの良書ですね。 私もGreasemonkeyスクリプトなどを…

Greasemonkeyでキー制御したい時の書き方

イベントリスナの登録 document.addEventListener('keydown', function (e) { // 処理 }, false); 他にkeypressってのもあるけど、keydownをお勧め。 理由は確かGoogle chromeでkeypressにすると、Ctrl+a(全て選択)のようにデフォルトで別動作が定義されて…

Greasemonkeyでウィンドウ(画面)がアクティブになる度に何かしたい場合の書き方

「javascript」、「ウィンドウ」、「前面」辺りでぐぐっても参考になるページが無かったので書いておく。 documentのfocusに対してイベントリスナを登録すればおk。 最初document.bodyに対して登録しててハマった。 document.addEventListener('focus', fun…

JavaScriptで配列が指定した文字列を含んでいるかどうか判定する方法

今までfor文で書いてた。 >>> 'Alice' in ['Alice', 'Bob']; // 文字列には適用不可 false >>> ['Alice', 'Bob'].indexOf('Alice') != -1; // シンプルに true >>> ['Alice', 'Bob'].some(function (e) e == 'Alice'); // 関数弄れば融通が利く true

JavaScriptの配列ってmapとかfilterとかあったんだ

>>> [1,2,3].map(function (e) e-2); // 全部の要素から-2 [-1, 0, 1] >>> [1,2,3].map(function (e) e-2).filter(function (e) e>0); // ↑から正だけ取り出す [1] >>> [1,2,4].sort(function (a,b) (Math.abs(a-2)) - (Math.abs(b-2))); // 2に近い順にソー…

JavaScriptで入れ子になった要素を作成する時用の関数

Greasemonkeyとかで複雑な要素作る時用。 var newTag = function (tag) { var elem = document.createElement(tag); for (var i = 1; i < arguments.length; i++) { elem.appendChild(arguments[i]); } return elem; }; var newText = function (text) { ret…

JavascriptでGETとかPOSTする時用のテンプレ

ぐりもん用なので互換性は考えてません。 とりあえずFirefoxとGoogle chromeでは動きます。 GET var url; // リクエスト先URL var request = new XMLHttpRequest(); request.open('GET', url); request.onreadystatechange = function () { if (request.read…