討論html與javascript在瀏覽器中的載入順序問題_javascript技巧
前一陣子橫掃了javascript,當時自我感覺良好。現在一想,又覺得沒什麼。今天的任務是把asp.net ajax中客戶端頁面生命週期那一章研究完。然而,因為這一章的內容使我產生了一些迷惑。這些疑惑在書中都沒有隻字提及。
一、html頁面的詳細載入過程是什麼呢?頁面元素在載入時的優先順序是什麼?
二、javascript的作用域、變數的作用域、不同腳本段之間的關係?
三、html頁面的生命週期?
這些問題真的打中了我的死穴。不了解這些,我就無法透過asp.net ajax的框架看到其底層原理。只知其然而不知其所以然。
在網路上廣泛查閱資料的情況下。獲得了部分答案。
關於html的載入:
整體上,html的是依照從上到下的順序邊載入邊解析,邊產生dom對象,至於在html中夾雜的:
document.write("xxxx");
之類的東西,它們的順序是怎麼樣的呢?還是一樣,如果在解析html時,遇到這些東西就會停止解析,轉而執行這些生成語句,如果中間插入外部鏈接,就轉而解析、執行外部鏈接對應的js。對於以下語句對於不同瀏覽器有不同的結果:
在ie中。不會等待aaa.js下載並解析完的,會創建另一個線程搞定它,而主線程則越過去。但在ff中。則會等待,直到aaa.js下載、解析、執行完畢。
關於javascript的執行情況,請見本文後面所附的參考資料,裡面有詳盡的討論。
關於html中頁面的生命週期:
最重要的兩個事件就是onLoad、onUnLoad。 onLoad在頁面載入完畢的時候觸發。 onUnLoad在頁面的dom銷毀後觸發。不過,onLoad有點特殊狀況,也請參考本文後面所附的參考資料。一定要引起注意。
我看了幾個網站的html原始碼,發現如下碼:
這是某網站在頁面中顯示廣告的程式碼,國內網站,顯示廣告一般都是用iframe來引入第三方頁面,這兒卻是直接用javascript段來產生。後來,我又看了163部落格產生的html程式碼,超變態啊。整個html程式碼只有一個架子,所有頁面的產生都是透過js。我看到它的頁面後面引入了幾個js文件,最後在頁面最後還有一個initAll函數的呼叫。我沒有去仔細研究它的js程式碼,我懷疑它把所有表現層的功能全面放到客戶端的js檔案中去了。伺服器端只是很少的頁面架和許多的webservices。真是嘆為觀止。
關於一個事件觸發多個回應函數:
我曾想過要自己實現一個c#中委託一樣的東西。可以讓javascript的事件不只關聯到一個function。可以一次觸發一個事件清單。這幾天研究asp.net ajax,裡面對此有封裝。
asp.net ajax中,可以把一個dom元素封裝成asp.net ajax中的Sys.UI.DomElement物件。然後就可以用它的方法:addHandler()、addHandlers()、removeHander()來操作事件清單。真是方便。當時不大明白這個原理。今天看到後面參考資料中的兩段程式碼讓我徹底明白這中間的細節:
一、使用dom 2中的介面:
if(document.addEventListener){
window.addEventListener('load',f,false);
window.addEventListener('load',f1,false);
…
}else{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
…
}
原來,dom中早有這個概念了。才曉得。看來,我對dom還是有許多不了解的地方。
二、這個方法就是純手實現了。請參閱下方程式碼:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
這個函數寫得很巧妙。利用匿名函式搞定!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML是構建網頁結構的基石。 1.HTML定義內容結構和語義,使用、、等標籤。 2.提供語義化標記,如、、等,提升SEO效果。 3.通過標籤實現用戶交互,需注意表單驗證。 4.使用、等高級元素結合JavaScript實現動態效果。 5.常見錯誤包括標籤未閉合和屬性值未加引號,需使用驗證工具。 6.優化策略包括減少HTTP請求、壓縮HTML、使用語義化標籤等。

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增強WebevebDevelopment。

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

Apache服務器是強大的Web服務器軟件,充當瀏覽器與網站服務器間的橋樑。 1. 它處理HTTP請求,根據請求返回網頁內容;2. 模塊化設計允許擴展功能,例如支持SSL加密和動態網頁;3. 配置文件(如虛擬主機配置)需謹慎設置,避免安全漏洞,並需優化性能參數,例如線程數和超時時間,才能構建高性能、安全的Web應用。

Nginx性能監控與故障排查主要通過以下步驟進行:1.使用nginx-V查看版本信息,並啟用stub_status模塊監控活躍連接數、請求數和緩存命中率;2.利用top命令監控系統資源佔用,iostat和vmstat分別監控磁盤I/O和內存使用情況;3.使用tcpdump抓包分析網絡流量,排查網絡連接問題;4.合理配置worker進程數,避免並發處理能力不足或進程上下文切換開銷過大;5.正確配置Nginx緩存,避免緩存大小設置不當;6.通過分析Nginx日誌,例如使用awk和grep命令或ELK

CentOS系統下HDFS文件系統的安裝、配置及優化指南本文將指導您如何在CentOS系統上安裝、配置和優化Hadoop分佈式文件系統(HDFS)。 HDFS安裝與配置Java環境安裝:首先,確保已安裝合適的Java環境。編輯/etc/profile文件,添加以下內容,並將/usr/lib/java-1.8.0/jdk1.8.0_144替換為您的實際Java安裝路徑:exportJAVA_HOME=/usr/lib/java-1.8.0/jdk1.8.0_144exportPATH=$J
