<optgroup id="k0gee"></optgroup><optgroup id="k0gee"><small id="k0gee"></small></optgroup>
<optgroup id="k0gee"><div id="k0gee"></div></optgroup>
<optgroup id="k0gee"></optgroup>
<optgroup id="k0gee"></optgroup>
<center id="k0gee"></center>
<optgroup id="k0gee"></optgroup>
IT資訊
當前位置:主頁 > 業界 > 科學頻道 >

在多個頁面使用同一個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://www.mfrp.tw/a/yejie/kexuepindao/2018/0530/199.html

轉載本站原創文章請注明來源:草根網

行業聚焦

比馬云更有錢?他可能才是中國首富!OPPO、

 今日微信公號推薦:ETF觀察:(微信號:topetf)來源 l 雪球(ID:xueqiujinghua)導言:中國真正的首富可能是段永平!...[詳細]

廣州市番禺區市橋街多杰寵物醫院曝光騙局很

廣州市番禺區市橋街多杰寵物醫院曝光騙局很坑廣州市番禺區市橋街多杰寵物醫院非常的不靠譜,廣州市番禺區市橋...[詳細]

樂庸建:6.4黃金跌勢依舊關注美聯儲加息,周

夠漫網(www.gogoloot.cn):【樂庸建:6.4黃金跌勢依舊關注美聯儲加息,周初主高空】 5月非農就業報告非常穩健,顯然...[詳細]

瞿穎跨界學京劇遭名家嚴訓 劉曉慶拒絕青衣

新浪娛樂訊 3月1日,由北京衛視推出的大型京劇文化傳承節目《傳承中國》在京舉行開播發布會。發布會當天,京劇...[詳細]

主流游戲電腦主機 5000元銳龍R5 東京食尸鬼

信英IT網(http://www.xinlintouzi.com):主流游戲電腦主機 5000元銳龍R5-1400配1066獨顯電腦 目前的性價比最好的主流的電腦...[詳細]

推薦內容

更多

熱點內容

更多

諾基亞X6值得買嗎 諾基亞

 

5月16日下午,由HDM運營的Noika在北京民生現代美術館召開新品發布會,正式發布了新款諾基亞X6手機。諾基亞X采用今年...[詳細]

特朗普拒手機安檢 至少有

 

  特朗普拒手機安檢,至少有兩部蘋果手機!有媒體報道,美國總統特朗普習慣使用手機撥打電話和在社交網站留言,...[詳細]

KB4103714發布:Win10秋季創作

 

  近日微軟面向Windows 10秋季創作者更新(Veion 1709)發布了KB4103714累積更新,在安裝后版本號升至16299.461。該累積更新的...[詳細]

QQ飛車手游a車性能之王 最

 

  QQ飛車手游a車性能之王,QQ飛車手游最厲害a車是誰?QQ飛車手游中,存在不少a車,那么在眾多a車中,QQ飛車手游a車性...[詳細]

微軟Build 2018大會:Win10用

 

  近日,微軟一年一度的Build開發者大會正式召開,會上宣布Win10用戶量破7億,同時Win10實現Alexa和小娜語音助手整合,...[詳細]

  • 諾基亞X6值得買嗎 諾基亞
  • 特朗普拒手機安檢 至少有
  • KB4103714發布:Win10秋季創作
  • QQ飛車手游a車性能之王 最
  • 微軟Build 2018大會:Win10用
一周排行每月關注