JavaScript警告阻止页面加载。

8
我的客户希望在进入网页时显示一个警报。
然而,弹出警报会阻止页面的进一步加载,直到点击“确定”,而页面需要在警报显示的同时在后台加载。
一种解决方案是使用HTML和CSS创建自定义警报,但这并不能满足客户的需求。
是否有使用“核心JavaScript”或jQuery的解决方案,允许在显示警报时加载页面? 谢谢。

为什么不等页面加载完再显示警告框呢? - FLX
我明白...所以你可以制作一个自定义警报,它看起来与本地警报完全相同 :) - FLX
3个回答

8

4
这段代码无法正常运行:http://jsfiddle.net/g33Et/。JavaScript是一种单线程语言。 - A. Wolff
@FunKy,你的fiddle没有展示任何多线程,它只是在几毫秒后显示了一个警报。这与问题无关。看看我的jsfiddle,这就是我们应该期望多线程工作的方式:当alert()显示时,console.log()仍然应该工作,但显然不是这种情况。 - A. Wolff
@roasted,很抱歉,但我可以看到网站正在后台加载...可能是因为我正在使用Firefox,所以我看到了覆盖层。但就目前而言,这个方法起作用了。 - Dipesh Parmar
1
实际上,alert是在页面解析完成后执行的:jsFiddle - Teemu
这显然只有在脚本的另一部分需要少于1毫秒的执行时间时才有效。警报在被调用时仍然会阻塞。 - low_rents
显示剩余9条评论

3

编辑

请参考@FunKy的答案,在Firefox中有一个解决方法(非常有趣!)


简短的回答是不行的!

原因是本地alert()对话框会阻塞UI,而JavaScript是单线程语言。

您必须使用自定义对话框消息。

但是,如果在阻塞UI之前完成了一些ajax请求,则当alert()对话框关闭时,ajax响应将/应该可用。 因此,在显示警报之前仍然可以进行一些ajax请求。


@FunKy 不,我看不出这怎么可能行得通。WebWorkers 可能是一个解决方案,但它还没有真正实现。 - A. Wolff
它能够工作,但是我直到现在才听说Web Workers。看起来很有前途。 - nadavge

0

您可以使用自定义对话框而不是警告框(会阻止页面加载)。例如,Jquery UI Dialog 很容易使用(但有许多插件可以完全做同样的事情)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接