国产超碰人人做人人爽av动图,99久久免费只有精品国产,青青视频精品观看视频,亚洲成a人片在线观看无码下载 ,天天做av天天爱天天爽,国产亚洲精品一区二三区,国产高清视频色拍,亚洲乱理伦片在线观看中字
MENU 服務 案例
網站建設-網站設計-北京網站建設-高端網站制作公司-尚品中國
我們通過擁抱變化創造
360°的品牌價值__
簡體
簡體中文 English

尚品與山東真諾智能設備有限公司簽署網站改版合作協議

類型:尚品動態 了解更多

解決IE瀏覽器不兼容H5標簽的辦法有哪些?

來源:尚品中國| 類型:網站百科 |時間:2018-08-22

HTML5有兩大特點:首先,強化了Web網頁的表現性能。其次,追加了本地數據庫等Web應用的功能。

廣義論及HTML5時,實際指的是包括HTML、CSS和JavaScript在內的一套技術組合。它希望能夠減少瀏覽器對于需要插件的豐富性網絡應用服 務(plug-in-based rich internet application,RIA),如Adobe Flash、Microsoft Silverlight與Oracle JavaFX的需求,并且提供更多能有效增強網絡應用的標準集。

目前HTML5已向開發人員提供了很多新的標簽,如section,nav,article,header和footer等。這些標簽語義化程度高,會被經常使用,但在IE6,IE7,IE8和Firefox 2等老式瀏覽器中卻不能識別和正常使用。

一、HTML5標簽在瀏覽器展示存在的問題

對于現階段來說,使用HTML5標簽可能遇到的最大問題就是如何在不支持新標簽的瀏覽器中做恰當的處理。當我們在頁面中使用HTML5元素時,可能會得到三種不同的結果。

結果1:標簽被當作錯誤處理并被忽略。那么DOM構建的時候,就會當作這個標簽不存在。

結果2:標簽會被當作錯誤處理,并在DOM構建的時候依然會按照預期的代碼進行創建,并且HTML標簽會被構造成行內元素(也就是說雖然不能識別,但是代碼里section標簽依然會在dom中創建一個對應section節點,但是屬于行內元素)。

結果3:標簽被識別為HTML5標簽,然后用DOM節點對其進行替換。DOM在構建的時候和預想的一致,并且合適的樣式會應用到標簽上(大部分情況下是塊級元素)。

有一個具體的例子,大家思考一下下面的代碼:

title

text

很多瀏覽器(比如Firefox 3.6和Safari4)解析的時候都會將div作為最外層的元素,然后div里面是一個識別不了的元素(section),它會在DOM中創建,并被作 為一個行內元素存在。h1和p元素都是作為section元素的子節點。因為section在DOM中真實存在,所以也可以修改其樣式。這種情況對應結果 2。

IE9之前的版本會認為section標簽是一個錯誤,并直接將其忽略,那么h1和p標簽會被解析,然后成為div標簽的子節點。也會被認為是一個錯誤并直接跳過。在這些瀏覽器中實際有效的代碼是這樣的:

title
text

那么,舊版本的IE瀏覽器除了生成的DOM結構和其他瀏覽器不一樣,其對不可識別標簽的容錯能力還是很棒的。因為section節點沒有在DOM樹中構建,所以也就不能給其增加樣式。這種情況對應結果1。

當然,支持HTML5的瀏覽器比如IE9,Firefox4+,Safari5+會創建正確的DOM結構,然后這些標簽會默認附帶HTML5規范中定義的默認樣式。

那么,我們所面臨的最大問題就是同樣的代碼在不同的瀏覽器中形成了不同的DOM結構,并且含有不同的樣式。

二、如何解決HTML5標簽不兼容

或許會有很多人在質疑:為什么老式的瀏覽器不能識別這些標簽?其實錯不在瀏覽器,因為在那個時代根本不存在這種標簽,所以不能正確識別出來,而這種不尋常 的標簽識別令DOM結構變得異常。對此,人們想出了很多在現階段頁面中使用HTML5元素的解決方案。每一個解決方案為了做到兼容都會遇到一些特定的問題。跟大家分享一下:

1、實現標簽被識別

我曾做個一個測試(以IE8為例),是一個文章標題和藍色字的文章內容,其中文章內容用了article標簽。代碼如下:

文章標題

這是文章內容,應該是一段藍色的文字。在老式瀏覽器中,如果不做hack將顯示異常。

在IE8瀏覽器中,顯示如下:IE8不能識別article標簽, 定義在標簽上的CSS樣式沒有起作用。 在IE8中,被解釋成命名為和

兩個空的標簽元素,與文章內容并列為兄弟節點,如下圖所示:

既然因為不能識別標簽而不能使用,那我的解決辦法就是讓標簽被識別出來。所幸,簡單地通過 document.createElement(tagName)即可以讓瀏覽器識別標簽和CSS引擎知道該標簽的存在。假設我們上面的例子 的

區域加上如下代碼:

IE8瀏覽器中的DOM解釋就會變成下圖所示:自然,文字也顯示成正常的藍色。如下圖所示:

2、JavaScript解決方案

JavaScript解決方案目的是解決在舊版本的IE中樣式應用的問題。老版本的IE不會識別不明元素已經是一個耳熟能詳的特性,而如果這些元素已經通 過document.createElement創建,那么瀏覽器就可以識別這些標簽,并可以將其在DOM樹中構建,然后允許開發者對其應用樣式。

這個方法可以確保HTML5標簽能在舊版本IE中對應創建DOM節點,然后可以對其應用樣式。這個方法將HTML5塊級元素設置成display:block,從而可以在各個瀏覽器中做到兼容。

今天測試把網頁改成了HTML5的,調試了一下,在FF和Opera中都顯示正常了,到了IE6上卻變得面目全非了。對此我還特意去找了一些使用JS代碼支持HTML5標簽元素的方法,在此也跟大家分享一下:

(1)使用html5shiv

查看了一下,發現了html5shiv能解決這個問題,可以把HTML5的新元素轉換成IE6認識的內容。只需要在你的head中調用這段代碼就行:

當然你也可以直接把這個文件下載到自己的網站上。但這個文件必須在head標簽中調用,因為IE必須在元素解析這前知道這些元素,才能啟作用!

但還要提醒你一下:

還要在你的CSS文件中加上以下代碼,不然有可能會出現些莫名其妙的問題。

header,nav,article,section,aside,footer{display:block;}

另外excanvas.js是Google為IE6支持canvas元素寫的腳本,以后我會跟大家再細說這樣的例子,感興趣的朋友可以去試試。

(2)使用Kill IE6

除此之外你還可以使用KILL IE6一族,前提是你的瀏覽器允許執行JS文件。方法很簡單,在你的網站的之前加上以下代碼就可以了:

上面寫的前綴html5是純粹是用于這個例子而且也不是官方支持的,你甚至可以用"foo"作為前綴,結果還是一樣。有了前綴之后,IE會識別新的元素,從而可以應用樣式。在其他瀏覽器中一樣有效,那么最后,你就成功地在各個瀏覽器中構建了一樣的元素和一樣的樣式。

這個方法的缺陷很明顯:你必須在HTML文檔中使用XML格式的命名空間,同樣,你也需要在css中這么做:

html5\:section {

display: block;

}

點評:這并不是我期望Web開發者編寫代碼的方式。雖然這是一個非常杰出的解決方案,但是這讓應用變得不自然。我不希望看到文件中充滿了帶命名空間的元素。

4、Bulletproof技術(防彈衣技術)

說實話,我是第一次接觸到這個技術,建議在所有新的HTML5塊級元素中增加一個內部的div元素,然后包含一個CSS class,用這個元素來替代HTML元素(類似在里面穿了一件防彈衣),例如:

在應用樣式的時候,Tantek推薦直接給div增加樣式,而不是給新元素增加樣式

推薦使用:

.section {

color: blue;

}

而不是:

section {

color: blue;

}

這個方案的原理是用簡單的方式將原來的樣式應用方式轉移到一個代表了HTML5標簽的元素上。由于我一般情況下不會將樣式通過標簽名的方式應用到元素上,所以也并不完全支持這個建議。

這個方案的缺陷是不同的瀏覽器構建了不同的DOM結構,那么你必須在編寫JavaScript和CSS的時候格外小心。獲取子節點或者父節點的時候,不同的瀏覽器返回的結果可能會不一樣。特別是在下面的代碼中:

5、反向的bulletproof技術

還有一些方法,比如嘗試使用和Tanteck方案相反的技術,也就是把HTML5元素放在div元素內部,例如:這個方案唯一的不同是HTML5元素的位置,其他都一樣。喜歡這個技術的支持者認為他的一致性很好(適用于所有的元素,包括)。但是DOM結構的不同讓這個方案意義變得不大。他的主要優勢是技術上的一致性。

6、關于X-UA-Compatible的使用

目前絕大多數網站都用以下代碼來作為IE8的兼容方法。

雖然微軟將IE向標準邁進了一大步,而事實上IE8還存在一系列渲染的奇怪現象是不爭的事實。

在X-UA-Compatible中可用的方法有:

其中最后一行是永遠以最新的IE版本模式來顯示網頁的。

另外加上

而使用,Emulate模式后則更重視。所以目前來說還是以使用

為首選。

7、通過修改HTML部分來實現

我的主要目標是確保我只需要修改HTML部分。這就意味著不需要修改CSS和JavaScript。為什么會有這樣的需求?需要修改的Web應用視圖越 多,你越有可能制造bug。將改變限制到一個視圖也就限制了bug的出現,即使出現了bug,也可以減少你查找錯誤的范圍。如果一個視圖破相了,我可以知 道這是因為我增加了一個section元素,而不是考慮是不是CSS文件修改來帶的影響。

在研究了所有這些解決方案,并進行一些嘗試和設計之后,我回到了Tantek的方案。這是唯一一個只需要修改HTML而不用動CSS和HTML的方案。現在,我在他的方案基礎上做了一些改進,來達到我想要的結果。

首先,我不會給那些代表HTML5元素的class增加樣式(所以我不會使用.section這樣的選擇器)。我保留了div元素,然后再增加一個帶語義的class來應用樣式,并作為進行JavaScript操作的鉤子。

例如,這樣的代碼:

經過改進后:

這樣的修改完成后,我依然使用.content作為樣式和腳本的入口。這也意味著我不需要修改CSS和JavaScript。

然后,為了避免hgroup標簽這樣的情況,我選擇不使用這個標簽。我在我已有的所有頁面中沒有找到任何一個使用了這個標簽的。由于hgroup標簽只能 包含標題元素,如果你確實想要使用這個標簽,那么使用hrgoup來包含本身是非常安全的(假設它沒有包含其他的塊級元素)。

我在花了很多時間來測試比較bulletproof和反向的bulletproof哪個更好一些。我做選擇時最主要的決定因素就是反向的 bulletproof需要我去增加CSS代碼。在那些為HTML5標簽創建了DOM節點但是沒有應用默認樣式的元素來說,div元素里包含了一個 HTML5塊級元素在很多情況下都會攪亂我的布局,因為創建的DOM節點是行內元素。我不得不明確增加CSS規則來讓這個節點變成塊級元素從而可以正常布局,這也就違反了我不修改CSS文件的初衷。

三、點評:

在我的研究中,我使用了多個頁面,然后在這些頁面上使用修改過后的bulletproof技術。我分別在簡單和復雜的布局中,含有和不含有 JavaScript交互進行測試。在每一個例子中,我只需要修改HTML就可以讓頁面表現正確(不修改JavaScript和CSS)。那么,子節點和 父節點的問題怎么辦?有趣的事情是我在測試中并沒有遇到這樣的問題。

理由很簡單,因為我對代碼苛刻的態度。我認真地做了第二遍檢查:

(1)標簽名和ID不會用于應用樣式(只是用class)。

(2)盡量選擇常用的CSS選擇器并且盡量減少選擇器的使用。

(3)JavaScript代碼不依賴于特定的DOM結構。

(4)標簽名不用于操作DOM。

一個有趣的事情是使用了HTML5元素作為容器。而這些新的元素僅僅是作為功能性模塊的邊界。你應該花費你的大部分時間為內部的元素編寫樣式 和腳本而不是處理各個模塊間的樣式和腳本。由于JavaScript和CSS標簽都應用在容器的內部,所以一切都顯得很順利。我想這才是一個真正的代碼質量高的網站。

信息來源尚品中國:北京網站建設

來源聲明:本文章系尚品中國編輯原創或采編整理,如需轉載請注明來自尚品中國。以上內容部分(包含圖片、文字)來源于網絡,如有侵權,請及時與本站聯系(010-60259772)。
TAG標簽:

如果您的網站可以增加轉化次數并提高客戶滿意度,該怎么辦?

預約專業咨詢顧問溝通!

*尚品專業顧問將盡快與您聯系

免責聲明

非常感謝您訪問我們的網站。在您使用本網站之前,請您仔細閱讀本聲明的所有條款。

1、本站部分內容來源自網絡,涉及到的部分文章和圖片版權屬于原作者,本站轉載僅供大家學習和交流,切勿用于任何商業活動。

2、本站不承擔用戶因使用這些資源對自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問題參見國家有關法律法規,當本聲明與國家法律法規沖突時,以國家法律法規為準。

4、如果侵害了您的合法權益,請您及時與我們,我們會在第一時間刪除相關內容!

聯系方式:010-60259772
電子郵件:394588593@qq.com

免責聲明

非常感謝您訪問我們的網站。在您使用本網站之前,請您仔細閱讀本聲明的所有條款。

1、本站部分內容來源自網絡,涉及到的部分文章和圖片版權屬于原作者,本站轉載僅供大家學習和交流,切勿用于任何商業活動。

2、本站不承擔用戶因使用這些資源對自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問題參見國家有關法律法規,當本聲明與國家法律法規沖突時,以國家法律法規為準。

4、如果侵害了您的合法權益,請您及時與我們,我們會在第一時間刪除相關內容!

聯系方式:010-60259772
電子郵件:394588593@qq.com

主站蜘蛛池模板: 亚洲国产精品无码中文字 亚洲国产成人综合一区二区三区 亚洲欧洲日产国码综合在线 无码国产精品一区二区vr 四虎成人欧美精品在永久在线 国产aⅴ爽av久久久久久 牛牛视频一区二区三区 国产精品国产三级国产剧情 国产真人无码作爱免费视频 久久伊人五月丁香狠狠色 国产精品第一二三区久久蜜芽 国产精品尹人在线观看 夜夜爽8888天天躁夜夜躁狠狠 精品免费人成视频网 无码av无码天堂资源网影音先锋 精品系列无码一区二区三区 51久久国产露脸精品国产 亚洲国产一区二区三区亚瑟 无码一区二区免费波多野播放搜索 国产成人无码av一区二区在线观看 国产网曝在线观看视频 免费无码作爱视频 亚洲第一无码精品一区 蜜乳av久久久久久久久久久 久久久久人妻一区精品 美女内射毛片在线看免费人动物 国产麻豆亚洲精品一区二区 久久精品国产99久久无毒不卡 无码草草草在线观看 久久超碰97人人做人人爱 播五月开心婷婷欧美综合| 男男19禁啪啪无遮挡免费| 久久综合婷婷成人网站| 久久国产超碰女女av| 风韵饥渴少妇在线观看| 久久不见久久见免费影院视频观看 | 好大好猛好爽好深视频免费| 丝袜国产一区av在线观看| 国产亚洲精品久久精品6| 蜜臀精品国产高清在线观看| 人人澡人人澡人人看添|