繁体   English   中英

html加载之前执行警报

[英]alert is executing before html loads

您好我的问题是有关如何加载网页的! 这是我的代码:

<!DOCTYPE html>
<html>
<head>
<title>JavaScript</title> 
</head>
<body>
<h1>Waiting</h1>
<script type="text/javascript">
    alert("Why?");
</script>
</body>
</html>

我一生都无法在显示标题之前弄清楚为什么运行警报。 据我了解,由于该警报就在结束标签的上方,因此它将是最后一件事。 为什么页面在显示标题之前等待我关闭警报?

谢谢您的帮助!

编辑:我在firefox中而不是在chrome中运行此代码,并且按我希望的方式工作-警报运行之前首先显示了标题。

页面加载完成后,您需要执行脚本

<body onload="script();">

外部脚本将在页面加载之前执行。

 <body onload="script();"> <h1>Waiting</h1> <script type="text/javascript"> function script() {alert("Why?");} </script> </body> 

不使用我可以编写的JQuery的最简单的变通方法是这个。 请检查一下。

<!DOCTYPE html>
<html>
<head>
<title>JavaScript</title> 
</head>
<body>
<h1>Waiting</h1>
<script type="text/javascript">

    window.onload = function(){ 
        setTimeout(()=>{
            alert("Why?");

        },10)

}
</script>
</body>
</html>

做到这一点的最干净的方法似乎是将javascript放在一个单独的文件中,并使用defer属性加载它。 这将导致它在DOM加载后触发(从技术上讲,就在DOMContentLoaded之前),但是除非有src属性,否则它无法在浏览器中一致地工作,这就是为什么需要将其移动到外部文件。

<script src="myScript.js" defer></script>

奇怪的是,在标题中添加一些CSS也可能会影响此效果,因为JS应该在任何未处理的CSS之后按顺序执行。

理论上,timeout函数或$(document).ready()函数将完成您需要的工作,但是可能需要根据页面的复杂性来调整超时,如果您尚未使用jQuery,则可能不想仅使用$(document).ready()添加它。

您可以使用setTimeout()在几秒钟后(该页面应该已加载)显示警报。

 <!DOCTYPE html> <html> <head> <title>JavaScript</title> </head> <body> <h1>Waiting</h1> <script type="text/javascript"> setTimeout(function(){ alert("Why?"); }, 1000);//wait 1000 milliseconds </script> </body> </html> 

您可以检查标头( h1标记)是否在其中,并且仅在其存在时发出警报。

 <!DOCTYPE html> <html> <head> <title>JavaScript</title> </head> <body> <h1 id="header">Waiting</h1> <script type="text/javascript"> var x; x = setInterval(function(){ if(document.getElementById("header")){ alert("Why?"); clearInterval(x); } }, 100); </script> </body> </html> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM