Всегда ли HTTP-запросы отменяются всеми браузерами, если исходный iframe уничтожается до его завершения?
В Chrome я заметил, что если я уничтожу iframe до того, как запрос на отправку формы внутри него завершится, то запрос будет отменен. Похоже, этого не происходит в Firefox и IE.
Это то, что спецификация рекомендует? Другие браузеры планируют сделать то же самое в будущем?
1 ответ
"Планируют ли другие браузеры сделать то же самое в будущем?"
Понятия не имею, но цепочка спецификаций, которую я показываю ниже, в конечном счете опирается на спецификацию выборки, которая была частично мотивирована работниками сервисов, которые поддерживаются Chrome и Firefox, "В разработке" для MS Edge и "В стадии рассмотрения" для WebKit (по состоянию на 2017-01-17).
от WHATWG iframe
раздел состояния:
Когда элемент iframe удаляется из документа, пользовательский агент должен отбросить вложенный контекст просмотра элемента, если он не равен нулю, а затем установить для вложенного контекста просмотра элемента значение null.
ПРИМЕЧАНИЕ. Это происходит без запуска событий unload (вложенный контекст просмотра и его Document отбрасываются, а не выгружаются).
Документы браузеров WHATWG отбрасывают Document
раздел состояния:
Когда контекст просмотра должен отбрасывать документ, пользовательский агент должен выполнить следующие шаги:
Установите для состояния восстановления документа значение false.
Выполните все шаги по очистке документа для Документа, которые определены этой спецификацией и другими применимыми спецификациями.
Прервать документ. [выделение добавлено]
Удалите все задачи, связанные с Документом, из любого источника задач, не выполняя эти задачи.
Откажитесь от всех дочерних контекстов просмотра Документа.
Потерять сильную ссылку из контекста просмотра Документа на Документ.
В том же разделе документа об отмене документа говорится:
Если документ прерван, пользовательский агент должен выполнить следующие шаги:
Прервать активные документы каждого дочернего контекста просмотра. Если это приводит к тому, что для какого-либо из этих объектов Документа для их состояния восстановления установлено значение false, тогда также установите для состояния восстановления этого документа значение false.
Отмените все экземпляры алгоритма выборки [выделение добавлено] в контексте этого документа, отбросив любые задачи, поставленные в очередь для них, и отбросив любые дополнительные данные, полученные для них из сети. Если это привело к каким-либо случаям отмены алгоритма выборки или к любым задачам, находящимся в очереди, или к удалению любых сетевых данных, то установите для состояния восстановления документа значение false.
Если документ имеет активный анализатор, прервите этот анализатор и установите для состояния восстановления документа значение false.
Учитывая, что "алгоритм извлечения" является стандартизированным способом, по которому браузер делает любой HTTP-запрос, я интерпретирую отмену любых незавершенных запросов, сделанных удаленным iframe
в соответствии с вышеуказанными разделами.
Ср Получить спецификации, если у вас еще не было достаточно.:)
Снова ссылки
iframe
элемент
Отменить Document
Прервать Document