Не могу нажать кнопку разрешения во Flash на Firefox - PullRequest
19 голосов
/ 09 июня 2010

У меня есть веб-приложение, встраивающее флэш-контент в iframe. Вспышка запрашивает доступ к веб-камере. В Firefox / Mac OS пользователь не может нажать кнопку разрешения. Это происходит только в том случае, если страница встраивания SWF-файла загружается в iframe, она прекрасно работает при отдельной загрузке. Кто-нибудь еще сталкивался с подобной проблемой? Знаете ли вы какие-нибудь обходные пути?

РЕДАКТИРОВАТЬ: Для дальнейшего использования: мы позиционировали некоторые вещи через JS, и у нас были позиции с использованием «половины пикселей» (например, 20,5 пикселей). Как только мы исправили, что все работало нормально.

Ответы [ 6 ]

16 голосов
/ 18 сентября 2010

Я обнаружил, что эта ошибка также будет существовать в ситуациях, когда вы используете margin auto в CSS.

Например, в компоновке с фиксированной шириной и выравниванием по центру обычно используется «margin: 0px auto;» держать контент в центре внимания. Похоже, что это дает возможные (вероятные) десятичные поля слева / справа для содержимого. Это не проблема для Firefox ... он отлично справляется с десятичными смещениями пикселей.

Но Flash-виджеты, кажется, полностью теряют сознание, когда их контейнер объектов позиционируется с десятичными значениями пикселей. Как минимум, вы не можете взаимодействовать с кнопкой «Разрешить». Мне кажется, что это является основной причиной этой ошибки, о которой вы будете часто сообщать многие (поскольку это относится к FF по крайней мере).

Что касается того, почему это происходит только в FF, я не совсем уверен. На моей машине с OSX Safari и Chrome не демонстрируют такое поведение с флеш-объектами. Возможно, все элементы DOM в Webkit отображаются автоматически со значениями смещения в скругленных пикселях?

Для 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);
}
7 голосов
/ 02 ноября 2012

Установка wmode на ' direct ' исправила это.
Нет необходимости устанавливать значения 'margin' / 'position' как целые числа.

Обратите внимание, что 'прямой' режим wmode доступен начиная с Flash 10 и не работает в IE

3 голосов
/ 21 февраля 2011

Эта проблема отслеживается в базе данных ошибок Adobe:

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

Основная проблема заключается в том, что Firefox использует полупиксельное позиционирование, а Adobe использует его нерегулярно после изменения размера.Это происходит с помощью центрированных SWF-файлов на странице или становится еще хуже, если SWF-файл находится внутри центрированного фрейма, такого как большинство приложений Facebook.

Здесь размещена матрица решений, которая охватывает масштабирование, изменение размера и другие сложности браузера.

0 голосов
/ 10 июня 2015

Проверьте также, что у вас нет родительского div (или самого div) с правилом преобразования CSS, например ::

transform: translateX(-50%);
0 голосов
/ 10 декабря 2013

Я знаю, что это старый вопрос, но я только что обнаружил другую проблему, которая вызывала ту же ошибку, и это лучший результат Google, поэтому я добавляю этот ответ.

CSS3-градиент на фоне страницы (возможно, на фоне контейнера контейнера) также вызовет эту проблему. Удалите градиент, и кнопка снова станет активной.

0 голосов
/ 17 ноября 2012

Я смог заставить его работать.Аххх!

Используйте кнопку «Tab», пока она не выделит весь блок настроек Flash Player, затем снова нажмите кнопку «Tab», пока она не выделит кнопку «вопросительный знак» в правой верхней части окна.Нажимайте клавишу пробела или кнопку Enter, пока не откроется еще одна вкладка в вашем браузере.Теперь вернитесь с предыдущей страницы, где находятся настройки Flash Player, нажмите кнопку Tab еще раз, пока она не высветит «Разрешить кнопку» или «Запретить кнопку» в зависимости от того, что вы будете делать.Нажмите пробел или кнопку Enter и вуаля!Вот и все!

Надеюсь, это поможет.Всем приятного вечера!:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...