我有一个本地内容/链接的网页,还有两个使用jQuery.load()从长时间运行的外部API加载的div。如何在等待jQuery AJAX加载事件的同时保持对浏览器的控制?
我希望用户能够在不等待加载事件完成的情况下点击离开网页。我相信我的代码是单线程的并且串行运行,阻塞了用户界面,因此用户无法在页面上执行任何操作,直到返回两个load()为止。
在我的代码中,你可以点击锚标签,但它实际上并没有离开页面,直到load()事件都以串联方式完成。 (这对load()事件并行运行也很好,我认为这与第一个问题直接相关。)
如何使用jQuery加载div,同时仍允许用户单击在load()事件完成之前的呈现页面内?
$(document).ready(function() {
$("#div_test1").load("long1.aspx")
$("#div_test2").load("long2.aspx")
});
的网页:
long1.aspx和long2.aspx使用VB.NET只是注入一些时间延迟:
Private Sub long1_Load(sender As Object, e As EventArgs) Handles Me.Load
Response.CacheControl = "No-Cache"
For counter = 1 To 10
System.Threading.Thread.Sleep(400)
Response.Write(String.Format("{0}
", counter.ToString))
Next
End Sub
编辑: 我添加了一个第二个href以上,只需重新加载页面。我现在注意到,像www.stackoverflow.com这样的外部链接不会被阻止,并且只要用户点击就会导航,而不用等待load()。但是到同一个网站的任何链接都被阻止。您可以单击该链接,但浏览器将不会到达那里,直到加载()完成。
+0
不知道为什么叫'.load()'块UI? System.Threading.Thread.Sleep(400)'的目的是什么? _“(对load()事件并行运行会很好”_调用'.load()'似乎并行调用 –
+0
Sleep函数只是模拟一个long load()事件。尝试添加一些延迟几种不同的方式,在发生某些事情的机会,因为我正在搞乱线程,但用户界面仍然被阻止。我同意load()事件并行启动,但根据网络督察,他们一个接一个地运行着。 –
+0
为什么你需要模拟一个很长的'.load()''.ajax()'调用? –