国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Internet Explorer 的創(chuàng)新

系統(tǒng) 瀏覽器
IE 曾是 web 創(chuàng)新的先驅(qū),但最近幾年因為對 web 標(biāo)準(zhǔn)的支持落后于其他瀏覽器以及低版本 IE 的各種 bug 而被人詬病。雅虎的 Nicholas C. Zakas 帶我們回顧了 IE 在 web 發(fā)展過程中扮演的輝煌角色,讓我們能以一個更客觀的眼光來看待 IE。看完這篇文章,也許大家都會對 IE 瀏覽器有一定的改觀,這也是我翻譯這篇文章的目的。

【譯者按】IE 曾是 web 創(chuàng)新的先驅(qū),但最近幾年因為對 web 標(biāo)準(zhǔn)的支持落后于其他瀏覽器以及低版本 IE 的各種 bug 而被人詬病。雅虎的 Nicholas C. Zakas 帶我們回顧了 IE 在 web 發(fā)展過程中扮演的輝煌角色,讓我們能以一個更客觀的眼光來看待 IE。看完這篇文章,也許大家都會對 IE 瀏覽器有一定的改觀,這也是我翻譯這篇文章的目的。

譯文

在 Internet Explorer 成為大家都恨之入骨的瀏覽器的很久以前,它曾是整個互聯(lián)網(wǎng)的創(chuàng)新驅(qū)動力。有時候我們很難記得那些在 IE 6 成為全世界 web 開發(fā)者的災(zāi)難之前 IE 所作的貢獻(xiàn)。不管你信不信,正因為有了 IE 4—6,才會有我們現(xiàn)在所知的 web 開發(fā)。IE 的一些獨特的功能過去就曾是事實標(biāo)準(zhǔn),后來成為了官方標(biāo)準(zhǔn)最終進入了 HTML5 規(guī)范。人們也許很難相信,對于我們現(xiàn)在認(rèn)為理所應(yīng)當(dāng)?shù)墓δ苤杏泻艽笠徊糠侄紤?yīng)該要想到 IE,但快速地回顧一下歷史可以讓我們知道的確如此。

DOM

如果 IE 是一個人人都痛恨的瀏覽器,那么「文檔對象模型」(DOM)就是人人都痛恨的 API 了。你可以說 DOM 過于繁瑣、不適合 JavaScript 甚至是有些荒謬,而且這些也都沒錯。然而,DOM 還是給了開發(fā)者通過 JavaScript 來訪問網(wǎng)頁的每個部分的途徑。曾經(jīng)你一度只能通過 JavaScript 訪問頁面中某些特定的元素。IE 3 和 Netscape 3 只允許程序訪問表單元素、圖片以及鏈接。Netscape 4 改進了這一點,把程序可訪問的范圍通過 document.layers 擴展到了它特有的 layer 元素。IE 4 作了進一步改進,把這個范圍通過document.all 擴展到了頁面的所有元素。

從很多方面來說,document.all 算是 document.getElementById() 的最初版本。你還是要使用元素的 ID 來通過 document.all 訪問它,例如 document.all.myDiv 或是 document.all["myDiv"]。最主要的區(qū)別就是 IE 使用了一個集合而非方法,而這和其他當(dāng)時的訪問方法比如 document.images 及 document.forms 是相吻合的。

IE 4 也***個引入了用 document.all.tags() 來通過標(biāo)簽名字獲取一個元素列表的功能。無論從哪點來看,這都是 document.getElementsByTagName() 的最初版本,而且工作方式完全相同。如果你想獲取所有的div 元素,你可以使用 document.all.tags("div")。甚至在 IE 9 中,這個方法仍然作為document.getElementsByTagName() 的一個別名存在。

IE 4 同時也為我們引入了可能是有史以來***的私有 DOM 擴展:innerHTML。看起來微軟的那幫人是認(rèn)識到了通過編程手段來建立一個 DOM 有多么痛苦,所以把這個便捷方法,連同 outerHTML 一起提供給我們。事實證明這兩個方法都非常有用,已經(jīng)在 HTML5 中被標(biāo)準(zhǔn)化了[1]。隨它們一同而來的用來處理純文本的 API——innerText 以及 outerText——同樣被證明足夠有影響力,因為 DOM Level 3 已經(jīng)引入了與innerText 行為相似的 textContent[2]。

按照同樣的思路,IE 4 引入了 insertAdjacentHTML(),這是又一種將 HTML 插入文檔中的方法。雖然這花了更長的時間,但最終也被編入了 HTML5[3],而且目前已被各瀏覽器廣泛支持。

事件

在開始時,JavaScript 并沒有事件機制。網(wǎng)景和微軟都作出了嘗試,并且分別得出了不同的模型。網(wǎng)景給我們帶來了事件捕獲,其思想是一個事件先發(fā)送到窗口,然后是文檔,然后一個個直到最終到達(dá)預(yù)期的目標(biāo)。網(wǎng)景瀏覽器 6 以前的版本都僅支持事件捕獲。

微軟采取了一個相反的方法,設(shè)計出了事件冒泡。他們認(rèn)為一個事件應(yīng)該先從實際的目標(biāo)出發(fā),然后在上層節(jié)點觸發(fā)直到文檔。IE 9 以前的瀏覽器僅支持事件冒泡。雖然隨著官方的 DOM 事件規(guī)范發(fā)展,同時包含了事件捕獲和事件冒泡,但大多數(shù) web 開發(fā)者都只使用事件冒泡,而把事件捕獲僅僅留在 JavaScript 類庫中的一些解決方案和小技巧中使用。

除了創(chuàng)造了事件冒泡以外,微軟還創(chuàng)造了一系列后來也最終被標(biāo)準(zhǔn)化的額外事件:

  • contextmenu – 當(dāng)使用鼠標(biāo)副按鍵點擊一個元素時觸發(fā)。在 IE 5 中***出現(xiàn),后來被編入了 HTML5[4]。現(xiàn)在已被所有主流瀏覽器所支持。
  • beforeunload – 在 unload 事件前觸發(fā),允許你阻斷頁面的退出。最初由 IE 4 引入,現(xiàn)在也為 HTML5 的一部分[4]。
  • mousewheel – 在鼠標(biāo)滾輪(或類似設(shè)備)被使用時觸發(fā)。***支持此事件的瀏覽器是 IE 6。就像其他一樣,目前也是 HTML5 的一部分[4]。唯一不支持此事件的主流桌面瀏覽器是 Firefox(但其支持一個可用來替代的 DOMMouseScroll 事件)。
  • mouseenter – mouseover 的非冒泡版本,被微軟在 IE 5 中引入,用來克服 mouseover 使用時帶來的困擾。這個事件已被 DOM Level 3 事件規(guī)范正規(guī)化[5]。同樣被 Firefox 及 Opera 支持,但 Safari 和 Chrome 都(暫時?)不支持。
  • mouseleave – 與 mouseenter 對應(yīng)的 mouseout 的非冒泡版本。在 IE 5 中被引入,目前被 DOM Level 3 事件規(guī)范標(biāo)準(zhǔn)化[6]。瀏覽器支持和 mouseenter 一樣。
  • focusin – focus 事件的冒泡版本,用來幫助更好地管理頁面上的聚焦行為。最初在 IE 6 中被引入,現(xiàn)在已成為 DOM Level 3 事件規(guī)范的一部分[7]。目前沒有被很好地支持,盡管 Firefox 關(guān)于其實現(xiàn)的開過一個 bug。
  • focusout – blur 事件的冒泡版本,用來幫助更好地管理頁面上的聚焦行為。最初在 IE 6 中被引入,現(xiàn)在已成為 DOM Level 3 事件規(guī)范的一部分[8]。和 focusin 一樣,沒有良好支持但 Firefox 接近了。

XML 與 Ajax

盡管 XML 已經(jīng)像很多人所料的那樣在現(xiàn)今的 web 上被大量使用,但是對 XML 進行支持的領(lǐng)路人仍然是 IE。它是***個支持在客戶端通過 JavaScript 進行 XML 解析以及 XSLT 變換的瀏覽器。不幸的是,它是通過 ActiveX 對象來表示 XML 文檔以及 XSLT 處理器的。但 Mozilla 的人顯然認(rèn)識到了其中的可取之處,因為他們后來用 DOMParser、XMLSerializer 和 XSLTProcessor 創(chuàng)造了類似的功能。其中前兩個已經(jīng)成為了 HTML5 的一部分[9]。雖然基于標(biāo)準(zhǔn)的 JavaScript XML 處理方式和 IE 提供的版本差異較大,但它無疑是深受 IE 影響的。

客戶端的 XML 處理都都是 IE 對 XMLHttpRequest 的實現(xiàn)的一部分,最開始由 IE 5 以 ActiveX 對象的形式引入。其中的想法是希望可以在一個網(wǎng)頁中從服務(wù)器獲取一個 XML 文檔并且允許用 JavaScript 把這個 XML 當(dāng)做 DOM 來進行處理。IE 的版本需要你使用 new ActiveXObject("MSXML2.XMLHttp"),這也使得它依賴于版本字符串,而且讓開發(fā)者要費盡功夫去測試、使用***版本。再一次,F(xiàn)irefox 站出來,通過創(chuàng)建一個當(dāng)時還是私有的、與 IE 版本接口完全同名的 XMLHttpRequest 對象來清理這一片混亂。此后其他瀏覽器復(fù)制了 Firefox 的實現(xiàn),最終使得 IE 7 也增加了一個不需要使用 ActiveX 的版本。當(dāng)然,使得每個人為 JavaScript 感到振奮的 Ajax 革命背后的驅(qū)動力正是 XMLHttpRequest。

CSS

當(dāng)想到 CSS 的時候,你可能不會過多地想到 IE——畢竟它對于 CSS 的支持往往是滯后的(至少直到 IE 10 都是如此)。然而,IE 3 卻是***個實現(xiàn)了 CSS 支持的瀏覽器。當(dāng)時,網(wǎng)景正在力推另一個類似的提案:JavaScript 樣式表(JSSS)[10]。從名稱就可以看出,這個提案用 JavaScript 來定義關(guān)于頁面的樣式信息。Netscape 4 引入了 JSSS 和 CSS,整整比 IE 落后了一個版本。其中對 CSS 的支持并不盡如人意,常常需要將樣式翻譯為 JSSS 以便應(yīng)用[11]。這也意味著在 Netscape 4 下,如果 JavaScript 被禁止了,CSS 也無法正常工作。

而那時 IE 對 CSS 的實現(xiàn)僅限于字體族、字號、顏色以及背景,但這個實現(xiàn)卻是優(yōu)質(zhì)且可用的。與此同時,Netscape 4 的實現(xiàn)卻很容易出問題、難以使用。是的,在很小的程度上,IE 導(dǎo)致了 CSS 的成功。

IE 還給我們帶來了其他最終被標(biāo)準(zhǔn)化的對 CSS 作的創(chuàng)新:

  • text-overflow – 用來在文字超出容器大小時顯示省略號。在 IE 6 中***出現(xiàn)并已在 CSS3 中被標(biāo)準(zhǔn)化[12]。目前已被各主流瀏覽器支持。
  • overflow-x 與 overflow-y – 允許你在兩個獨立的方向上對內(nèi)容溢出進行控制。這個屬性在 IE 5 中***出現(xiàn),后在 CSS3 中規(guī)范化了[13]。目前已被各主流瀏覽器支持。
  • word-break – 用來指定詞語之間的換行規(guī)則。最初在 IE 5.5 中出現(xiàn),現(xiàn)已被 CSS3 規(guī)范化[14]。除 Opera 外的所有主流瀏覽器均支持。
  • word-wrap – 指定了瀏覽器是否應(yīng)該在詞語中間換行。在 IE 5.5 中被創(chuàng)造出來,現(xiàn)已被 CSS3 標(biāo)準(zhǔn)化為了 overflow-wrap[15],盡管所有主流瀏覽器都以 word-wrap 的形式支持它。

另外,許多 CSS3 中新的視覺效果都應(yīng)該感謝 IE 所奠定的基礎(chǔ)。IE 4 引入了私有的 filter 屬性,從成為了***個可以做下面這些事的瀏覽器:

  • 根據(jù) CSS 的指示來生成漸變(CSS3:漸變)
  • 用 alpha 濾鏡來創(chuàng)建半透明元素(CSS3:opacity 以及 RGBA)
  • 將一個元素旋轉(zhuǎn)任意的角度(CSS3:用 transform 配合 rotate())
  • 為一個元素應(yīng)用陰影(CSS3:box-shadow)
  • 為一個元素應(yīng)用一個矩陣變換(CSS3:用 transform 配合 matrix())

除此之外,IE 4 有一個被稱為「過渡」的功能,它允許你用濾鏡創(chuàng)建一些基本的動畫。這個功能主要是基于通常在 PowerPoint 中可用的過渡功能,例如淡入或淡出、棋盤變換等等[16]。

所有這些功能都以某種方式成為了 CSS3 的主要功能。在 1997 年發(fā)布的 IE 4 就有了這些功能,而我們現(xiàn)在才開始在其他瀏覽器中享受到這些功能,實在是很驚人的。

其他對HTML5 的貢獻(xiàn)

HTML5 中很大一部分都來自 IE 及其引入的 API。這里有一些本文之前還沒提到過的內(nèi)容:

  • 拖放 – HTML5 中最酷的部分之一就是原生的拖放功能[17]。這個 API 源自 IE 5,而且在 HTML5 中已有描述,且變化非常小。主要的區(qū)別是增加了 draggable 屬性來把任意元素標(biāo)記為可拖放的(IE 用了一個 JavaScript 調(diào)用——element.dragDrop() 來做這件事)。除此之外,這個 API 與原始版本近乎相同,目前已被各主流桌面瀏覽器所支持。
  • 剪貼板的訪問 – 現(xiàn)在已從 HTML5 中分離出了自己的規(guī)范[18],賦予了瀏覽器在某些情況下訪問剪貼板的能力。這個 API 最初出現(xiàn)在 IE 6 中,隨后被 Safari 模仿,它將 clipboardData 從 window 對象中取了出來,放到了剪貼板事件的 event 對象中。Safari 的改動被保留為 HTML5 版本的一部分,而且剪貼板的訪問在所有除 Opera 以外的主流瀏覽器中也都已被支持。
  • 富文本編輯 – 用 designMode 進行富文本編輯是在 IE 4 中被引入的,因為微軟希望給 Hotmail 用戶們一個更好的文本編輯體驗。后來,在 IE 5.5 引入了 contentEditable,以用作一個更輕量級的進行富文本編輯的方法。隨之而來的是可怕的 execCommand() 方法以及它的一些附屬方法。不論好壞,這個富文本編輯的 API 已在 HTML5 中被標(biāo)準(zhǔn)化[19],而且目前已經(jīng)被所有主流桌面瀏覽器以及移動 Safari 和 Android 瀏覽器所支持。

結(jié)論

盡管嘲笑 IE 很簡單也很流行,但事實上,如果不是它所作的貢獻(xiàn),我們不會擁有我們目前所知的 web。如果沒有 XMLHttpRequest 和 innerHTML web 會怎樣?它們正是 web 應(yīng)用的 Ajax 革命的催化劑,許多新的功能都是基于它們構(gòu)建的。可笑的是當(dāng)我們回望這個已經(jīng)成為互聯(lián)網(wǎng)上的「壞小子」的瀏覽器的歷史,會發(fā)現(xiàn)沒有它,我們不會處在今天所在的位置。

是的,IE 自身有瑕疵,但對于互聯(lián)網(wǎng)的歷史的絕大部分時間,它都是推動技術(shù)進步的瀏覽器。現(xiàn)在我們處在一個大規(guī)模瀏覽器競爭以及創(chuàng)新的時代,卻很容易忘記我們從哪里一路走來。所以當(dāng)你下次遇見正在做 IE 相關(guān)工作的人時,請別投去羞辱和番茄。相反,要謝謝他們幫助 IE 一路走到今天,也使 web 開發(fā)者成為世界上最重要的工作之一。

原文The innovations of Internet Explorer

責(zé)任編輯:黃丹 來源: iefans
相關(guān)推薦

2009-02-24 08:22:53

Internet ExIE8RTM

2010-09-16 08:59:41

2010-12-29 14:32:38

2011-08-18 09:26:45

IE

2010-12-28 15:15:32

2012-12-12 16:16:19

微軟IE10Windows 8

2019-02-26 15:05:54

Windows 10Internet Ex

2013-11-08 09:48:50

IEIE11

2011-03-16 11:27:31

微軟IE9

2010-12-20 15:04:57

加載項管理

2011-03-22 18:52:56

IE9微軟中國

2012-03-20 13:27:31

Internet Ex

2020-08-28 10:09:20

微軟Internet ExWindows 10

2011-09-06 10:02:06

IE9Windows 7Forresten

2009-03-15 10:09:56

IE8瀏覽器進程模型

2009-11-25 14:24:28

2010-04-23 14:52:17

Internet Ex

2021-05-25 14:06:35

MicrosoftIE瀏覽器

2012-05-27 17:46:18

Internet ExIE微軟

2019-02-13 14:33:13

點贊
收藏

51CTO技術(shù)棧公眾號

欧美性色欧美a在线播放| 国产黄页在线观看| 国产精品18毛片一区二区| 福利欧美精品在线| 日韩美女福利视频| 亚洲深夜福利| 黄黄视频在线观看| 国产精品久久久一本精品 | 欧美年轻男男videosbes| 俄罗斯一级**毛片在线播放| 欧美床上激情在线观看| 成人在线免费观看网站| 亚洲一区二区三区精品在线观看| 亚洲国产激情av| 伊人在线视频| 久久精品男人天堂| 亚洲免费二区| 久草视频这里只有精品| 亚洲一区免费视频| 国产精品一二三产区| 欧洲成人免费视频| 免费观看日韩电影| 一本色道久久加勒比88综合| 亚洲国产97在线精品一区| 欧美xxxx在线| 麻豆md0077饥渴少妇| 性做久久久久久免费观看欧美| 亚洲美女久久精品| 91免费国产网站| 成人h动漫精品| 91caoporm在线视频| 欧美黑人xxx| 免费观看在线综合| 色视频在线观看免费| 久久在线观看视频| 香蕉精品999视频一区二区 | 五月久久久综合一区二区小说| 久久久久久久久网| 色综合久久中文字幕| 亚洲国产中文在线| 在线观看一区欧美| 在线观看亚洲一区| 亚洲bt欧美bt精品777| 狠狠精品干练久久久无码中文字幕| 色美美综合视频| 欧美绝顶高潮抽搐喷水合集| 四虎免费在线观看视频| 欧美综合亚洲图片综合区| 久久精品亚洲成在人线av网址| 午夜啪啪免费视频| 精品视频一区二区不卡| 竹菊久久久久久久| 日本在线观看a| 日韩精品久久久久久福利| 国产一区久久| 最猛黑人系列在线播放| 欧美日韩成人在线播放| 国产一区二区h| 七七久久电影网| 国产精选一区二区| 无码av中文一区二区三区桃花岛| www国产精品| 日本wwww视频| 中日韩午夜理伦电影免费| 欧美96一区二区免费视频| 在线国产情侣| 2019国产精品视频| 亚洲图片欧美色图| 性欧美xxxx免费岛国不卡电影| www.国产区| 成年无码av片在线| 99久久免费国产| 神马久久资源| 中国人体摄影一区二区三区| 制服.丝袜.亚洲.中文.综合| 中文字幕免费一区二区| 在线天堂视频| 成人春色激情网| 艳妇臀荡乳欲伦亚洲一区| 精品资源在线| 国产成人手机视频| 久久久久久久久91| 国产亚洲一区字幕| 哺乳挤奶一区二区三区免费看| 国产欧美高清在线| 欧美噜噜久久久xxx| 久久久久88色偷偷免费| 国产精品中文| www欧美激情| 欧美制服第一页| 亚洲精品国产a久久久久久| 狠狠操综合网| 少妇激情av一区二区| 国产精品国产精品国产专区蜜臀ah | 青青草视频免费在线观看| 一区二区高清免费观看影视大全| 成人污版视频| 亚洲爆乳无码专区| 久久人人看视频| 亚洲三级在线播放| 视频一区欧美| 亚洲mv在线| 99www免费人成精品| 欧美日本一区二区在线观看| 日韩成人精品在线| 99re66热这里只有精品4| av免费观看网| 欧美在线视频网| 色综合色狠狠综合色| 性欧美长视频| 精品成人av| 羞羞的视频网站| 91香蕉国产在线观看| 正在播放一区二区| 成人av电影在线网| 欧美美女啪啪| 欧美少妇另类| 亚洲人久久久| 久久精品99国产精品酒店日本| 国产精品污www在线观看| 久久看人人摘| 黄色在线看片| 色综合av综合无码综合网站| 国产精品高清在线观看| 欧美绝品在线观看成人午夜影视| 国产一区二区三区在线观看免费视频 | 久久香蕉综合色| 亚洲精品一区二区久| 中文字幕av一区 二区| 欧美a级片网站| 婷婷综合六月| fc2人成共享视频在线观看| 日日噜噜噜噜夜夜爽亚洲精品| 久久久国产视频| 欧美性xxxx| 国产+成+人+亚洲欧洲自线| av中文一区| 日本在线啊啊| 中文字幕福利片| 一区二区三区在线视频111| 97视频在线观看成人| 91麻豆精品国产无毒不卡在线观看| av成人免费在线| 欧美在线高清| 国产91精品在线| 性色视频在线| 国产a级片网站| 亚洲一区二区三| 日韩在线观看免费全| 日本韩国精品在线| 91亚洲男人天堂| 99在线|亚洲一区二区| 88久久精品| 五月花成人网| 久草福利资源在线视频| 五月天综合婷婷| 91精品久久久久久久久不口人| 亚洲一级黄色片| 日本丶国产丶欧美色综合| 久久亚洲精品国产精品紫薇| 最新日韩欧美| 日韩一级电影| 欧美大片免费| 色影院视频在线| av天天在线| 久久99久久久久久| 99视频在线免费观看| 欧美激情手机在线视频 | 欧美人与动牲交xxxxbbbb| 成人久久一区二区| 欧美精品在线免费播放| 日韩精品影音先锋| 性久久久久久久| 91视频www| 男人的天堂久久精品| 91精品秘密在线观看| 波多野结衣在线一区二区 | 国产无遮挡一区二区三区毛片日本| 在线亚洲观看| 九九精品久久| 玖玖精品在线| 羞羞的视频在线观看| 久草在现在线| 国产高潮av| 免费一级特黄录像| 国产精品成人久久电影| 亚洲春色在线视频| 国产精品国产三级国产专区53| 国产suv精品一区二区三区88区| 色偷偷888欧美精品久久久 | av天堂永久资源网| 三区精品视频| 国产精品免费视频一区二区| 国产精品久久久久久av福利| 欧美高清电影在线看| 色噜噜国产精品视频一区二区| 91免费人成网站在线观看18| 亚洲黄页一区| 999成人精品视频线3| 一区二区美女|