正在等待HTML中的Javascript函数完成
如何确保Javascript函数在进入HTML代码的下一行之前完成 例如:我在正在等待HTML中的Javascript函数完成,javascript,html,Javascript,Html,如何确保Javascript函数在进入HTML代码的下一行之前完成 例如:我在main()中有一个Javascript代码,并调用tht,如下所示。在此结束之前,下一行HTML代码(如加载JPEG)将显示在webbrowser中。 是否有任何方法可以确保main()调用完全执行 <script language="JavaScript" type="text/javascript"> main();</script> 和net.Requestor=函数(url、onlo
main()
中有一个Javascript代码,并调用tht,如下所示。在此结束之前,下一行HTML代码(如加载JPEG)将显示在webbrowser中。
是否有任何方法可以确保main()
调用完全执行
<script language="JavaScript" type="text/javascript"> main();</script>
和net.Requestor=函数(url、onload、onerror、方法、参数、contentType)
在这个范围内,thers是和XMLHTTPRequest(…)
Currenthandler是另一个处理来自requset的响应的函数
function CurrentHandler()
{
settings = this.req.responseText.split("\n");
for(var j=0; j<settings.length-1; j++)
{
var currentST= settings[j].split("=");
name = currentST[0];
value = currentST[1];
switch(name)
{
case "mainvideostream": cur_camid = value; break;
case "codectype": stream = value; break;
}
}
mainSection();
}
函数CurrentHandler()
{
设置=此.req.responseText.split(“\n”);
对于(var j=0;j如果main中的代码不是异步执行的,则应在DOM加载事件后绑定代码。使用jQuery:
$(document).load(function(){
main();
});
或者不使用jquery,在body标记中:
<body onload="main()">
简短的回答是否定的,在脚本运行时,没有(安全的、符合标准的)方法阻止页面加载
通常,这是通过以下两种方式之一解决的:
通过将CSSdisplay
属性设置为none
,隐藏页面上不希望加载的元素。在脚本末尾添加一个命令,以重置这些元素的显示属性
将最初不希望加载的元素移动到单独的HTML文件中。在脚本执行结束时,向服务器回拨AJAX以获取第二个文件,并将其加载到主文件中的适当位置
好的,正如其他人所指出的,一般的顺序是加载页面,然后运行javascript。但是,您可以使用ajax来解决这个问题。基本思路如下:
用空白的页面加载一个JavaScript创建一个空白页面,然后在JavaScript代码块的结尾,通过Ajax。
下面是一些jquery代码,它们可以执行类似的操作:
<script>
$(document).load(function(){
//YOUR CODE HERE//
$.ajax({
type:"GET",
url:"", // <-- url of the contents of your page here
dataType:"text",
success:function(data){
$(".container").html(data);
},
error:function(jqXHR,textStatus,errorThrown){
$(".container").html("<pre>"+textStatus+"</pre><pre>"+errorThrown+"</pre>");
}
});
</script>
<body>
<div class="container"></div>
</body>
$(文档).load(函数(){
//你的代码在这里//
$.ajax({
键入:“获取”,
url:“,//我假设main
函数有一些异步代码。你能显示该函数的代码吗?我认为你想延迟整个页面加载,直到这段javascript完成吗?javascript异步运行,页面异步加载。即使在JS中有一些阻止的方法(一个非常糟糕的主意)你永远无法阻止浏览器同时加载其他内容(用户也不会希望网站尝试并控制它)。问题是:你为什么想要/需要此功能?正如Joseph所指出的,更多的功能可能会有所帮助。一个想法是设置一个标志,使main()当它完成您需要它做的事情时会发生更改,然后检查标志的状态以便继续。很抱歉,我没有像你们这样及时。这是我第一次在这里查询,我真的很惊讶看到这样的响应。再次非常感谢。@Joseph是的,主函数使用异步代码。是否还有其他方法我可以这样做如果没有Ajaxsure,您可以随时使用javascript编写页面,而不是通过ajax将页面内容导入,如:$(“.container”).html(“此处为您的页面内容”);
但我想从长远来看,ajax会更整洁、更易于维护。您为什么要避免使用ajax?是否希望您的代码块影响加载的页面内容?因为这仍然可以在success函数中完成。
<script>
$(document).load(function(){
//YOUR CODE HERE//
$.ajax({
type:"GET",
url:"", // <-- url of the contents of your page here
dataType:"text",
success:function(data){
$(".container").html(data);
},
error:function(jqXHR,textStatus,errorThrown){
$(".container").html("<pre>"+textStatus+"</pre><pre>"+errorThrown+"</pre>");
}
});
</script>
<body>
<div class="container"></div>
</body>