在关闭弹出窗口时遇到“__flash__removeCallback”未定义的错误,这个问题确实让人头疼。当你使用swfupload作为上传组件,artdialog作为弹出窗口时,这个错误可能会反复出现。
这个错误的原因在于,当flash对象需要从页面中移除时,它会尝试调用"__flash__removeCallback"这个函数,但在某些情况下,这个函数并没有被正确定义。虽然网上有解决方案建议覆写"__flash__removeCallback"函数的定义,但在你的环境下,这个方法似乎并不奏效。
问题的核心在于,当你使用artdialog关闭流程,即使用html("")将内容置空时,flash对象也被一并移除了。包含"__flash__removeCallback"函数定义的js文件可能也被同时移除,导致无法找到该函数。在关闭窗口前,需要确保先移除flash对象。
一个可能的解决方案是,在移除包含flash对象的父对象之前,直接进行移除操作。例如,你可以使用类似“div.remove()”这样的代码来移除包含flash的div元素。
还需要确保"__flash__removeCallback"函数始终被正确定义。你可以尝试在代码中添加如下定义:
```javascript
window["__flash__removeCallback"] = function (instance, name) {
try {
if (instance) {
instance[name] = null;
}
} catch (flashEx) {
}
};
```
这段代码的目的是修复Flash自身的清理代码,使其在从页面中移除SWFMovie时不会显示错误。你需要确保这段代码在你的JS文件中被正确引入,并且在移除flash对象时,该函数仍然可用。
解决这个问题的关键在于确保flash对象在被移除时,"__flash__removeCallback"函数能够被正确调用。希望这些解决方案能够帮助你解决问题,让弹出窗口的关闭流程更加顺畅。