javascript — изменение состояния документа. ReadyState на «завершено»; после загрузки файла через заголовок PHP («Content-Disposition: attachment …»

У меня такой вопрос: после загрузки файла через PHP header('Content-Disposition: attachment… Техника, веб-страница, которая начала загрузку, имеет document.readyState ценность interactive,

Я ожидаю, что это будет complete вместо этого, поскольку загрузка завершена.

Я что-то упустил или это ожидаемое поведение?

Если последнее, то есть ли способ сбросить document.readyState вернуться к complete?

(Это использует Internet Explorer, если это имеет значение …)


Фон:

У меня есть некоторые функции JavaScript, которые я хочу активировать только после завершения загрузки страницы, поэтому я использую

if( document.readyState != "complete" ) return;

в их начале, чтобы достичь этой цели. Это правильно работает с загрузкой страницы, так как document.readyState является interactive во время загрузки, и complete только после завершения загрузки страницы.

Позже на странице я представляю ссылку, которая отправляет пользователя на приведенный ниже код PHP, чтобы разрешить загрузку загруженных данных:

header( 'Content-Type: text/csv; charset=Shift-JIS' );
header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
$output = fopen( 'php://output', 'w' );
//write to file output...
fclose( $output );

Теперь нажатие на эту ссылку вызывает document.readyState быть первым loading а потом interactiveно государство остается там, никогда не двигаясь к complete, таким образом отключая более ранние функции JavaScript …


Я в недоумении, почему это так, и буду признателен за любую помощь, в любом направлении.

0

Решение

первый раз ваша страница имеет readyState из complete, вы знаете, что он загрузился полностью, и ваши скрипты могут работать. Когда пользователь щелкает ссылку, которая не удаляется со страницы (например, страницы, которая выполняет только загрузку файла), вы можете игнорировать полученную в результате readyState, Так что вместо проверки readyState во всех ваших сценариях вы можете проверить, есть ли на странице Когда-либо был в complete readyState,

Обоснование установки readyState в interactive может быть, технически, другая страница загрузилась, но никогда не отображалась и не попала в историю. Но я просто догадываюсь. Как вы видели в своем играть на скрипке, поведение кажется непоследовательным.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]