Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304411
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站网址导航为大家提供关于网站网页设计设计相关的的教程知识。

  • 本篇文章具体介绍如下
1. 引言
在上一篇文章《如何确保JavaScript的执行顺序 - 之jQuery.html深度分析》中,我们揭示了jQuery.html函数之所以能在各种浏览器下保持动态JS顺序执行,其秘密在于 �C 同步AJAX获取外部JavaScript。
我们先来简单回顾下hTML源具体代码(test2.htm):
具体代码如下:
<html>
<head>
<title></title>
<script src="js/jquery-1.4.4.js" type="text/javascript"></script>
<script>
$(function(){
$('#container').html('<script src="./service.ashx?file=js/jquery-ui.js&delay=2000" type="text\/javascript"><\/script>' '<script>alert(typeof(jQuery.ui));<\/script>');
});
</script>
</head>
<body>
<div id="container">
</div>
</body>
</html>

顺便一提的是,通过这种方式加载的外部JavaScript不可以在Firebug中调试,因为AJAX结束后外部JavaScript的解析和内联JavaScript的解析是一样的(都是调用jQuery.globalEval):

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


下面进入本篇文章的主题:如果加载的JS是在其它域下面的,jQuery.html还能在各个浏览器下都能保证JS的顺序执行么?
2. 建立测试案例
1) 准备两个域名
为了测试,我在个人主页(http://sanshi.me/)下面临时创建了两个子域名,分别是:
http://test.sanshi.me/
http://test1.sanshi.me/
2) 更新Demo页面(test2_1.htm)
我会把test2_1.htm放在第一个子域名下,访问地址为http://test.sanshi.me/jsorder/test2_1.htm,其源具体代码如下:
具体代码如下:
<html>
<head>
<title></title>
<script src="js/jquery-1.4.4.js" type="text/javascript"></script>
<script>
$(function () {
$('#container').html('<script src="http://test1.sanshi.me/jsorder/service.ashx?file=js/jquery-ui.js&delay=2000" type="text\/javascript"><\/script>' '<script>alert(typeof(jQuery.ui));<\/script>');
});
</script>
</head>
<body>
<div id="container">
</div>
</body>
</html>

可以看到,其中的jQueryUI脚本指向的是第二个域名下的(test1.sanshi.me)。
3) 在不同浏览器下测试

test2_1.htmj8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

使用jQuery.html函数动态加载其它域下的JavaScriptj8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Firefox 3.6j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

IE 8j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Chrome 10j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Safari 4j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Opera 11j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


3. jQuery.html并非万能钥匙,那么
不知道大家是否还记得我们在第一篇文章中提到的test3.htm不,这个结果和那个示例的结果一模一样,jQuery.html也并非万能钥匙。这不禁让我们怀疑这两个示例的内部逻辑是否一样?
但是第二篇文章不是明明白白告诉我们,jQuery.html使用的是同步AJAX的机制来加载外部JS的么?等等。。。。。。
大家有没有从上面的分析中发现问题,AJAX来加载其他域的资源,这不是明摆着违背了大名鼎鼎的同源策略(Same Origin Policy)了么?所以jQuery不可能这么实现,我们来看看jQuery.ajax文档是怎么说的:

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

看来我们在第二篇文章中看到的这个函数(evalScript)内部并非真的通过同步AJAX来获取数据:j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


4. 深入jQuery.ajax函数,看看怎么加载不同域下的JS文件

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

注释已经写的很清楚了,如果是通过GET方式请求JavaScript文件,并且这个文件是在其他域下面的(remote),那么就通过在head中添加script标签来处理,而不是走AJAX的流程。所以在这个条件分支结束的时候,直接从函数体返回:j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

经过分析,我们发现在动态加载不同域的JavaScript时,jQuery.html其实采用了在head中添加script标签的做法(不管是外部JS或者内联JS),这和我们在第一篇文章中提到的test3.htm是一模一样的逻辑,这也验证了我们的想法:j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

由此可见,如果想兼容CDN加速静态资源的情况,还必须使用第一篇文章中提到的“方案一,如何在动态添加script标签时确保执行顺序”。j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

5. 后记

本来这个系列的文章到这就应该结束了。不过在我测试jQuery1.5.1后,居然发现和我用的jQuery1.4.4是有差异的,早就听说jQuery1.5.1对AJAX部分进行了重构,没想到还真的对我们的具体代码有点影响。j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

javascript的函数、创建对象、封装、属性和方法、继承-javascripj8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

j8XAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

好了关于网站网页设计设计相关的这篇文章就给大家介绍到这里不明白的地方给本站留言。声明,本站内容来源于互联网,如果侵犯了你的权益请联系本站删除。,

标签:

分享到:

  admin

注册时间:

网站:0 个   APP:3 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304411

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市