YT资讯
当前位置:主页 > 综合 > 政策时局 >

在多个页面使用同一个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的顺序执行特性
可能有人对这个特性并不是很清楚,我就通过一个例子来说明。

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

版权与免责声明:

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


本文地址:http://www.ytz4.com/a/yejie/kexuepindao/2018/0530/199.html

转载本站原创文章请注明来源:亚太在线

亚太聚焦

记“中国油茶之乡”攸县油茶产业致富带头人

 位于湖南省东南部的攸县盛产油茶,素有湘东油库之称,据记载,攸县油茶栽培已有800余年的悠久历史。主要栽培品种以湘林...[详细]

【纪录片】记“中国油茶之乡”攸县油茶产业

位于湖南省东南部的攸县盛产油茶,素有湘东油库之称,据记载,攸县油茶栽培已有800余年的悠久历史。主要栽培品种以湘林...[详细]

健康科普传播高峰论坛暨百科医典启动会在北

中新网6月3日电 6月3日,权威赋能,普惠健康健康科普传播高峰论坛暨百科医典启动会在北京举行。中国高血压联盟首任主席...[详细]

李孝玉采用中草药与祖传秘方治疗风湿骨病疗

(民医网讯)2019年3月19日,在湖南省浏阳市焦溪乡金云村风友药号有位采用中草药与祖传秘方专业治疗风湿骨病的土专家,...[详细]

花溪区召开创建国家全域旅游示范区领导小组

5月31日,花溪区委书记、花溪文化旅游创新区党工委书记李瑞主持召开花溪区创建国家全域旅游示范区领导小组工作调度会,...[详细]

推荐内容

更多

热点内容

更多

得"意"而忘"形"——

 

(金砚讯)2018年11月17日上午由金砚传媒主办的传承与经典系列展之得"意"而忘"形"贺天飞书画展在中国国家画院(国展...[详细]

著名艺术家苏勒亚其其格

 

  2018年6月5日,鉴于中国著名歌手、知名艺术家苏勒亚其其格对中国农产品品牌宣传作出的杰出贡献,全国农产品加工产业发展...[详细]

万词霸屏厂家、万词霸屏

 

  万词霸屏厂家、万词霸屏优推宝创始人是谁? 万词霸屏哪家公司开发的? 万词霸统属于(河北优推宝信息技术有限公司与河...[详细]

我为中国农产品品牌代言

 

   2019年4月20日,第十一届中国西安国际食品博览会暨我为中国农产品品牌代言京东峰会与“大国农匠”颁奖盛典在西安曲江国...[详细]

中国著名画家姚厚武画展

 

  (金砚讯)2018年6月15日上午10:30, 由金砚传媒主办的传承与经典系列之远山的呼唤姚厚武山水画作品展在中国国家画院(国展)美...[详细]

  • 得"意"而忘"形"——
  • 著名艺术家苏勒亚其其格
  • 万词霸屏厂家、万词霸屏
  • 我为中国农产品品牌代言
  • 中国著名画家姚厚武画展
一周排行每月关注