window.onload по сравнению с <тело onload = “”/>

222
задан Dave Jarvis 17 August 2014 в 11:06
поделиться

11 ответов

window.onload = myOnloadFunc и <body onload="myOnloadFunc();"> различные способы использовать то же событие . Используя window.onload является менее навязчивым, хотя - это вынимает Ваш JavaScript из HTML.

Все общие библиотеки JavaScript, Прототип, ExtJS, Dojo, JQuery, YUI, и т.д. обеспечивают хорошие обертки вокруг событий, которые происходят, поскольку документ загружается. Можно прислушаться к окну onLoad событие и реагировать на это, но onLoad не запущен, пока все ресурсы не были загружены, таким образом, обработчик событий не будет выполняться, пока то последнее огромное изображение не было выбрано. В некоторых случаях это точно, что Вы хотите в других, Вы могли бы найти, что прислушивание, когда DOM готов, является более соответствующим - это событие подобно onLoad, но стреляет, не ожидая изображений, и т.д. для загрузки.

214
ответ дан Richard Turner 23 November 2019 в 04:02
поделиться

Нет никакого различия, но Вы не должны использовать также.

Во многих браузерах, window.onload событие не инициировано, пока все изображения не загрузились, который не является тем, что Вы хотите. Основанные на стандартах браузеры имеют событие, названное DOMContentLoaded, который стреляет ранее, но оно не поддерживается IE (во время записи этого ответа). Я рекомендовал бы пользоваться библиотекой JavaScript, которая поддерживает перекрестную функцию DOMContentLoaded браузера или нахождение правильно написанной функции, которую можно использовать. jQuery $(document).ready(), хороший пример.

32
ответ дан ValarDohaeris 23 November 2019 в 04:02
поделиться

Я предпочитаю, обычно, к [1 111] не используют <body onload=""> событие. Я думаю, что это более чисто для хранения поведения разделенным от содержания как можно больше.

Однако существуют случаи (обычно довольно редкий для меня), где использование тела onload может дать небольшое повышение скорости.

мне нравится использовать Прототип, таким образом, я обычно помещал что-то вроде этого в <head> моей страницы:

document.observe("dom:loaded", function(){
  alert('The DOM is loaded!');
});

или

Event.observe(window, 'load', function(){
  alert('Window onload');
});

Вышеупомянутое является приемами, которые я изучил здесь . Я очень люблю понятие обработчиков событий присоединения за пределами HTML.

(Редактирование для исправления орфографической ошибки в коде.)

10
ответ дан Community 23 November 2019 в 04:02
поделиться

Существует никакой различие...

Так principially Вы могли использовать обоих (по одному!-)

, Но ради удобочитаемости и для чистоты кода HTML я всегда предпочитаю window.onload! o]

2
ответ дан roenving 23 November 2019 в 04:02
поделиться

При попытке записать незаметный код JS (и необходимо быть), то Вы не должны использовать <body onload="">.

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

1
ответ дан Dr. Bob 23 November 2019 в 04:02
поделиться

Думайте о onload как любой другой атрибут. На поле ввода, например, Вы могли поместить:

<input id="test1" value="something"/>

Или Вы могли звонить:

document.getElementById('test1').value = "somethingelse";

onload приписывают работы тот же путь, за исключением того, что он берет функцию в качестве своего значения вместо строки как атрибут значения, делает. Это также объясняет, почему можно "только использовать одного из них" - звонящий window.onload, повторно присваивает значение атрибута onload для тега основного текста.

кроме того, как другие здесь говорят, обычно это более чисто для хранения стиля и JavaScript разделенными от содержания страницы, которая является, почему большинство людей советует для использования window.onload или как готовая функция jQuery.

1
ответ дан Soldarnal 23 November 2019 в 04:02
поделиться

< тело onload = ""> должен переопределить window.onload.

С < тело onload = ""> document.body.onload мог бы быть пустым, неопределенным или функция в зависимости от браузера (хотя getAttribute ("onload") должен быть несколько последовательным для получения тела анонимной функции как строка). С window.onload при присвоении функции ему window.onload последовательно будет функцией через браузеры. Если это имеет значение для Вас, используйте window.onload.

window.onload лучше для разделения JS от Вашего содержания так или иначе. Нет большой причины использовать < тело onload = ""> так или иначе, когда можно использовать window.onload.

In Opera, событие предназначается для window.onload и < тело onload = ""> (и даже window.addEventListener ("загрузка", func, ложь)), будет окно вместо документа как в Safari и Firefox. Но, 'это' будет окном через браузеры.

то, Что это означает, - то, что, когда это имеет значение, необходимо обернуть свернувшееся молоко и сделать вещи последовательными или пользоваться библиотекой, которая делает это для Вас.

1
ответ дан Shadow2531 23 November 2019 в 04:02
поделиться

Они оба работают то же. Однако обратите внимание, что, если оба определяются, только один из них будет вызван. Я обычно избегаю использования любого из них непосредственно. Вместо этого можно присоединить обработчик событий к событию загрузки. Таким образом, можно включить более легко другие пакеты JS, которые, возможно, также должны были бы присоединить обратный вызов к onload событию.

Любая платформа JS будет иметь методы перекрестного браузера для обработчиков событий.

0
ответ дан KernelM 23 November 2019 в 04:02
поделиться

Это - принятый стандарт для имения содержания, расположения и отдельного поведения. Так window.onload () более подойдет для использования, чем <body onload="">, хотя оба делают ту же работу.

0
ответ дан Rajeshwaran S P 23 November 2019 в 04:02
поделиться

'so many subjective answers to an objective question. "Unobtrusive" JavaScript is superstition like the old rule to never use gotos. Write code in a way that helps you reliably accomplish your goal, not according to someone's trendy religious beliefs.

Anyone who finds:

 <body onload="body_onload();">

to be overly distracting is overly pretentious and doesn't have their priorities straight.

I normally put my JavaScript code in a separate .js file, but I find nothing cumbersome about hooking event handlers in HTML, which is valid HTML by the way.

6
ответ дан 23 November 2019 в 04:02
поделиться

window.onload может работать без тела. Создайте страницу только с тегами скрипта и откройте ее в браузере. Страница не содержит тела, но все равно работает ..

<script>
  function testSp()
  {
    alert("hit");
  }
  window.onload=testSp;
</script>
20
ответ дан 23 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: