新し物好きのみなさんなら、正式リリース今や遅しと待ちかねているIE9のRelease Candidate版をさっそくいじり倒されていることかと思います。もう、いつRCが取れるかと気になって夜も寝られず、睡眠不足の毎日だったりするのではないでしょうか。 私もその中の一人…なわけではないんですが、ちょっと噂になっていたので、気になって触ってみたんです。IE8が出てそんなにまだしてないように思っていたのに、もう9ですってよ奥さん。はやいもんですわねー。そういえば聞きました?飯田さんとこのお子さんなんですけど。 とにかく、このIE9を入れるとPandionの動作が止まる現象が発生したというお話です。 このPandion、内部は大部分をJavaScriptで記述されていて中を見ることができます。エラーメッセージもこのように出ますので、


どこで問題が起こってるのかを調べることが可能です。

 /* Create the roster tab button
  */
 external.globals( 'ClientPluginContainer' ).Plugins.Add( '/roster', new ClientPluginCore( external.globals( 'ClientPluginContainer' ) ) );
 with ( external.globals( 'ClientPluginContainer' ).Plugins( '/roster' ).ClientPluginTab = new ClientPluginTab( external.globals( 'ClientPluginContainer' ).Plugins( '/roster' ) ) )
 {
  Icon = external.globals( 'cwd' ) + '..\\images\\main\\logo.png';
  Tooltip = external.globals( 'Translator' ).Translate( 'main', 'cl_tooltip', [ external.globals('softwarename' ) ] );
  IsActive = true;
  HTMLArea = document.getElementById( 'content-area' );
  DrawButton();
 }
with (...)の行が該当行です。内容的に目立って怪しいところがあるわけでもないのが悩ましいですが、どこで問題が起こっているかを一か所ずつ区切って確認しました。'.'で何段にもなっているどこかでnullが返っているのではないかと見てみたものの問題は無し。new ClientPluginTab(...)の部分も正常にインスタンス生成している。 となると問題はメソッド呼び出し。直前の行でexternal.globals('ClientPluginContainer')の部分は問題がないので、その次の.Plugins('/roster')の部分が怪しいんじゃないかとにらみました。Pluginsはこれ、他の箇所で下記のようにして生成されるActiveXオブジェクト"Scripting.Dictionary"。

/* This loads and manages the tabs.
 */
function ClientPluginContainer ()
{
	this.Plugins		= new ActiveXObject( 'Scripting.Dictionary' ); // filename->PluginCore
	this.HTMLTabBar		= document.getElementById( 'tab-bar' );
	this.HTMLTabArea	= document.getElementById( 'plugin-tab-area' );
"Scripting.Dictionary"オブジェクトは文字通り辞書オブジェクトを扱うわけなんですが、上記のPlugins( '/roster' )は辞書オブジェクトのkey='/roster'から紐づくvalueを取り出す呼び出しです。これはPlugins.Item('/roster')と書き換えても同じになるんですが。 書き換えたら通ったじゃないですか…。 というわけで、まだRCなので正式版になったら治るかもしれませんが、IE9ではこの"Scripting.Dictionary"オブジェクトの呼び出しに注意しないといけないようです。同様の問題のある箇所はここ以外にもたくさんあったので手元での修正はあきらめて、pandionの作者にこの件を報告しました。Pandionは業務でも大活躍なので、このままだとKLabではIE9が使えないことになってしまいますわん…。 http://getsatisfaction.com/pandion/topics/pandion_stops_working_with_ie9_rc Pandion stops working with IE9 RC