jQuery создает скрытое IFRAME для отправки формы, поскольку это единственный способ обработать загрузку файла AJAXy-способом.
Основная причина проблемы заключается в том, что Opera запускает загрузку, когда в документ вставляется пустой iframe. Сценарий jQuery не ожидает этого начального события загрузки, считает, что отправка формы завершена, и приходит к выводу, что она не удалась. Причина, по которой это не так легко происходит в http, по-видимому, связана с тем, что временные рамки различаются, когда Opera должна зашифровать полезную нагрузку при загрузке файла.
Если тот же сценарий, который вставляет IFRAME, также инициирует загрузку документа в IFRAME, другие браузеры будут ожидать окончания загрузки документа и запускают только одно событие загрузки. (Или что-то в этом роде - в данном конкретном случае скрипт, который запускает загрузку документа, запускается по таймауту, так что это даже не тот же сценарий).
Мое предлагаемое исправление будет заключаться в улучшении попытки обхода проблемы, которая уже существует для этой проблемы:
if (!isXml && (doc.body == null || doc.body.innerHTML == '' ))
и отметьте в этом операторе if, является ли URL документа внутри IFRAME все еще исходным javascript: false:
if (!isXml && (doc.body == null || doc.body.innerHTML == '' || doc.URL=='javascript:false' ))
Этого должно быть достаточно, чтобы убедиться, что jQuery ожидает загрузки нового документа.