无法点击Firefox上的flash中的允许按钮

时间:2010-06-09 07:08:43

标签: flash firefox

我有一个webapp在iframe中嵌入了一些flash内容。闪存部分正在请求访问网络摄像头。在firefox / mac os上,用户无法单击允许按钮。这只发生在嵌入swf文件的页面加载到iframe中时,单独使用时它可以正常工作。还有其他人遇到过类似的问题吗?你知道任何解决方法吗?

编辑:为了将来参考:我们通过JS定位一些东西,我们使用“半像素”(例如20.5像素)的位置。一旦我们确定一切正常。

6 个答案:

答案 0 :(得分:16)

我发现当你在CSS中使用margin auto时,这个bug也会存在。

例如,固定宽度&中心对齐布局其典型使用“margin:0px auto;”保持内容集中。这似乎为内容产生了可能的(可能的)十进制左/右边距。对于Firefox来说这不是一个真正的问题..它处理十进制像素偏移就好了。

但Flash小部件在他们的对象容器使用小数像素值定位时似乎总是吓坏了。至少,您无法与“允许”按钮进行交互。对我来说,这似乎是这个错误的根本原因,你会看到许多人广泛报道(因为它至少与FF有关)。

至于为什么它只出现在FF中,我不完全确定。在我的OSX计算机上,Safari和Chrome不会对flash对象表现出这种行为。也许Webkit中的所有DOM元素都会自动呈现圆角像素偏移值?

对于Firefox,我实现了这种解决方法(对于中心对齐设计很有用):

$(document).ready( function() {
  repositionContentContainer();
});

function repositionContentContainer() {
  // this routine is a complete hack to work around the flash "Allow" button bug
  if ( $("#content").length > 0 ) {

    //Adjust the #content left-margin, since by default it likely isn't an int
    setLeftMargin();
    //If the User resizes the window, adjust the #content left-margin
    $(window).bind("resize", function() { setLeftMargin(); });
  }
}

function setLeftMargin() {
  var newWindowWidth = $(window).width();
  var mainWellWidth = $("#content").width();
  // create an integer based left_offset number
  var left_offset = parseInt((newWindowWidth - mainWellWidth)/2.0);
  if (left_offset < 0) { left_offset = 0; }
  $("#content").css("margin-left", left_offset);
}

答案 1 :(得分:7)

wmode 设置为“直接”修复此问题。
无需将'margin'/'position'值设置为整数。

请注意,“直接”wmode自Flash 10起可用,并且在IE

下无效

答案 2 :(得分:3)

正在Adobe错误数据库中跟踪此问题:

http://bugs.adobe.com/jira/browse/FP-4656

基本问题是Firefox使用半像素定位,adobe在调整大小后不规则地使用它。这是通过页面上的中心swfs实现的,或者如果swf位于居中的iframe内部(例如大多数facebook应用程序),则更糟糕。

在那里发布了一个解决方案矩阵,涵盖了浏览器缩放,调整大小和其他复杂功能。

答案 3 :(得分:0)

我知道这是一个老问题,但我刚发现另一个导致相同错误的问题,这是谷歌的最高结果,所以我添加了这个答案。

页面背景上的CSS3渐变(也可能在容器div背景上)也会导致此问题。删除渐变,再次单击该按钮。

答案 4 :(得分:0)

还检查您没有任何父div(或div本身)与CSS转换规则,例如:

transform: translateX(-50%);

答案 5 :(得分:-3)

我能够让它发挥作用。 Ahuh!

使用Tab键直到它突出显示整个Flash Player设置框,然后再次按Tab键,直到它突出显示框右上方的“问号”按钮。反复按空格键或Enter按钮,直到它在浏览器上打开另一个选项卡。现在返回Flash Player设置的上一页,再次按Tab键,直到它突出显示“允许按钮”或“拒绝按钮”,具体取决于您将做什么。按空格键或Enter按钮,然后瞧!你去吧!

希望它有所帮助。大家度过愉快的夜晚! :)