gpt4 book ai didi

javascript - 在页面上的所有脚本完全加载后运行 js 函数

转载 作者:行者123 更新时间:2023-11-28 14:22:34 25 4
gpt4 key购买 nike

我正在尝试在我的页面完全加载后运行一个简单的 javascript 函数。例如,这个函数:

<script type="text/javascript">
function changeSize() {
var el = document.getElementById("my-id");
el.style.height = "500px";
};
</script>

我的页面有一个从外部 URL 检索的长时间加载(秒)脚本,该脚本在 html 正文中呈现主要内容。

我在 base.html 的主体部分使用 Bootstrap是:

<body>

<div class="container-fluid">
{% block header %}{% endblock %}

{% block content %}{% endblock %}

{% block footer %}{% endblock %}

</div>

<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</body>

内容 block 通过外部 html 文件加载,即:

{% extends 'base.html' %}

{% block header %}
{% include 'header.html' %}
{% endblock %}

{% block content %}
<div class="my-class" id="my-id">
{{ myapp | safe }}
</div>
{% endblock %}

{% block footer %}
{% include 'footer.html' %}
{% endblock %}

'my-id'元素,myapp通过长时间加载的 js 脚本呈现,完成后呈现页面的所有内容。 myapp 的外部 URL 路由由使用 Flask 的 python 脚本检索和定义。

我试过了window.onload = changeSize; , <body onload="changeSize();"> ,我检查了所有阶段的时间 document.readyState .

这些都在 html 完全加载时触发我的 js 函数,但在 myapp 的外部脚本之前做完了。如何检测所有元素和脚本何时完全加载完毕?

最佳答案

我最终找到了使用延迟方法的解决方案(改编自 this SO 答案)。

将以下内容放入 custom.js 文件中:

function delay() {
setTimeout(function() {
changeSize();
}, 200);
}

if (document.readyState == 'complete') {
delay();
} else {
document.onreadystatechange = function () {
if (document.readyState === "complete") {
delay();
}
}
}

然后在 base.html 中加载 custom.js:

<script type="text/javascript" src="{{ url_for('static', filename='custom.js') }}"></script>

这成功等待到长时间加载的脚本和相关内容完全呈现,然后执行 changeSize() 函数。

关于javascript - 在页面上的所有脚本完全加载后运行 js 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55046523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com