У меня есть форма, в которой используется reCAPTCHA. По какой-то причине, когда пользователь отправляет эту форму с неверным значением повторного захвата, когда страница повторно визуализируется, повторный захват не может быть отображен.
Похоже, что это происходит, повторный захват пытается внедрить тег "скрипт" , и время от времени (и только в определенных браузерах, в определенных средах, и в некоторых сценариях) не удается добавить этот тег «скрипт» в DOM.
Это происходит примерно так:
1) В форму встроен встроенный JavaScript, который выглядит следующим образом:
https://www.google.com/recaptcha/api/challenge?k=<our public key>
2) Этот скрипт выполняется правильно и возвращает следующее:
var RecaptchaState = {
site : <some value>,
challenge : <challenge key>,
is_incorrect : false,
programming_error : '',
error_message : '',
server : 'https://www.google.com/recaptcha/api/',
timeout : 18000
};
document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');
3) После этого обычно происходит то, что тег скрипта вводится на страницу, загружается recaptcha.js, и он будет читать RecaptchaState, чтобы вызвать recaptcha для визуализации изображения.
Однако в некоторых случаях по какой-то причине тег скрипта, который должен быть добавлен в 2), никогда не появляется в DOM, поэтому recaptcha.js никогда не загружается, поэтому recaptcha никогда не отображается! Я вижу в консоли после того, как страница отрисована, что «RecaptchaState» существует и имеет правильное значение, просто нет тега скрипта, который мог бы быть с ним.
Так что ' что происходит, и я действительно не понимаю, почему. Я могу воспроизвести это только в Firefox, и, как ни странно, это происходит только при определенных условиях. Например, если я маршрутизирую запросы через скрипач, он будет работать каждый раз и никогда не откажет. Если я очищу свой кеш перед отправкой запроса, он будет работать каждый раз. Иногда, когда я ожидаю неудачи, это работает, и наоборот. Так что это очень спорадически.
Я думаю, что, возможно, это имеет какое-то отношение к времени загрузки js, которое мешает оператору "document.write". Может быть, этому мешает какой-то другой javascript или что-то в этом роде. Просто ищу некоторые общие идеи относительно того, как я могу попытаться разобраться в этом, тесты, которые я могу запустить, вещи, которые я могу искать, или любые идеи в целом.
Заранее спасибо
Обновление
Все равно не удалось разобраться. Одна мысль у меня была ... мы не видим сообщений об ошибках в консоли firebug, которые указывали бы на то, что что-то идет не так, хотя что-то очевидно. Есть ли какие-нибудь утилиты, которые мы могли бы использовать, чтобы лучше понять, что происходит в Firefox? Я думаю о чем-то вроде «Speed-Tracer» для Chrome, который дает вам очень подробную хронологию событий. Единственная проблема здесь в том, что мы не можем воспроизвести который дает вам очень подробную хронологию событий. Единственная проблема здесь в том, что мы не можем воспроизвести который дает вам очень подробную хронологию событий. Единственная проблема здесь в том, что мы не можем воспроизвести это в Chrome.