问题:在我的网页加载之前触发了Javascript
解决方案:在函数中包装Javascript并在页面加载后调用它。
不幸的是它不起作用。这是我的例子。
我有一个简单的2页测试网站。第一页有蓝色背景和第二页的链接。当我单击第一页上的链接时,第二页上的脚本中的提示将出现在第二页加载之前的第一页上。 source activate [name of virtual environment]
pip install numpy
pip install matplotlib
pip install pandas
或load
似乎没有改变这一点。我确定我做错了什么,但我发现它无法发现。
第1页
DOMContentLoaded
第2页
<body style="background-color:blue">
<a href="page_2.htm">Click this link.</a>
</body>
我在第二页的功能上方添加了此代码,但在第二页加载之前,提示继续在第一页的上方提前弹出。
<script>
function globalFunction() {
prompt("input a number");
}
</script>
然后我尝试了这个,但结果相同。
document.addEventListener("DOMContentLoaded", globalFunction);
答案 0 :(得分:3)
这是浏览器创建不属于文档本身的UI元素时的典型行为。浏览器是一个多线程软件,对prompt()
或alert()
的调用是在与运行JavaScript代码不同的线程中处理的。浏览器能够更新UI(在这种情况下,在浏览器能够显示第二页之前,使用模块对话框阻止JS运行时继续运行。
解决方案是确保脚本在第二页已加载之前甚至不会被启动,并将提示推迟到足以使浏览器更新页面显示以显示它。
在第二个文件中,将代码更改为:
<script>
window.addEventListener("DOMContentLoaded", function(){
setTimeout(function globalFunction() {
prompt("input a number");
}, 20);
});
</script>
这将使该函数延迟运行20毫秒,这应该足以看到第二页。