Как запустить функцию при загрузке страницы?

Я хочу запустить функцию при загрузке страницы, но не хочу использовать ее в <body>.

У меня есть скрипт, который запускается, если я инициализирую его в <body>, например:

function codeAddress() {
  // code
}
<body onLoad="codeAddress()">

Но я хочу запустить его без <body onload="codeAddress()"> и я пробовал много вещей, например, это:

window.onload = codeAddress;

Но это не работает.

Так как мне запустить его, когда страница загружена?

Ответ 1

window.onload = codeAddress; должен работать - здесь демо и полный код:

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript">
        function codeAddress() {
            alert('ok');
        }
        window.onload = codeAddress;
        </script>
    </head>
    <body>
    
    </body>
</html>

Ответ 2

Вместо использования jQuery или window.onload, на родном JavaScript были реализованы некоторые отличные функции с момента выпуска jQuery. У всех современных браузеров теперь есть собственная функция DOM ready без использования библиотеки jQuery.

Я бы рекомендовал это, если вы используете собственный Javascript.

document.addEventListener('DOMContentLoaded', function() {
    alert("Ready!");
}, false);

Ответ 3

Взятие Дарина отвечает, но стиль jQuery. (Я знаю, что пользователь запросил javascript).

запущенная скрипка

$(document).ready ( function(){
   alert('ok');
});​

Ответ 4

Альтернативное решение. Я предпочитаю это для краткости и простоты кода.

(function () {
    alert("I am here");
})();

Это анонимная функция, имя которой не указано. Здесь происходит то, что функция определяется и выполняется вместе. Добавьте это в начало или конец тела, в зависимости от того, должно ли оно выполняться перед загрузкой страницы или вскоре после загрузки всех элементов HTML.

Ответ 5

window.onload = function(){codeAddress();};

Ответ 6

window.onload = function() {... и т.д. не является отличным ответом.

Это, скорее всего, будет работать, но оно также нарушит любые другие функции, уже подключающиеся к этому событию. Или, если другая функция зацепится за это событие после вашего, он сломается. Таким образом, вы можете потратить много часов спустя, пытаясь понять, почему что-то, что работает, больше не существует.

Более надежный ответ здесь:

if(window.attachEvent) {
    window.attachEvent('onload', yourFunctionName);
} else {
    if(window.onload) {
        var curronload = window.onload;
        var newonload = function(evt) {
            curronload(evt);
            yourFunctionName(evt);
        };
        window.onload = newonload;
    } else {
        window.onload = yourFunctionName;
    }
}

Некоторый код, который я использовал, забыл, где я нашел его, чтобы дать автору кредит.

function my_function() {
    // whatever code I want to run after page load
}
if (window.attachEvent) {window.attachEvent('onload', my_function);}
else if (window.addEventListener) {window.addEventListener('load', my_function, false);}
else {document.addEventListener('load', my_function, false);}

Надеюсь, что это поможет:)

Ответ 7

Взгляните на domReady script, который позволяет настроить несколько функций для выполнения при загрузке DOM. Это в основном то, что Dom готово делать во многих популярных JavaScript-библиотеках, но является легким и может быть принято и добавлено в начале вашего внешнего файла script.

Пример использования

// add reference to domReady script or place 
// contents of script before here

function codeAddress() {

}

domReady(codeAddress);

Ответ 8

window.onload будет работать так:

function codeAddress() {
	document.getElementById("test").innerHTML=Date();
}
window.onload = codeAddress;
<!DOCTYPE html>
<html>
<head>
	<title>learning java script</title>
	<script src="custom.js"></script>
</head>
<body>
	<p id="test"></p>
	<li>abcd</li>
</body>
</html>

Ответ 9

Попробуй readystatechange

document.addEventListener('readystatechange', () => {    
  if (document.readyState == 'complete') codeAddress();
});

где состояния:

  • loading - документ загружается (во фрагменте не запускается)
  • интерактивный - документ анализируется, запускается до DOMContentLoaded
  • завершено - документ и ресурсы загружены, запущены перед window.onload

<script>
  document.addEventListener("DOMContentLoaded", () => {
    mydiv.innerHTML += 'DOMContentLoaded' + '</br>';
  });
  
  window.onload = () => {
    mydiv.innerHTML += 'window.onload' + '</br>';
  } ;

  document.addEventListener('readystatechange', () => {
    mydiv.innerHTML += 'ReadyState: '+document.readyState + '</br>';
    
    if (document.readyState == 'complete') codeAddress();
  });

  function codeAddress() {
    mydiv.style.color = 'red';
  }
</script>

<div id='mydiv'></div>

Ответ 10

Если вы хотите запустить функцию, когда тело загружается. Вместо присвоения атрибуту onload тега body вы можете сделать это следующим образом.

// define the body
var body = document.getElementsByTagName("body")[0];
    // or
    // var body = document.querySelector("body");
    // or 
    // var body = document.getElementsByTagName("body");
    
    
      function codeAddress() {
      // your function
        alert("Hello World");
    }
    
    body.onload = function() {
       codeAddress();
    };
<!DOCTYPE html>
<html>
<head>
	<title>learning java script</title> 
</head>
<body>
	<h1>Sample Heading</h1>
  <p>Sample text</p>
</body>
</html>