Может ли Safari показывать ReCaptcha в модальном диалоге? - PullRequest
2 голосов
/ 10 июня 2011

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

В результате при открытии диалогового окна Safari вдруг решает показать только ReCaptcha.

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 10 июня 2011

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

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

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

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

0 голосов
/ 14 июня 2011

У меня возникла та же проблема, и я решил ее с помощью API ajax Recaptcha для создания капчи после открытия модального 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
   });
}
...