Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.onload仅在某些情况下有效,而alert()使其有效_Javascript_Html_Http_Svg_Onload - Fatal编程技术网

Javascript window.onload仅在某些情况下有效,而alert()使其有效

Javascript window.onload仅在某些情况下有效,而alert()使其有效,javascript,html,http,svg,onload,Javascript,Html,Http,Svg,Onload,这与我最近发布的一个问题有关,所以我很抱歉再次提出这个问题,但我就是想不通。我真的很想理解它并了解它,因为我只是在学习javascript/html 我使用SVGInject将svg加载到我的html中,然后我使用Tippy.js在svg元素上悬停时获取它们的工具提示 使用window.onload时,它有时会工作,但并不总是如此。错误是: Uncaught TypeError:无法读取null的属性“addEventListener” 重新加载页面会导致错误消失并再次出现 我在onload中添

这与我最近发布的一个问题有关,所以我很抱歉再次提出这个问题,但我就是想不通。我真的很想理解它并了解它,因为我只是在学习javascript/html

我使用SVGInject将svg加载到我的html中,然后我使用Tippy.js在svg元素上悬停时获取它们的工具提示

使用window.onload时,它有时会工作,但并不总是如此。错误是:

Uncaught TypeError:无法读取null的属性“addEventListener”

重新加载页面会导致错误消失并再次出现

我在onload中添加了一个alert(),看看会发生什么,有了这个alert,错误就消失了,一切正常。我很困惑

window.onload=函数(){
//警报(“测试”);//为什么此警报使一切正常运行??
/*SVG亮点*/
svg_突出显示('ebk_abp','abk_ab');
svg_突出显示('ebk_pbp','pbk_ab');
/*SVG工具提示*/
svg_工具提示('ebk','Eröffnungsbilanzkonto');
};
我意识到这与未按正确顺序加载的内容有关,我只是不明白如何处理这个问题,以及为什么alert()会修复所有问题

我不确定是否允许发布此内容,但这是我的完整项目,因此您可以自己查看:


|

svg元素还不存在,因此您需要使用回调确保代码以正确的顺序执行


您需要将代码添加到svg注入的
afterLoad
属性中。请参阅本页的
后装
文档

因为window.alert会在您单击该按钮之前停止线程,因此允许在代码继续运行之前完成后台发生的一些异步事件。这意味着您在元素可用之前添加了侦听器。无论你有什么火事件,它是加载?谢谢你的回答,这是有意义的。遗憾的是,它不起作用。svg根本不显示,当我将函数放入后加载时,我会出现以下错误:“TypeError:document.getElementById(…)为null”。正确的方法可能是
afterInject
。我对这个图书馆不是很熟悉,但我对我的答案的大前提很有信心。