IEにおいてJSのメソッドを定義する

ブログバトラーのブログパーツにてswf内からjsを宣言していたんですが,どうもそれによる不具合が発生.
例えば

this.getURL('javascript:this.test1=function("alert('test1');");');
this.getURL('javascript:this.test2=function("alert('test2');");');
this.getURL('javascript:this.test3=function("alert('test3');");');

と連続して宣言した際になぜかIEでは2つ目以降が宣言されなかった.

これは常にそうなのか,分からないけどonEnterFrameにて1フレームごとに宣言することで解決....

var count:Number = 0;
this.onEnterFrame = function():Void {
  switch(count++) {
    case 1:
      this.getURL('javascript:this.test1=function("alert('test1');");');
      break;
    case 2:
      this.getURL('javascript:this.test2=function("alert('test2');");');
      break;
    case 3:
      this.getURL('javascript:this.test3=function("alert('test3');");');
      break;
    case 4:
      delete this.onEnterFrame;
      break;
  }
};

とおもったらそれでもそれ以降に書かれた(?)jsがIEにてエラーになりバナーや他のブログパーツが表示されない等の不具合が発生...(大変もうしわけございません...)

ちょっと原因や,環境,スクリプトの書く位置などがクリティカルに言えないけど,複数のjsのメソッドをswfから宣言させるのは避けたほうがいい?のかもしれない... 結局jsファイル内に記載することで解決した模様です.


contributor nao : 2006年12月23日 01:53

comment

ども。ぼくもこれハメられました。
IEだとgetURLで連続してjs呼び出しができなかった(メソッド宣言とか関係なく)。
で、getURL("javascript:foo();bar()"); と一度の呼び出しで済ませて解決しました。あとExternalInterfaceでも問題なかったです。

contributor タナカヤスヒロ : 2006年12月25日 15:11


> タナカさん
おひさしぶりです.
複数の宣言じゃなくて複数のgetURLによるjsの呼び出しがダメなんですね... なるほど,そういうアレなんですね.
Player7でなければExternalInterfaceを使いたいところなんですけどね.

contributor nao : 2006年12月26日 00:31