我正在使用facebook社交小部件的asp.net mvc网站上工作。每当我启动调试器(ie9是浏览器)时,我会收到许多错误弹出窗口:错误:'__flash__removeCallback'未定义。
要验证我的代码不负责任,我刚刚创建了一个全新的asp.net mvc网站并点击了F5。 如果您导航到此网址:http://developers.facebook.com/docs/guides/web/#plugins,您会看到弹出窗口显示。
使用其他浏览器时,不会显示弹出窗口。 我在昨天更新到ie9 RTM之前一直在使用最新的ie9测试版,并且没有遇到过这个问题。
你可以想象它非常烦人...... 我怎么能阻止那些弹出窗口? 其他人可以重现这个吗?
谢谢!
答案 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现在已经解决了这个问题。恼人的弹出窗口不再出现。 我没有改变任何事情。