ie9:调试时出现恼人的弹出:“错误:'__flash__removeCallback'未定义”

时间:2011-03-18 11:55:27

标签: asp.net-mvc visual-studio-2010 facebook internet-explorer-9

我正在使用facebook社交小部件的asp.net mvc网站上工作。每当我启动调试器(ie9是浏览器)时,我会收到许多错误弹出窗口:错误:'__flash__removeCallback'未定义。

要验证我的代码不负责任,我刚刚创建了一个全新的asp.net mvc网站并点击了F5。 如果您导航到此网址:http://developers.facebook.com/docs/guides/web/#plugins,您会看到弹出窗口显示。

使用其他浏览器时,不会显示弹出窗口。 我在昨天更新到ie9 RTM之前一直在使用最新的ie9测试版,并且没有遇到过这个问题。

你可以想象它非常烦人...... 我怎么能阻止那些弹出窗口? 其他人可以重现这个吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

我似乎无法解决这个问题,但我至少可以为我的用户隐藏它:

$('#video iframe').attr('src', '').hide();
try {
    $('#video').remove();
} catch(ex) {}

第一行可以防止问题搞砸页面;当jquery明确地从DOM中删除它时,第二个吃错误。在我的情况下,我正在替换此标记上方的几个父项的容器的HTML,并将此异常暴露给用户,直到此修复。

答案 1 :(得分:1)

我正在回答这个问题,因为今天我把它推到了墙上。

它是由flash引起的,通常是你没有在你的嵌入对象上放一个唯一的id,所以它选择了错误的元素。

解决这个问题的最快(最好)方法就是:

为嵌入/对象添加一个独特的ID

现在这似乎并不总能解决它,我有一个网站,无论我设置了什么元素都不会消失(我怀疑这是我被客户要求使用的视频播放器) )。

这个javascript代码(使用jQuery的文档加载,替换为您最喜欢的替代方案)将摆脱它。现在这显然不会删除某些元素的回调。他们必须想要删除它是有原因的,也许它会导致你的网站上的内存逐渐泄漏,但这可能是微不足道的。

这是次要(非最佳)解决方案

    $(function () {
        setTimeout(function () {
            if (typeof __flash__removeCallback != "undefined") {
                __flash__removeCallback = __flash__removeCallback__replace;
            } else {
                setTimeout(arguments.callee, 50);
            }
        }, 50);
    });

    function __flash__removeCallback__replace(instance, name) {
        if(instance != null)
            instance[name] = null;
    }

答案 2 :(得分:1)

我得到了解决方案。

try {
  ytplayer.getIframe().src='';
} catch(ex) {
}

答案 3 :(得分:0)

自从我上次需要调试项目以来已经过去了一个多月。 Facebook现在已经解决了这个问题。恼人的弹出窗口不再出现。 我没有改变任何事情。