Будет ли функция jquery remove () отменять запрос элемента

Мне интересно, будет ли функция jQuery Удалить() надежно отменять запросы, которые были инициированы во время загрузки страницы. Учитывая следующую настройку:

<video>
  <source src="movie1.mp4" type="video/mp4">
</video>

<video>
  <source src="movie2.mp4" type="video/mp4">
</video>

и это довольно большие видео, которые нужно вернуть в ответ (~ 40 МБ).

Когда у меня есть это в моем JS:

$(document).ready(isMobile);

function isMobile() {
  // condition that checks for mobile device here, next line executed if true
  $('video').remove(); 
};

будет ли загружено уже запрошенное видео? Будет ли загружено какое-нибудь видео?

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

0
0
35
1

Ответы 1

После запуска следующего фрагмента я заметил, что загрузка файла действительно прекратилась после завершения загрузки текущего «фрагмента». Это предотвратит дальнейшую загрузку из крупных источников.

$(document).ready(function() {
  setTimeout(function() {
    $('video').remove();
  }, 10000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<video src="https://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_30mb.mp4"  type="video/mp4" controls>

И после загрузки / остановки 10 секунд (фрагмент завершил загрузку, а затем прекратил загрузку дополнительных данных):

спасибо за подтверждение моего наблюдения. Причина, по которой я спрашивал, заключается в том, что, по всей видимости, люди на своих мобильных телефонах сказали, что видео все еще загружаются. Кажется, есть какое-то несоответствие. Но я не уверен, был ли это их кеш или это работает по-другому на мобильных устройствах.

supersize 13.09.2018 20:58

@supersize В худшем случае, просто добавьте видео через jQuery, если проверка вашего мобильного телефона не удалась.

Goodbye StackExchange 13.09.2018 21:01

да, я знаю другие решения. Мне просто любопытно в целом, если api remove () ведет себя по-разному в другом браузере (например, на мобильном устройстве)

supersize 13.09.2018 21:04

@supersize - (без проверки исходного кода jquery) я очень сомневаюсь, что API remove() имеет какое-либо отношение к остановке загрузки. Он удаляет элемент из DOM - затем реализация браузера должен заметить и остановить загрузку ... чтобы разные браузеры могли вести себя по-разному; даже Chrome для мобильных устройств и Chrome для настольных компьютеров может отличаться.

Stephen P 13.09.2018 21:43

@StephenP абсолютно. Я тестировал его в Browserstack на разных устройствах, и, честно говоря, все они разные. Не уверен, что приму этот ответ, так как это может привести к мысли, что он всегда будет работать. Если вы хотите, вы можете дать ответ, указав, что он непоследователен, что вы в основном говорите в своем комментарии.

supersize 17.09.2018 19:55

Другие вопросы по теме