У меня есть форма, которая использует reCAPTCHA.По какой-то причине, когда пользователь отправляет эту форму с неправильным значением повторного захвата, при повторной визуализации страницы повторный захват не может отображаться.
Похоже, что это происходит, когда повторный захват пытается ввести "script ", и время от времени (и только в определенных браузерах, определенных средах и в определенных сценариях) не удается добавить этот тег" script "в 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 для получения изображения для рендеринга.
Однаков некоторых случаях, по какой-то причине, тег script, который должен быть добавлен в 2), никогда не добавляется в DOM, поэтому recaptcha.js никогда не загружается, поэтому recaptchaникогда не отображается!Я могу видеть в консоли после отображения страницы, что RecaptchaState существует и имеет правильное значение, просто нет сценария тега, чтобы идти с ним.
Так вот, что происходит, и я действительно озадачен, почему.Я могу воспроизвести это только в Firefox, и, как ни странно, это происходит только при определенных условиях.Например, если я перенаправляю запросы через fiddler, он будет работать каждый раз, никогда не перестанет работать.Если я очищу кеш перед отправкой запроса, он будет работать каждый раз.Иногда, когда я ожидаю, что это не удастся, это работает, и наоборот.Так что это очень спорадично.
Так что я подумал, что, возможно, это как-то связано со временем загрузки js, которое мешает выражению «document.write».Может быть, какой-то другой javascript мешает этому или что-то в этом роде.Просто ищите некоторые общие идеи относительно того, как я мог бы попытаться выяснить это, тесты, которые я могу выполнить, вещи, которые я могу искать, или любые идеи как все на самом деле.
Заранее спасибо
Обновление
Все еще не повезло с этим разобраться.Одна мысль у меня была ... мы не видим сообщений об ошибках в консоли Firebug, которые бы указывали, что что-то идет не так, хотя что-то, очевидно, так.Есть ли какие-либо утилиты, которые мы могли бы использовать, чтобы ближе познакомиться с тем, что в действительности происходит в Firefox?Я думаю о чем-то вроде «Speed-Tracer» для Chrome, который дает вам очень подробный график событий.Единственная проблема в том, что мы не можем воспроизвести его в Chrome.