1. ホーム
  2. Web プログラミング
  3. フレックス

ie9でポップアップウィンドウを閉じる際に__flash__removeCallbackが未定義エラーになる。

2022-01-03 03:23:11

swfuploadをアップロードコンポーネントとして、artdialogをポップアップウィンドウとして使用すると、ポップアップウィンドウを閉じるときに、"__flash__removeCallback" undefinedエラーが発生します。そして、閉じた後にもまた表示されます。Web上にいくつかの解決策がありますが、それは主にswfuploadコンポーネントですでに利用可能な"__flash__removeCallback"関数の定義を上書きすることを意味します。

// Fix Flashes own cleanup code so if the SWFMovie was removed from the page
// it doesn't display errors.
window["__flash__removeCallback"] = function (instance, name) {
try {
if (instance) {
instance[name] = null;
}
} catch (flashEx) {

}
};

しかし、私の環境では有効ではありません。このエラーの説明は、フラッシュオブジェクトは、このコールバック関数を呼び出すには、ドキュメントを削除すると、関数の定義を見つけることができないことです。artdialogの終了処理を確認したところ、html("")で、中身は空の状態です。

コンテンツが空になるとフラッシュオブジェクトが削除されることが問題なのでしょう。そして、__flash__removeCallback関数を定義しているjsファイルも削除されています。そのため、見つからないのです。解決策は、ウィンドウを閉じる前にフラッシュ・オブジェクトを削除することです。

フラッシュオブジェクトを含む親オブジェクトを直接削除します。div.remove()のように。

つまり、主な解決策は、上記の関数定義があり、フラッシュを削除してもその関数が使用可能であることを確認することです。