摘要:微軟在網(wǎng)頁(yè)技術(shù)上加入了不少專屬事物,計(jì)有以及微軟自家的格式等,使不少網(wǎng)頁(yè)使用非微軟平臺(tái)及瀏覽器無(wú)法正常顯示。關(guān)于第三個(gè)參數(shù)可以看我之前的文章在年推出,直到年后的年,微軟發(fā)布的才遵循這個(gè)標(biāo)準(zhǔn)。
文章首發(fā)在《你可能不知道的前端知識(shí)點(diǎn)》專欄,備份地址:https://github.com/justjavac/...
API (Web 或 XML 頁(yè)面) = DOM + JavaScript(腳本語(yǔ)言)
問(wèn)題問(wèn)題從一個(gè)異常開(kāi)始。
有網(wǎng)友寫(xiě)了如下代碼:
function download() { console.log(1); }
下載
當(dāng)點(diǎn)擊按鈕的時(shí)候,卻報(bào)錯(cuò)了:
Uncaught TypeError: download is not a function
報(bào)錯(cuò)信息很奇怪:download 不是一個(gè)函數(shù)。如果我們?cè)?devtools console 執(zhí)行 $0.download 會(huì)得到 "",一個(gè)空字符串。
解讀先說(shuō)答案:HTML 5 中為 增加了 download 屬性,所以在 a 上調(diào)用 download() 會(huì)提示 download is not a function,因?yàn)?strong>所有的屬性都是字符串。
同樣的坑還有:如果把表單里面的某個(gè)控件 id 設(shè)置為 submit,會(huì)導(dǎo)致表單提交 form.submit() 出錯(cuò),錯(cuò)誤信息和這個(gè)類似,submit is not a function。
DOM實(shí)際上沒(méi)有沒(méi)有 DOM0 級(jí)的官方標(biāo)準(zhǔn)。
DOM 是 Netscape 最早提出,并且與 JS 的誕生是在同一個(gè)時(shí)間。Netscape2 瀏覽器首先實(shí)現(xiàn)了 DOM,定義了獲取文檔中一些元素的入口,比如 document.forms 和 document.images,后期的瀏覽器為了實(shí)現(xiàn)向后兼容,同樣也支持這些接口。在 JS 事件中,我們經(jīng)常提及的 DOM 事件,也是在這個(gè)階段定義的。其它比較常用的還有 CSS 訪問(wèn)、DOM 遍歷、等。。。
DOM(Document Object Model) 的繁榮可以追溯至 1990 年代后期微軟與 Netscape 的“瀏覽器大戰(zhàn)”,雙方為了在 JavaScript 與 JScript 一決生死,于是大規(guī)模的賦予瀏覽器強(qiáng)大的功能。微軟在網(wǎng)頁(yè)技術(shù)上加入了不少專屬事物,計(jì)有 VBScript、ActiveX、以及微軟自家的 DHTML 格式等,使不少網(wǎng)頁(yè)使用非微軟平臺(tái)及瀏覽器無(wú)法正常顯示。
1998 年 10 月,DOM1 成為了 W3C 的推薦標(biāo)準(zhǔn)。DOM1 級(jí)由兩個(gè)模塊組成:DOM核心(DOM Core)和DOM HTML。分別定義了:
DOM核心:針對(duì)任何結(jié)構(gòu)化文檔的標(biāo)準(zhǔn)模型
DOM HTML:只針對(duì)HTML文檔的標(biāo)準(zhǔn)模型
DOM1 就像一個(gè)剛出生的孩子,肯定有各種不足。于是各種瀏覽器都在原來(lái)的基礎(chǔ)上添加新的私有 API,比如 attachEvent 和 addEventListener,于是 W3C 又推出了 DOM level 2。而這個(gè)版本最大的變化就是 添加事件監(jiān)聽(tīng)的方法統(tǒng)一成了 addEventListener,并增加了第三個(gè)參數(shù)。(關(guān)于第三個(gè)參數(shù)可以看我之前的文章 #6 )
W3C 在 2000 年推出 DOM level 2,直到 9 年后的 2009 年,微軟發(fā)布的 IE9 才遵循這個(gè)標(biāo)準(zhǔn)。WTF?。?!
后來(lái)陸續(xù)推出了 DOM3 和 DOM 4。
參考鏈接DOM概述 - Web API 接口 | MDN
文檔對(duì)象模型 (DOM) - Web API 接口 | MDN
探索 DOM Level 3 Core 的關(guān)鍵特性 第 1 部分 第 2 部分
DOM級(jí)別 | GCidea"s blog
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/51436.html
摘要:微軟在網(wǎng)頁(yè)技術(shù)上加入了不少專屬事物,計(jì)有以及微軟自家的格式等,使不少網(wǎng)頁(yè)使用非微軟平臺(tái)及瀏覽器無(wú)法正常顯示。關(guān)于第三個(gè)參數(shù)可以看我之前的文章在年推出,直到年后的年,微軟發(fā)布的才遵循這個(gè)標(biāo)準(zhǔn)。 文章首發(fā)在《你可能不知道的前端知識(shí)點(diǎn)》專欄,備份地址:https://github.com/justjavac/... API (Web 或 XML 頁(yè)面) = DOM + JavaScript...
摘要:一前言在接到需求后很快的做完了然后做本地測(cè)試發(fā)現(xiàn)因?yàn)槭钦?qǐng)求里面參數(shù)數(shù)據(jù)是查詢?nèi)嗣詳y帶中文,對(duì)此進(jìn)行了問(wèn)題分析。 一、前言 在接到需求后很快的做完了然后做本地測(cè)試發(fā)現(xiàn): java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are ...
摘要:一前言在接到需求后很快的做完了然后做本地測(cè)試發(fā)現(xiàn)因?yàn)槭钦?qǐng)求里面參數(shù)數(shù)據(jù)是查詢?nèi)嗣詳y帶中文,對(duì)此進(jìn)行了問(wèn)題分析。 一、前言 在接到需求后很快的做完了然后做本地測(cè)試發(fā)現(xiàn): java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are ...
閱讀 902·2021-10-25 09:44
閱讀 1280·2021-09-23 11:56
閱讀 1198·2021-09-10 10:50
閱讀 3142·2019-08-30 15:53
閱讀 2146·2019-08-30 13:17
閱讀 630·2019-08-29 18:43
閱讀 2506·2019-08-29 12:57
閱讀 865·2019-08-26 12:20