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

19

我有一个webapp在iframe中嵌入一些flash内容。Flash部分正在请求访问网络摄像头。在火狐浏览器/苹果操作系统上,用户无法点击允许按钮。只有当加载包含swf文件的页面放在iframe中时才会出现此问题,当单独加载时正常工作。是否有其他人遇到类似的问题?您知道有什么解决方法吗?

编辑:供参考:我们使用JS定位某些元素时,使用了“半个像素”(例如,20.5px)来设置位置。一旦我们修复了这个问题,一切都正常工作了。

6个回答

16
我发现在CSS中使用margin auto时,这个bug也会存在。
例如,在固定宽度和居中对齐的布局中,通常使用“margin: 0px auto;”来保持内容的居中。这似乎会为内容框产生可能(很可能)的小数左/右边距。对于Firefox来说,这并不是真正的问题...它可以很好地处理小数像素偏移量。
但是,当Flash小部件的对象容器被定位为小数像素值时,它们似乎完全无法正常工作。至少,您无法与“允许”按钮交互。对我来说,这似乎是你将看到许多人广泛报告的这个bug的根本原因(至少涉及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);
}

这让我花了几个月的时间才弄明白...所有东西都使用了margin auto。 - Chad Cache
花了好几天的时间解决这个问题,最终找到了这个解决方案... :) - User 99x
这对我来说也发生在OSX Safari 8.0.3和Flash 16.0.0.305上。 - d2vid
脚本对我不起作用(火狐浏览器37.0.1,Shockwave Flash 11.2 r2 02),无法修复坏的特性。 - sergzach

7
wmode 设置为 'direct' 可以解决这个问题。
不需要将 'margin' / 'position' 值设置为整数。
请注意,'direct' wmode 仅适用于 Flash 10,且在 IE 下无效。

3
这个问题正在Adobe bug数据库中跟踪:

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

基本问题在于Firefox使用半像素定位,而Adobe在调整大小后不规则地使用它。这是通过在页面上放置居中的swfs产生的,如果swf在一个居中的iframe内,例如大多数Facebook应用程序,则会变得更糟糕。那里发布了一个解决方案矩阵,涵盖了浏览器缩放、调整大小和其他复杂情况。

0

同时也要检查您的父级 div(或 div 本身)是否有 CSS 变换规则,例如:

transform: translateX(-50%);

0

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

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


-3

我成功让它工作了。啊呼!

使用 Tab 键直到整个 Flash Player 设置框被突出显示,然后再按 Tab 键直到突出显示框的右上部分的“问号”按钮。重复按空格键或回车键,直到在浏览器中打开另一个选项卡。现在从 Flash Player 设置的上一页返回,再次按 Tab 键,直到突出显示“允许”按钮或“拒绝”按钮,具体取决于您要做什么。按下空格键或回车键,完成!

希望能有所帮助。祝大家晚上愉快!:)


4
那是相当不错的挑逗...! - nirazul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接