JQuery.Load()是否将标记呈现和Java脚本作为单个阻塞调用执行
Does JQuery.Load() execute markup rendering and Java Script as a single blocking call
我有一个问题,关于在使用JQuery的.load().进行Ajax调用后,将带有JavaScript的html插入DOM
假设以下示例html部分:
<script>$(document).ready(function(){var e = $('#'+'@Servergenerated');})</script>
<div id='@Servergenerated'>Test Element</div>
如果我通过Ajax调用返回上面的部分,并使用JQuery的load()函数将结果插入DOM中——标记呈现和脚本都会作为阻塞调用执行吗?这意味着,由于.load()在JavaScript可用的单个线程上执行,它是否会确保标记渲染和JavaScript执行都会在调用同一主页上的其他JavaScript之前完成?
Ajax请求通过$("#someElement").load(..)
启动
在上面的情况下,我可以一直假设JS总是与正确的html配对吗(这样JS将根据页面上当前定义的ID执行)
但是,使用.load()和.html().之间有区别吗
通常,我使用$.get来检索数据,然后使用.html()将其插入DOM。然而,这段代码在第三方库中,而不是uisng.load()。。
当您使用$().load(url,fn)
时,由于$().load(url,fn)
执行异步http请求以获取内容,因此在将html附加到页面之前,将执行该行后面的代码。请参阅末尾的示例。
另一件需要记住的重要事情是,对于$().load(url,fn)
,如果返回的html包含javascript,则该javascript可能会在页面上存在内容之前执行,导致插件无法正确初始化。这就是为什么强烈建议您不要使用$().load(url,fn)
引入包含脚本的内容。
示例:
console.log(1)
$("#div1").load("page1.html",function(){
console.log("4 maybe 5")
});
console.log(2)
$("#div2").load("page2.html",function(){
console.log("5 maybe 4")
});
console.log(3)
在上面的例子中,日志1、2和3按照这个顺序发生,但4和5可能会交换位置,这取决于哪个ajax请求完成得最快。除了在成功请求div1的内容时不使用$().load(url,fn)
或请求div2的内容之外,没有其他方法可以避免这种情况。
- 借助asp.net验证或java脚本对多个文本进行验证
- Java脚本时间添加
- 如何将字符串值从php页面发送到java脚本页面
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- Java脚本将URL转换为已保存的URL时出错
- 如何使用Java脚本创建提交按钮's的拖放功能
- 如何在java脚本中验证手机号码
- 使用java脚本更改onClick事件中菜单选项卡的颜色
- 无限的java脚本循环
- 无法在java脚本中调用图像的点击事件函数
- 如何在java中获得浏览器的java脚本控制台输出
- 我的html表单无法验证.请参阅代码片段中的html代码和java脚本
- java脚本的数学方程显示错误的答案
- AngularJS:如何使用java脚本函数更改跨度的ng-show条件
- 如何在java脚本中传递对象数组
- java脚本网站最佳实践
- 无法将java脚本函数与Panel'绑定;s OnLoad事件
- java安全doPrivileged方法如何阻止任意脚本
- Java脚本访问Location标头's OAuth 2的URL片段
- 在 HTML 上运行两个脚本(Java 脚本)