Introduction

ブログ内検索

  • このサイトの記事を検索 by Google

おすすめの一冊!

無料ブログはココログ

« SleipnirScript すごいかも | トップページ | bk1_to_amazon »

2009-09-12

イベントハンドラのスコープへ

SleipnirScript の中でイベントハンドラを設定するには
ちょっと抜け穴的な手続きが必要になります。

    ⇒  SeaHorse でイベントハンドラ

このやり方では、定義した関数を toString() して Eval しているので、
イベントハンドラのコンテキスト(スコープ)が普通とは違っています。

具体的に言うと、toString() する関数の外で定義しておいた
変数や関数にそのままではアクセスできません。
# アクセスすると「未定義です」とエラーになります。

しかし、いろいろ試した結果、window オブジェクトを介することで
イベントハンドラからアクセスできることがわかりました。



まず、イベントハンドラ設定関数の外側(SleipnirScript の
コンテキスト)で window オブジェクトにプロパティを追加します。

var zzz = 'Here is SleipnirScript context.'; window.abc = function() {alert('zzz = ' + zzz)};
上記の通り、クロージャーも普通に使えます。 で、イベントハンドラの中では _window オブジェクトのプロパティ (メソッド)として参照します。アンダースコアに注意です。
_window.abc();
これで、イベントハンドラからオートメーションオブジェクトに アクセスできるようになったので、ますますデスクトップ アプリケーションに近づけた気がします。 いろいろ遊べそう。

« SleipnirScript すごいかも | トップページ | bk1_to_amazon »