(НБ .: Да, это нелепый вопрос, и я буду совершенно не удивлен, если ответ на этот вопрос будет «нет». Это сказало:)
Я написал таблицу стилей XSLT, которая намеренно выполняет длительные непараллелизируемые вычисления для фрагмента XML. Он предназначен в качестве компонента системы проверки работоспособности для использования в веб-браузере в качестве своего рода CAPTCHA, который не требует ввода данных пользователем - результат вычисления передается как скрытый элемент формы, когда пользователь отправляет данные на сервер. Содержание формы принимается только в том случае, если вычисленное значение является правильным. (Вычисление построено таким образом, что сервер может дешево предоставить пользователю входные параметры для функции, и сервер знает результат, не выполняя большую работу, но компьютер пользователя должен тратить циклы, чтобы определить результат.)
Преобразование работает просто отлично, но, к сожалению, браузер зависает во время вычислений. Поскольку моя цель состоит в том, чтобы эти вычисления выполнялись, пока пользователь продолжает использовать браузер, это недопустимо раздражающее поведение. Есть ли способ фонового преобразования и оставить браузер пригодным для использования во время его работы? Одна мысль, которая у меня была, - загрузить исходный XML-фрагмент из iframe, но я не смог получить преобразование в работать на всех, используя этот подход. Я решил спросить здесь, чтобы узнать, есть ли у кого-нибудь какие-нибудь блестящие идеи, прежде чем бить меня головой об этом гораздо дальше - если я пытаюсь сделать что-то, что принципиально невозможно, учитывая работу браузеров, было бы приятно узнать.
Я знаю, что мог бы сделать это в Javascript, но было бы неплохо не делать этого. Есть идеи?
РЕДАКТИРОВАТЬ: Ребята, я знаю о recaptcha.net и других альтернативах. Это эксперимент . Моя цель - выяснить, можно ли превратить теоретическую идею в практику, которая не слишком обременительна для пользователя. Я не ищу альтернативных реализаций, я ищу способ сделать криптографически стойкую CAPTCHA, которая не включает Javascript. (Если бы я хотел использовать Javascript, я бы использовал одну из реализаций хэш-кэша Javascript.) Единственный другой язык на основе браузера, основанный на языке Тьюринга, - это XSLT. Пожалуйста, рассмотрите вопрос в том духе, в котором он был задан.