window.onload работает только иногда, а alert () работает - PullRequest
0 голосов
/ 05 ноября 2019

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

Я загружаю SVG в свой HTML с помощью SVGInject , а затем я использую Tippy.js , чтобы получить всплывающие подсказки для моих элементов SVG при наведении на них указателя.

С помощью window.onload он работает иногда , но не всегда. Ошибка:

Uncaught TypeError: Cannot read property 'addEventListener' of null

Перезагрузка страницы приводит к исчезновению и повторному появлению ошибки.

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

window.onload = function (){
   //alert("test"); //why does this alert make everything work??
   /* SVG HIGHLIGHTS */
   svg_highlight('ebk_abp','abk_ab');
   svg_highlight('ebk_pbp','pbk_ab');

   /* SVG TOOLTIPS */ 
   svg_tooltip('ebk', "Eröffnungsbilanzkonto");
};

Я понимаю, что это как-то связано с тем, что содержимое не загружается в правильном порядке, я просто не понимаю, как решить эту проблему и почему исправляется alert ()все ..

Я не уверен, разрешено ли это публиковать, но вот мой полный проект, так что вы можете убедиться сами:

https://github.com/rackuzi/DieAbbildung |https://rackuzi.github.io/DieAbbildung/

1 Ответ

0 голосов
/ 06 ноября 2019

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

Вам нужно поместить код для добавления всплывающих подсказок в afterLoad свойство инъекции svg. См. Документацию для afterLoad на этой странице. https://github.com/iconfu/svg-inject

...