昨日、2010年10月31日に対応してました。ほんと、びっくりしてしまいました。
もともと、Flash の問題として発生していたみたいなんですが、えらい迷惑です。
[FP-383] ExternalInterface.objectID がセットされていません。
昨日のテストでは、IE や Firefox では発生せずに、Google Chrome で起こります。
( Flash は、10,1,85,3 )
仕方無いので FlashVars を併用する事にしていますが、ここ最近の問題は
それだけでは無く、Firefox のみ、Flash(Flex) で呼び出した JavaScript
の関数内で、alert を実行するとフリーズするという現象です。
昨日、古いPC の Opera でも発生したので全ての処理で、
setTimeout("alert('文字列')", 10 );
に書き換える必要がありそうです。
// *********************************************************
// 汎用型 クリップボードコピー用 Flash ボタン
// *********************************************************
package {
import flash.display.*;
import flash.events.*;
import flash.external.*;
import flash.system.*;
import flash.net.*;
// 表示用クラス 【Sprite】を継承
public class flashButton extends Sprite {
[Bindable]
[Embed("button.gif")]
private var imgButton:Class;
private var strid:String;
// *********************************************************
// コンストラクタ
// *********************************************************
public function flashButton():void {
// IE:Object の id,それ以外 Embed の name
strid = ExternalInterface.objectID;
if ( strid == null ) {
strid = stage.loaderInfo.parameters.objid;
}
// Firebug 用
// ExternalInterface.call("console.log", strid );
// stage の設定
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
// マウスイベント取得用
var eventArea:Sprite = new Sprite();
eventArea.x = 0;
eventArea.y = 0;
eventArea.buttonMode = true; // ハンドカーソル
addChild(eventArea);
var imgPath:String = ExternalInterface.call( "orgCodeInit", strid );
if ( imgPath == null || imgPath == "" ) {
// デフォルトのボタン画像
var myImg:Bitmap = new imgButton();
myImg.x = 0;
myImg.y = 0;
eventArea.addChild(myImg);
}
else {
var loader:Loader = new Loader();
loader.load(new URLRequest(imgPath));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
function ():void {
eventArea.addChild( loader );
}
);
}
eventArea.addEventListener(MouseEvent.CLICK,
function(ev:flash.events.MouseEvent):void {
// Firebug 用
// ExternalInterface.call("console.log", strid );
var shift_flg:String;
var ctrl_flg:String;
if ( ev.shiftKey ) {
shift_flg = "1";
}
else {
shift_flg = "0";
}
if ( ev.ctrlKey ) {
ctrl_flg = "1";
}
else {
ctrl_flg = "0";
}
var str:String =
ExternalInterface.call(
"orgCodeGetForClipcopy",
strid,
shift_flg,
ctrl_flg
);
// 戻された文字列に何か入っていたら
// クリップボードにコピーして再び呼び出す
if ( str != null && str != "" ) {
System.setClipboard(str);
ExternalInterface.call("orgCodeClipcopyEnd" );
}
}
);
}
}}