Closure Library

引数によって関数の呼び出しオブジェクトが変わる goog.events.listen

goog.events.listen(src, type, listener, opt_capt, opt_handler) は、5 番目の引数 opt_handler を指定することで、関数の呼び出しオブジェクト this を変更することができます。 // opt_handler なし goog.events.listen(src, EVENT_TYPE, function (e) {…

Container 選択時に枠を表示させない

goog.ui.Container やその子要素 goog.ui.Control を選択すると表示される枠は、Container インスタンスに以下を設定すれば表示されなくなる。 var container = new goog.ui.Container(); // Container 選択時に枠を表示させない container.setFocusable(fal…

ui.Popup の表示・非表示イベントを監視する

goog.ui.Popup は Positioning 可能なポップアップ View を扱うクラスです。 setHideOnEscape() や setAutoHide() でポップアップ要素を自動的に隠すイベントは、スーパークラス goog.ui.PopupBase の EventType に定義されています。 // Popup の表示・非表…

DragListGroup のドラッグ & ドロップ・イベントを監視する

goog.fx.DragListGroup は dragListElement として追加したノードに含まれる DOM 要素群を、ドラッグアンドドロップで位置交換できるようにするクラスです。 DragListGroup で発生したドラッグ・イベントは、draglistgroup.js の goog.fx.DragListGroup.Even…

Closure Library で新しいページを開く goog.window

API リファレンスからは検索しにくいのですが、Closure Library にはウィンドウ操作のための関数群が window.js に定義してあり、require('goog.window') で利用可能になります。 goog.window には以下の関数が定義されています。 goog.require('goog.window…

DOM 要素のドラッグ&ドロップには Dragger をイベント登録する

goog.events.listen() 関数で DOM 要素のドラッグアンドドロップ・イベントを登録したい場合、DOM 要素を goog.fx.Dragger インスタンスとして登録する必要があります。http://closure-library.googlecode.com/svn/docs/class_goog_fx_Dragger.htmlまた、イ…

$ を使って DOM Element を取得する

Closure Library では goog.dom.getElement(element) 関数で DOM 要素を取得できますが、頻繁にこの長い名前空間を記述するのは面倒なので、次のように変数 $ に関数オブジェクトを代入する方法があります。 goog.require('goog.dom'); var $ = goog.dom.get…

goog.math.Rect の各パラメータは x, y, w, h でアクセスできない

API Documentation ばかりを見ていたら勘違いしてしまう罠です。console.log で Rect オブジェクトの中身を見てみると分かるのですが、goog.math.Rect(x, y, w, h) の各パラメータには left, top, width, height でアクセスできます。 var rect = new goog.m…

width, height がマイナスな図形は描画されない

Point(100, 100) を始点として、Point(0, 0) を終点とした rect を描画したい場合、Size(-100, -100) とできれば楽なのですが・・・ <div id="canvas"></div> var drawer = goog.graphics.createGraphics(300, 300); drawer.render(goog.dom.$('canvas')); // #canvas にレンダリン…

設定オブジェクトパターンをクラスのコンストラクタに適用する

関数の引数が多くなると、パラメータの順序を覚えたり、オプションパラメータの扱いづらくなります。 /* before */ // 定義 function test(arg1, arg2, opt_arg3, opt_arg4, opt_arg5) { ... } // 実行 test(a, b, c, d); そこで引数に辞書オブジェクトを与…

オプション引数 (opt_***) を扱う

関数の引数をオプションにしたい場合、goog.isDefAndNotNull(val) を使うことができます。 この関数は base.js に定義されています。 // 引数 arg は必須、opt_arg はオプション function (arg, opt_arg) { if (goog.isDefAndNotNull(opt_arg)) { // opt_arg…