少妇被粗黑进进出出在线观看_日日摸夜夜爽无码_免费久久_日韩免费视频_热播短剧玫瑰冠冕免费观看_japanese精品少妇

IE瀏覽器不兼容H5標(biāo)簽的解決方法有哪些?
  • 更新時(shí)間:2025-06-04 14:45:21
  • 網(wǎng)站建設(shè)
  • 發(fā)布時(shí)間:2年前
  • 376

HTML5有两大特点:一是加强了网页的性能。其次,增加了本地数据库等Web应用的功能。

广义上讲HTML5,其实是指包括HTML、CSS、JavaScript在内的一组技术组合。它希望减少浏览器对Adobe Flash、Microsoft Silverlight 和Oracle JavaFX 等基于插件的富互联网应用程序(RIA) 的需求,并提供更多能够有效增强网络应用程序的标准。放。

目前,HTML5 已经为开发者提供了许多新的标签,例如section、nav、article、header 和footer。这些标签语义化程度高,会被频繁使用,但在IE6、IE7、IE8、Firefox2等老浏览器中无法正常识别和使用。

一、HTML5标签在浏览器展示存在的问题

对于现阶段来说,使用HTML5标签可能遇到的最大问题是如何在不支持新标签的浏览器中正确处理它们。当我们在页面中使用HTML5 元素时,我们可能会得到三种不同的结果。

结果1:标记被视为错误并被忽略。那么在构建DOM的时候,会被当成标签不存在一样对待。

结果2:标签会被当做错误处理,仍然会按照构建DOM时预期的代码创建,HTML标签会被构造成内联元素(即虽然无法识别,但代码中的section 标签仍然会在dom 中创建对应的section 节点,但它是一个内联元素)。

结果3:标签被识别为HTML5 标签,然后替换为DOM 节点。 DOM 按预期构造,并将适当的样式应用于标签(在大多数情况下为块级元素)。

作为具体示例,请考虑以下代码:

title

文本

很多浏览器(比如Firefox 3.6和Safari4)在解析的时候会把div作为最外层的元素,然后在div里面是一个无法识别的元素(section),它会在DOM中被创建,作为内联元素存在。 h1 和p 元素都是section 元素的子节点。因为部分实际上存在于DOM 中,所以它们的样式也可以修改。这种情况对应结果2。

IE9之前的版本会认为section标签错误,直接忽略,然后解析h1和p标签,成为div标签的子节点。也被认为是错误并被跳过。在这些浏览器中实际工作的代码是这样的:

标题

文本

嗯,除了老版本的IE浏览器生成的DOM结构与其他浏览器不同之外,它对无法识别的标签的容错能力还是很好的。因为节节点没有在DOM 树中构建,所以不能设置样式。这种情况对应结果1。

当然,IE9、Firefox4+、Safari5+等支持HTML5的浏览器会创建正确的DOM结构,然后这些标签就会默认为HTML5规范中定义的默认样式。

那么,我们面临的最大问题就是相同的代码在不同的浏览器中形成不同的DOM结构,包含不同的样式。

二、如何解决HTML5标签不兼容

很多人可能会质疑:为什么旧的浏览器不能识别这些标签呢?其实错不在浏览器,因为当时不存在这样的标签,所以无法正确识别,而这种不正常的标签识别导致DOM结构异常。对此,人们想出了很多解决方案,在当前页面使用HTML5元素。为了兼容,每个解决方案都会遇到一些特定的问题。分享给大家:

1、实现标签被识别

我曾经做过一个测试(以IE8为例),是一篇文章标题和文章内容用蓝色文字,文章内容使用了article标签。代码如下:

文章标题

这是文章的内容,应该是一段蓝色的文字。在较旧的浏览器中,异常将在没有黑客攻击的情况下显示。

在IE8浏览器中显示如下:IE8无法识别文章标签,标签上定义的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标签都应用在容器的内部,所以一切都显得很顺利。我想这才是一个真正的代码质量高的网站。

信息来源尚品中国:北京网站建设

我們專注高端建站,小程序開(kāi)發(fā)、軟件系統(tǒng)定制開(kāi)發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開(kāi)發(fā)、各類API接口對(duì)接開(kāi)發(fā)等。十余年開(kāi)發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿意為止,多一次對(duì)比,一定讓您多一份收獲!

本文章出于推來(lái)客官網(wǎng),轉(zhuǎn)載請(qǐng)表明原文地址:https://www.tlkjt.com/web/11723.html
推薦文章

在線客服

掃碼聯(lián)系客服

3985758

回到頂部

主站蜘蛛池模板: 色视频线观看在线网站_久久精品蜜芽亚洲国产AV_国产日韩a_精品国产国语对白久久免费_欧美韩国国产_久久精品中文字幕免费 | 亚洲人成绝网站色www_国产福利在线视频_三年片在线观看免费大全爱奇艺_小明精品国产一区二区三区_一区二区亚洲精品_国产欧美日韩精品丝袜高跟鞋 | 亚洲精品无吗_一本色道久久综合一_中文字幕精品一区二区三区在线_中文字幕亚洲天堂_无码专区—va亚洲v天堂麻豆_偷拍视频免费看 | 99亚洲国产精品_丰满熟女大屁股水多多_亚洲国语_日本五十路一区二区三区在线观看_婷婷日日夜夜_久久国产精品免费看 | 国产精品自在在线午夜出白浆_亚洲午夜影视_精品久久影院_欧洲精品免费一区二区三区_三级欧美_成品网站w灬源码三叶草 | 少妇无码av无码专区在线观看_很嫩很紧直喷白浆在线_亚洲日本va中文字幕久久_国产精品内射视频免费_日日摸日日碰夜夜爽无_欧美三日本三级少妇三2023 日韩女同互慰一区二区_八戒午夜福利啪啪影视_天天搞av_在线中文字幕一区二区精品区_亚洲一区成人在线_69热视频 | 女人毛片_国产人妖XXXX做受视频_久久成年网_国产精品资源_精品国产免费观看_麻豆亚洲AV熟女国产一区二 | 国产精品成人无码久久久_久久国产精品久久久久久电车_剑来动漫高清视频在线观看_污污网站免费看_亚洲午夜天堂精品福利天堂_成人国产精品久久久 | 孕妇怀孕高潮潮喷视频孕妇_亚洲精品国产99_97色伦色_免费看黄色影片_国产一区二区三区91_欧美日韩性生活片 | 熟妇高潮精品一区二区三区_色妞视频男女视频_欧美人与动性XXXXX杂性_久久99一区_亚洲男男自慰网站gay_免费看黄色片网站 | 欧美人与性口牲恔配视1_男生和女生插插视频_一区二区三区四区五区视频_美女视频又黄又免费_免费少妇a级毛片人成网_2021国产麻豆剧果冻传媒影视 | 护士奶头又白又大又好摸视频_特级毛片a级毛片免费看r_狠狠躁夜夜躁人人爽天天不_亚洲特黄a级毛片在线播放_欧美a级黄色_顶级欧美色妇XXXXX | 亚洲国产精品第一区二区_人妖一区_a级黄色在线观看_视频在线_一级黄色香蕉视频_欧美亚洲一区二区在线观看 | 欧洲精品在线视频_国产亚洲精品成人a_亚洲熟女一区二区三区_久草青娱乐_116少妇做爰毛片_日日干日日操 | 午夜在线成人_人人干日日干_9色视频在线_亚洲黄色精品视频_亚洲欧美综合自拍_国产91在线观看网站 | 亚洲AV午夜成人影院老师机影院_国产亚洲精品久久7788_亚洲一级一级一级_色视频观看_妺妺窝人体色聚窝窝WWW_久久久久久久久四区三区 | 伊人久久爱_a黄视频_久热久热免费视频中文字幕777_一级毛片视频_免费无码a片一区二区三区_性xx色xx综合久久久xx | 疾速追杀4在线观看完整免费高清_国产精品拍国产拍拍偷剧情_超碰911_日本肉体xxxx裸体137大胆_欧美牲交A欧美牲交AⅤ免费真_看了又看第二部免费观看 | 欧美一级一区二区_色视频无码专区在线观看_日韩城人在线_国产欧美一区二区精品久久久_国模亚洲色图_国产vs久久 | 亚洲国产精品VA在线观看黑人_亚洲国产欧美在线人成aaaa20_国产精品久久久久一区二区_国产无套码AⅤ在线观看在线播放_中文字幕久久久人伦_人妻少妇AV无码一区二区 | 欧美一区2区三区4区公司_玖玖综合网_鲁鲁网亚洲站内射污_一级黄色av片_亚洲熟妇丰满多毛XXXX_中文无码一区二区三区在线观看 | 最新版天堂中文在线官网_久久91精品国产91久久yfo_日本视频免费高清一本18_亚洲中文字幕精品级在线_色七七亚洲_18禁超污无遮挡无码免费应用 | 91人人_色视频软件_久久久国产精品一区二区中文_chineSe熟女老女人HD_国产精品久久香蕉_亚洲精品.com | 国内精品无码一区二区三区_全球中文成人在线_免费av大全_91精品国产成人_91嫩草在线视频_偷拍区另类欧美激情日韩91 欧美人与物VIDEOS_97天天操_国产超爽人人爽人人做人人爽_毛片高清_深夜国产_中文字幕av一区二区三区四区 | 亚洲国产精品免费观看_一级黄色片免费播放_福利视频在线免费观看_99re66在线观看精品热_国产精品无码人妻系列AV_欧美国产福利 | 日日夜夜狠狠操_欧美视频免费播放_涩涩视频免费_网站大全免费网站_久久亚洲愉拍国产自367391_亚洲爆乳无码一区二区三区 | 红杏亚洲影院一区二区三区_亚洲爆乳精品无码一区二区三区_又爽又黄无遮挡高潮视频网站_蜜臀久久99精品久久久久免费_久久丁香五月丁中文精品_自拍视频在线观看 | 国产一区二区二区_成人6969www免费视频_久热草精品_米奇影音777_日本www高清_日本在线视 | 久久综合亚洲欧美成人_超碰人人干人人_夜夜爱av_国产成人8x视频一区二区_国产精品亚洲国产三区_操操插插 | 奇米影视狠888_亚洲国产日韩欧美高清片_国内精品久久久久久中文字幕_亚洲成av人片在线观看无_99精品视频网站_国产制服丝袜亚洲日本在线 | 欧美性猛交免费看_日韩免费小视频_最新国产亚洲亚洲精品a_三级影院在线观看_免费一级男女裸片_亚洲综合久久一区二区 | 谍战剧《惊弦》免费观看高清_国产呦萝小初合集密码_看毛片软件_国产麻豆精品一区_97精品免费视频_成人不卡 | 亚洲欧美成人久久一区_久久激情五月_亚洲激情一区二区三区_国产精品美女久久久浪潮av_老司机午夜激情_国产成年女人特黄特色毛片免 | av肉感前十名_熟妇人妻videos_91精品国产91_欧美美女穴_欧美激情在线观看视频_亚洲另类激情专区小说 | 国产正在播放_久操导航_欧美疯狂做受xxxx高潮_国产日本在线播放va_国产免费AV片在线无码免费看_澳门成人网 | 日韩亚洲_亚洲日韩欧美制服二区DVD_香蕉网色_国产清纯美女爆白浆视频_草草视频免费观看_成年人视频免费在线看 | 亚洲精品国产亚洲_欧美性生活一区二区三区_欧美亚洲日产综合新一区_欧美中文字幕一区二区_国产精品A1A2久久久_av看片在线观看 | 欧美日韩1区2区3区_欧美精品一区二区三区涩爱蜜_99爱在线视频这里只有精品_特级做a爱片免费69_成人内射国产免费观看_另类三区 | 在线亚洲一区观看_99热精品久久_亚洲国产成人91porn_欧美AAAAAA级午夜福利视频_国产精品视频免费一区二区三区_米奇777四色精品人人爽 | caopom在线视频免费观看_av免费播放_成年免费A级毛片免费看无码_一卡2卡3卡四卡精品免费网站_草莓香蕉樱桃黄瓜视频_91黄色看片 | 国产不卡一区_国产素人av在线_999国产精品亚洲77777_欧美在线不卡_羞羞影院男女爽爽影院尤物_国模大胆一区二区三区 |