Почему я получаю эту ошибку времени выполнения Javascript?

На моей веб-странице есть следующий код JavaScript ...

64    var description = new Array();
65    description[0] = "..."
66    description[1] = "..."
...
78    function init() {
79        document.getElementById('somedivid').innerHTML = description[0];
80    }
81
82    window.onload = init();

В Microsoft Internet Explorer это вызывает следующую ошибку ...

A Runtime Error has occurred.
Do you wish to debug?

Line: 81
Error: Not implemented

Почему я получаю эту ошибку времени выполнения Javascript?

Строка 79 выполняется, как ожидалось.

Если строка 79 закомментирована, она все равно вызывает ошибку.

Если я закомментирую строку 82, то функция не выполняется и ошибки нет.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
5 966
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Попробуйте вместо этого добавить прослушиватель envent для 'load' или используйте декларативный синтаксис <body onload = "init()">.

Обновлено: Кроме того, говоря, что window.onload = init(); устанавливает window.onload для результата вызова init(). Вы имеете в виду window.onload = init; (лямбда-выражение). Это все еще плохая практика, поскольку она перезаписывает другие вещи, которые могут быть связаны с window.onload.

На самом деле это нормально. Обработчик события onload будет выполнен после загрузки окна.

EndangeredMassa 07.10.2008 18:31

Однако я не понимаю, почему это заслуживает отрицательного голоса. Это неправильно?

Tomalak 07.10.2008 18:36

Удаление строки 82 и обновление тега body, как описано, работают.

Zack Peterson 07.10.2008 18:37

Вы можете установить обработчик загрузки где угодно. Это может быть даже первое, что вы делаете внутри первого тега <script> под <head>.

Ates Goral 07.10.2008 18:40
Ответ принят как подходящий

Строка 82 не должна читать:

window.onload = init;

Когда вы выполняете «init ()», это вызов функции, возвращающей void. В конечном итоге вы вызываете эту функцию до загрузки страницы.

window.onload = init (); Назначает результат Init для window.onload, который ожидает указатель на функцию. Думаю, это ошибка.

Robert K 07.10.2008 18:36

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

Zack Peterson 07.10.2008 18:43

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

Чтобы сохранить любые ранее установленные функции загрузки, попробуйте это

var prevload = window.onload;
window.onload = function(){
    prevload();
    init();
}

Сначала проверьте, не установлена ​​ли prevload: prevload && prevload ();

Ates Goral 07.10.2008 22:53

Вместо этого вы должны использовать attachEvent / addEventListener (и абстрагировать его, если вы делаете это более одного раза).

eyelidlessness 08.10.2008 00:35

@Ates Goral: Если это так, то это чертовски сладкий синтаксический сахар.

eyelidlessness 08.10.2008 00:36

Попробуйте запустить его в FireFox с включенным плагином FireBug. Это позволит вам отлаживать javascript

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