Может ли Safari отображать ReCaptcha в модальном диалоговом окне?

Я пытаюсь показать ReCaptcha в модальном диалоговом окне (jquery). Я пробовал это с blockUI, SimpelModal и ThickBox. С каждым из них он отлично работает в Firefox, а не в Safari (не проверял Chrome).

Что происходит, так это то, что когда открывается диалоговое окно, Safari внезапно решает показать только ReCaptcha.

Я подозреваю, что это либо ошибка в Webkit, либо в ReCaptcha. Но я не могу понять, что заставило Safari так относиться к ReCaptcha. Или это javascript ReCaptcha, который мешает этому? Для меня это полная загадка.

Я хотел бы услышать любые идеи для обходных путей.

Изменить. Еще одна деталь: когда Safari показывает только ReCaptcha, заголовок страницы остается таким же, как и у исходной страницы. Источник остается первоисточником. Даже дерево DOM выглядит нормально. Но он показывает только ReCaptcha.

Если я заменю рекапчу другим iframe, все будет нормально. Отображение рекапчи на странице без модального диалога тоже работает нормально. Так что на самом деле это комбинация всплывающего окна Safari + ReCaptcha + jQuery, которая вызывает проблему.

Изменить: я только что заметил, что ReCaptcha использует iframe только при отключенном Javacript. Так что мой тест iframe не имеет значения. Это должна быть несовместимость между javascript ReCaptcha (от Google, так что вы ожидаете достойную кросс-браузерность), jQuery (обычно хорош в кросс-браузерных вещах) и Safari (Webkit, связанный с Google Chrome).

До сих пор остается полной загадкой, почему эта конкретная комбинация так сильно потерпела неудачу.


person mcv    schedule 10.06.2011    source источник


Ответы (2)


Вот мое решение:

$('#captcha-form script').remove();

'captcha-form' - это идентификатор формы, содержащей капчу. Удалите теги сценария, чтобы сценарии не выполнялись во второй раз, когда Safari перерисовывает их после перемещения jQuery. Обработчики событий, созданные сценарием, не находятся в тегах сценария, поэтому они сохраняются.

Работает в Safari и Firefox 4. Сейчас я проверю это в некоторых других браузерах.

person mcv    schedule 10.06.2011
comment
Только что протестировано и работает: исправляет Safari и не ломает Firefox (4), Chrome, IE (8) или Opera (11). - person Pablo Venturino; 10.08.2011

У меня была такая же проблема, и я решил ее с помощью API-интерфейса Recaptcha ajax для создания капчи после того, как модальный div, содержащий ее, был открыт: http://code.google.com/apis/recaptcha/docs/display.html

$("#EmailSignupModal").dialog('open');

//only call create the first time the dialog is opened.
if ($("#recaptcha_area").length == 0){
   Recaptcha.create("--public key--", "EmailCaptchaContainer", {
      theme: "clean",
      callback: Recaptcha.focus_response_field
   });
}
person BenWillkommen    schedule 14.06.2011