Як зробити код jquery ПІСЛЯ завантаження сторінки?


85

Якщо ви хочете, щоб подія працювала на вашій сторінці, вам слід викликати її всередині функції $ (document) .ready (). Все, що знаходиться в ньому, завантажиться, як тільки завантажиться DOM і перед завантаженням вмісту сторінки.

Я хочу робити код JavaScript лише після завантаження вмісту сторінки, як я можу це зробити?

Відповіді:


168

Використовуйте loadзамість ready:

$(document).load(function () {
 // code here
});

Оновлення, яке потрібно використовувати .on()з jQuery 1.8. ( http://api.jquery.com/on/ )

$(window).on('load', function() {
 // code here
});

З цієї відповіді :

Відповідно до http://blog.jquery.com/2016/06/09/jquery-3-0-final-released/ :

Видалено застарілі псевдоніми подій

.load, .unload, Хіба ж то й .error, застарілий з JQuery 1.8, не більше. Використовуйте .on()для реєстрації слухачів.

https://github.com/jquery/jquery/issues/2286


1
З коментаря до цієї відповіді: stackoverflow.com/a/37817516/957246 $ (window) .on ("load", function () {// code here}); .. оскільки ".load" застаріло.
trapper_hag

за допомогою .on () це так очевидно .. але я витратив 1 год, стукаючи головою об стіну, перш ніж знайти це .. дякую ..!
ghuroo

2
Слідкуйте за помилкою, намагаючись $(document).on('load', ...це зробити$(window).on('load',...
Користувач

29

Наступні

$(document).ready(function() { 
});

можна замінити

$(window).bind("load", function() { 
     // insert your code here 
});

Існує ще один спосіб, який я використовую для збільшення часу завантаження сторінки.

$(document).ready(function() { 
  $(window).load(function() { 
     //insert all your ajax callback code here. 
     //Which will run only after page is fully loaded in background.
  });
});

2
обробник вантажу в готовому обробнику? Це божевілля. Вам не потрібен документ, готовий, оскільки вікно на той момент існує, і ви можете приєднати обробник без нього.
dalore

18

про це ніхто не згадував

$(function() {
    // place your code
});

що є скороченою функцією

$(document).ready(function() { .. });

16

Редагувати: цей код буде чекати, поки весь вміст (зображення та сценарії) буде повністю завантажений та відтворений у браузері.

У мене була така проблема, коли $(window).on('load',function(){ ... })надто швидко запускався мій код, оскільки Javascript, який я використовував, використовувався для форматування та приховування елементів. Елементи, які приховані занадто рано, а де залишились, висотою 0.

Зараз я використовую, $(window).on('pageshow',function(){ //code here });і це спрацьовує в потрібний час.


1
Цей теж мені допоміг, я точно хотів запустити якийсь код після того, як відображалася сторінка jQuery Mobile. Дякую. @Boyd Cyr
codedudey

Просто хотів додати, наскільки кориснішим цей код порівняно з прийнятою відповіддю. Дуже дякую.
Countzero

10

Ви можете уникнути отримання невизначеного в '$' таким чином

window.addEventListener("DOMContentLoaded", function(){
    // Your code
});

РЕДАГУВАТИ: Використання "DOMContentLoaded" швидше, ніж просто "завантаження", оскільки сторінка очікування завантаження повністю завантажена, включені зображення ..., а DomContentLoaded чекає лише структури


8

Я шукаю ту саму проблему, і ось що мені допоможе. Ось jQuery версії 3.1.0, а подія завантаження застаріла для використання, оскільки jQuery версії 1.8 . Подія завантаження видаляється з jQuery 3.0. Натомість ви можете використовувати метод і прив’язати подію завантаження JavaScript:

$(window).on('load', function () {
  alert("Window Loaded");
});


5

напишіть код, який ви хочете виконати всередині цього. Коли ваш документ буде готовий, він буде виконаний.

$(document).ready(function() { 

});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.