2010-06-09 72 views
19

我有一個web應用程序將一些Flash內容嵌入到iframe中。閃存部分正在請求訪問攝像頭。在firefox/mac os上,用戶無法點擊允許按鈕。這隻發生在嵌入swf文件的頁面加載到iframe中時,它在單獨放置時工作正常。有沒有其他人面臨類似的問題?你知道任何解決方法嗎?無法在Firefox上的Flash中單擊允許按鈕

編輯:爲了將來的參考:我們通過JS定位一些東西,我們有位置使用「半像素」(例如20.5px)。一旦我們確定一切正常。

回答

16

我發現當你在CSS中使用margin auto時,這個bug也會存在。

例如,以固定寬度&居中對齊佈局,其典型使用「margin:0px auto;」保持內容的中心。這似乎爲內容產生了可能的(可能)小數左/右邊距。這對於Firefox來說並不是問題..它處理十進制像素偏移就好了。

但是,Flash小部件在其對象容器定位爲小數像素值時完全顯得非常怪異。至少,您不能與「允許」按鈕進行交互。對我來說,這似乎是這個錯誤的根源,你會看到許多人廣泛報道(因爲它與FF atleast有關)。

至於爲什麼它只發生在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); 
} 
+0

這花了我幾個月找出...一切使用保證金自動 – 2011-03-27 23:24:12

+0

花了幾天時間來解決這個問題,終於找到了這個解決方案... :) – Sutha 2014-05-06 05:38:13

+0

也會出現這種情況,我在OSX上的Safari 8.0.3,閃存16.0.0.305 – d2vid 2015-03-08 18:19:38

3

這個問題正在於Adobe bug數據庫跟蹤:

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

基本問題是Firefox使用半像素定位,Adobe在調整大小後不規則地使用它。這是通過在頁面上居中的swf來實現的,或者如果swf位於中心iframe中,例如大多數facebook應用程序,則會變得更糟。

這裏有一個解決方案矩陣,包括瀏覽器縮放,調整大小和其他複雜情況。

+0

感謝。很高興知道這是正在工作。 – Alex 2011-02-21 09:08:01

7

wmode設置爲'直接'固定此。
無需將'margin'/'position'值設置爲整數。

需要注意的是「直接」的wmode可自Flash 10和不工作的IE

-3

我能夠使它發揮作用。 Ahuh!

使用Tab按鈕,直到它突出顯示整個Flash Player設置框,然後再次按下Tab按鈕,直到它突出顯示框右上部分的「問號」按鈕。重複按空格鍵或輸入按鈕,直到它打開瀏覽器上的另一個選項卡。現在回到Flash Player設置的上一頁,再次按下Tab按鈕,直到它突出顯示「允許按鈕」或「拒絕按鈕」,具體取決於您的操作。按空格鍵或輸入按鈕,瞧!你走了!

希望它有幫助。祝大家晚上愉快!:)

+4

這是一些不錯的曳......! – nirazul 2012-11-17 17:33:35

0

我知道這是一個老問題,但我剛剛發現這是造成同樣的錯誤另一個問題,這就是頂部谷歌的結果,所以我加入這個答案。

一個CSS3漸變在你的頁面的背景(可能在容器DIV的背景也一樣)也會導致這個問題。刪除漸變,該按鈕可以再次點擊。

0

檢查,你也沒有任何父DIV(或DIV本身)用CSS變換規則,如:

transform: translateX(-50%); 
相關問題