资讯
当前位置:主页 > 业界 > 汽车测评 >

在多个页面使用同一个HTML片段方法 let it be 吉他

2018-05-30 16:29 网络整理 汽车测评 编辑:admin 浏览数:智能汽车网

 上一篇文章中我们使用textarea来模拟AJAX的返回结果,造成了一些误解。 这里我们首先用asp.net的Generic Handler做一个简单...


上一篇文章中我们使用textarea来模拟AJAX的返回结果,造成了一些误解。

这里我们首先用asp.net的Generic Handler做一个简单的后台来重现这个AJAX过程。
1. HTML页面:

2. service.ashx 后台代码:

public void ProcessRequest(HttpContext context) { string filePath = context.Request["file"].ToString(); string fileContent = String.Empty; using (StreamReader sr = new StreamReader(context.Server.MapPath(filePath))) { fileContent = sr.ReadToEnd(); } context.Response.ContentType = "text/plain"; context.Response.Write(fileContent); }


3. pages2_1.txt 文件:

Page Content



将HTML片段中的JavaScript提取为一个文件
这也是自然而然就想到的,特别是HTML片段中JavaScript代码比较多的情况下,
提取为一个JS文件,让浏览器帮忙缓存不失为一种好方法。
1. 重新定义pages2_2.txt

Page Content

2. pages2_2.js

function setup() { var parent = $("#complex_page_segment"); $(".previous", parent).click(function() { $(".content", parent).html("Previous Page Content"); }); $(".next", parent).click(function() { $(".content", parent).html("Next Page Content"); }); }


3. 运行,居然报错!

问题分析
错误信息是 setup 这个函数没有定义,但是从Firebug中我们明显看到pages2_2.js的确被加载了。
那个极有可能是在 pages2_2.js 加载之前就调用了 setup 这个函数。
但是我们的setup 函数调用是放在jQuery的 $(function(){ }) 之中的,也就是在页面加载完毕才调用的。

其实现在问题已经很明显了,在AJAX返回页面片段的时候,整个页面是已经加载完成了,也就是DOM Ready。
所以在页面片段中:

$(function() { setup(); });

和下面直接调用是等价的:

setup();



解决问题
对于这个问题,我们有三种解决办法。
1. 将外部JS文件在页面中加载,而不是在AJAX返回的HTML片段。

2. 我们可以通过JavaScript先加载外部JS,再加载纯粹的HTML片段。
看一下pages2_3.htm的实现:


3. 利用JavaScript在页面上是顺序加载的特性,将HTML片段中外部JS引用放在最上面

pages2_4.htm:

pages2_4.txt:

Page Content


可能你会觉得第三种方法没有必要,但是如果你碰到这样的需求,你就知道第三种方法的重要性了。

不要在每个页面都加载这个JS文件

调用者不知道一个HTML片段关联哪些JS文件



============================================================
关于JS的顺序执行特性
可能有人对这个特性并不是很清楚,我就通过一个例子来说明。

分享到:
上一篇:小米新零售分销渠道:截至2018年3月1日,已有3
下一篇:临沂中心支公司参展临沂第五届资本交易大会

版权与免责声明:

凡未注明"稿件来源"的内容均为转载稿,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性。

本文地址:http://znqcw.cn/yejie/ceping/2018/0530/199.html

转载本站原创文章请注明来源:智能汽车网

行业聚焦

强者恒存!曙光存储摘下全球存储产业皇冠的

 6月25日,曙光存储召开了主题为先进存力,凝聚数据要素的新品暨品牌发布会, 震撼发布全球首个亿级IOPS集中式全闪存储...[详细]

长城皮卡2023年全球销售202330台 蝉联中国皮卡

日前,长城皮卡公布最新销量数据。 长城皮卡再创销冠传奇,12月全球销售 16032 台 ,同比增长1 6. 88 % ;202 3 年全球销 售 202330 台...[详细]

全新配色猛龙领衔 哈弗新能源即将强势登陆

11月17日,第二十一届广州国际汽车展览会即将正式拉开帷幕。哈弗品牌将以你的猛龙 独一无二为主题倾情参展,并 将 在车...[详细]

自动挡中卡只选欧曼!欧曼行星中卡采埃孚自

选择自动挡就是选择高效物流的未来!2023年11月15日,以自动挡中卡只选欧曼为主题的欧曼行星中卡采埃孚自动挡产品全国上市...[详细]

东风御风V9E惊艳亮相武汉车展,新能源VAN赋能

2023中国国际商用车展(CCVS)于11月8-11日在武汉国际博览中心举办(简称武汉车展),本届展会的主题是新理念、新格局、新需求。...[详细]

推荐内容

更多

热点内容

更多

黑客马拉松比赛:前浪、

 

2020年7月,软银机器人联合世界人工智能大会(WAIC)和机器之心举办了黑客马拉松比赛。在软银机器人易用的开发工具、丰富...[详细]

2020 WAIC机器人狂欢:AI抗疫

 

  2020年7月8日-11日,由张江集团、优必选科技、软银集团旗下软银机器人、Watson Build 创新中心、机器之心联合组织的世界人工...[详细]

机器人时代的到来,Robo

 

  2020年6月27-28日,国际权威机器人赛事RoboCup@Home Education于线上举行,此赛事是RoboCup@Home的一项教育计划,旨在鼓励学校参与到...[详细]

通证经济时代已来临!易

 

  一,什么是通证 通证基于固有和内在的价值,它立足于实体经济、为实体经济服务。 通证是源于英文的token,是人们高度关...[详细]

BKCoin国际数字资产交易所

 

  BKCoin作为全球知名的区块链技术服务机构,其业务包含:数字资产交易平台、信息安全研发中心、区块链项目孵化中心以及数字...[详细]

  • 黑客马拉松比赛:前浪、
  • 2020 WAIC机器人狂欢:AI抗疫
  • 机器人时代的到来,Robo
  • 通证经济时代已来临!易
  • BKCoin国际数字资产交易所
一周排行每月关注