2010-06-09 22 views
19

Tôi có webapp nhúng một số nội dung flash vào khung nội tuyến. Phần flash đang yêu cầu quyền truy cập vào webcam. Trên firefox/mac os, người dùng không thể nhấp vào nút cho phép. Điều này chỉ xảy ra khi trang nhúng tệp swf được tải trong khung nội tuyến, nó hoạt động tốt khi được vận chuyển riêng lẻ. Có ai khác phải đối mặt với một vấn đề tương tự? Bạn có biết cách giải quyết nào không?Không thể nhấp vào nút cho phép trong flash trên firefox

EDIT: Để tham khảo trong tương lai: chúng tôi đã định vị một số nội dung thông qua JS và chúng tôi có vị trí sử dụng "một nửa pixel" (ví dụ: 20,5px). Khi chúng tôi đã khắc phục mọi thứ hoạt động tốt.

Trả lời

16

Tôi thấy rằng lỗi này cũng sẽ tồn tại trong các tình huống khi bạn sử dụng tự động lề trong CSS.

Ví dụ: với chiều rộng cố định & bố cục được căn giữa để sử dụng "margin: 0px auto;" để giữ nội dung được căn giữa. Điều này dường như tạo ra (có thể) các số thập phân trái/phải thập phân cho nội dung tốt. Đó không thực sự là một vấn đề đối với Firefox .. nó xử lý các điểm ảnh số thập phân vừa tốt.

Nhưng các tiện ích Flash hoàn toàn dường như kỳ cục khi vùng chứa đối tượng của chúng được định vị với giá trị pixel thập phân. Tối thiểu, bạn không thể tương tác với nút "Cho phép". Đối với tôi, điều này có vẻ là nguyên nhân gốc rễ của lỗi này, bạn sẽ thấy nhiều báo cáo của nhiều người (vì nó liên quan đến FF atleast).

Vì lý do tại sao nó chỉ xảy ra trong FF, tôi không hoàn toàn chắc chắn. Trên máy OSX của tôi, Safari và Chrome không thể hiện hành vi này với các đối tượng flash. Có lẽ tất cả các phần tử DOM trong Webkit được trả về tự động với các giá trị bù đắp pixel được làm tròn?

Đối với Firefox, tôi thực hiện việc này (hữu dụng cho trung tâm thiết kế liên kết):

$(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

này đưa tôi tháng để tìm ra ... tất cả mọi thứ sử dụng lề tự động –

+0

Dành nhiều ngày để giải quyết vấn đề này và cuối cùng tìm thấy giải pháp này ... :) – Sutha

+0

Điều này cũng xảy ra với tôi trên OSX Safari 8.0.3, Flash 16.0.0.305 – d2vid

3

Vấn đề này đang được theo dõi tại cơ sở dữ liệu lỗi Adobe:

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

Vấn đề cơ bản là Firefox sử dụng định vị một nửa pixel và adobe sử dụng nó bất thường sau khi thay đổi kích thước. Điều này xảy ra thông qua các swfs trung tâm trên một trang hoặc thậm chí tệ hơn nếu swf nằm trong iframe trung tâm, chẳng hạn như hầu hết các ứng dụng facebook.

Có ma trận giải pháp được đăng ở đó bao gồm thu phóng, thay đổi kích thước và các biến chứng khác của trình duyệt.

+0

Cảm ơn. Tốt để biết điều này đang được làm việc trên. – Alex

7

Đặt wmode thành 'trực tiếp' đã sửa lỗi này.
Không cần đặt giá trị 'lề'/'vị trí' làm số nguyên.

Lưu ý rằng wmode 'trực tiếp' có sẵn từ Flash 10 và không hoạt động trong IE

-3

Tôi có thể làm cho nó hoạt động. Ahuh!

Sử dụng nút Tab cho đến khi nó đánh dấu toàn bộ hộp cài đặt Flash Player, sau đó nhấn lại nút Tab cho đến khi nó đánh dấu nút "dấu chấm hỏi" ở phần trên bên phải của hộp. Nhấn phím Space hoặc nút Enter nhiều lần cho đến khi nó mở một tab khác trên trình duyệt của bạn. Bây giờ trở lại từ trang trước, nơi cài đặt Flash Player, nhấn lại nút Tab cho đến khi nó làm nổi bật nút "Cho phép" hoặc "Nút từ chối" tùy thuộc vào bạn sẽ làm gì. Nhấn phím Space hoặc nút Enter và thì đấy! Có bạn đi!

Hy vọng điều đó sẽ hữu ích. Có một buổi tối dễ chịu tất cả mọi người!:)

+4

Đó là một số trolling phong nha ...! – nirazul

0

Tôi biết đây là câu hỏi cũ nhưng tôi vừa phát hiện một vấn đề khác đã gây ra lỗi tương tự và đây là kết quả hàng đầu của Google nên tôi thêm câu trả lời này.

Độ dốc CSS3 trên nền trang của bạn (có thể trên nền div vùng chứa) cũng sẽ gây ra sự cố này. Xóa gradient và nút có thể nhấp lại.

0

Kiểm tra cũng có thể bạn không có bất kỳ div mẹ (hoặc div chính nó) với một CSS transform quy tắc, Eg .:

transform: translateX(-50%); 
Các vấn đề liên quan