時(shí)不時(shí)碰到客戶的瀏覽器為IE7,IE8,甚至IE6的,他們不能升級(jí)瀏覽器,因?yàn)樯?jí)后,機(jī)器中其它的重要系統(tǒng)無法訪問。而新系統(tǒng)的前端又需要瀏覽器的支持,比如H5,SVG等等,換框架結(jié)構(gòu),成本無疑是巨大的,而且風(fēng)險(xiǎn)不可控。針對(duì)此種情況,安裝Google Frame是相對(duì)非常完美的解決方案,不要求升級(jí)瀏覽器,只安裝一個(gè)插件,且對(duì)原系統(tǒng)無任何干擾,新系統(tǒng)也可根據(jù)情況對(duì)是否使用Google Frame插件進(jìn)行切換。
X-UA-Compatible是自從IE8新加的一個(gè)設(shè)置,對(duì)于IE8以下的瀏覽器是不識(shí)別的。 通過在meta中設(shè)置X-UA-Compatible的值,可以指定網(wǎng)頁(yè)的兼容性模式設(shè)置。
在網(wǎng)頁(yè)中指定的模式優(yōu)先權(quán)高于服務(wù)器中(通過HTTP Header)所指定的模式。 兼容性模式設(shè)置優(yōu)先級(jí):
meta tag > http header
meta tag > http header |
常用的例子:
<meta <meta http-equiv="X-UA-Compatible" content="IE=Edge“>則是不使用Chrome引擎
個(gè)人覺得本文很有意義,對(duì)于ie一直存在的兼容問題給予一個(gè)解決辦法,可以考慮在工作中使用。
以下是正文,為方便oser閱讀,原文抄錄如下,有關(guān)具體情況請(qǐng)參考原作者。
Google Chrome Frame,谷歌瀏覽器內(nèi)嵌框架(簡(jiǎn)稱GCF),是一個(gè)使你機(jī)器上的Internet Explorer系列瀏覽器鳥槍換炮,用上webkit內(nèi)核的Chrome引擎,但I(xiàn)E瀏覽器外觀上還是IE的外觀的免費(fèi)插件。
不相信嗎?使用用IE瀏覽器打開GCF安裝頁(yè),按照提示安裝后,重啟IE,再打開gcf:about:version,現(xiàn)在你會(huì)看到chrome瀏覽器的內(nèi)核信息,說明Chrome內(nèi)核已經(jīng)植根于你的IE瀏覽器上了。
但并非你的IE訪問任意網(wǎng)頁(yè)就會(huì)自動(dòng)的使用Chrome內(nèi)核來解析,需要兩種方式:一是在網(wǎng)址前面加上”gcf:“,比如gcf:http://gmail.com來訪問;二是在網(wǎng)頁(yè)的meta信息中加入一句:
<meta http-equiv="X-UA-Compatible" content="chrome=1">
這里chrome=1代表所有版本的IE瀏覽器都使用Chrome內(nèi)核解析網(wǎng)頁(yè),chrome屬性還有其他的值,比如chrome=IE7,代表IE7或以下版本的瀏覽器才使用chrome內(nèi)核,chrome=IE6和chrome=IE8等依此類推。
作為一個(gè)網(wǎng)頁(yè)開發(fā)者,你會(huì)不會(huì)想到有了這個(gè)插件,以后就可以大膽使用各種CSS3樣式,只要Chrome下顯示正確,IE下也能顯示正確了!沒錯(cuò)!但前提是用戶會(huì)安裝這個(gè)插件嗎?如何提供一個(gè)友好的引導(dǎo)安裝界面呢,Google幫我們解決了這個(gè)問題。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script> <div id="prompt"></div> <script> window.attachEvent("onload", function() { CFInstall.check({ mode: "overlay", node: "prompt" }); }); </script>
在body標(biāo)簽中加入這段js代碼,可以使得IE打開該網(wǎng)頁(yè)時(shí)出現(xiàn)友好的GCF安裝引導(dǎo)iframe框。這段代碼不需要存在于
<!--[if IE]>...<![endif]-->
之中,js中已經(jīng)做了瀏覽器的判斷。
CFInstall.min.js是官方提供的文件,CFInstall.check()方法有許多可選項(xiàng),其中包括:
mode: “inline” 默認(rèn)值,GCF安裝引導(dǎo)的iframe結(jié)構(gòu)將存在于node選項(xiàng)指定id的元素中最前面位置,屬于文檔流的一部分
mode: “overlay” 該iframe以彈出層顯示,彈出層將會(huì)在頁(yè)面可視范圍內(nèi)居中
mode: “popup” 該iframe以新開窗口/選項(xiàng)卡顯示,類似于target:_blank的效果
node: “” 指定iframe結(jié)構(gòu)的dom結(jié)點(diǎn)位置,在mode:”inline”下有效
url: “” 點(diǎn)擊安裝按鈕跳轉(zhuǎn)到的鏈接地址,默認(rèn)為GCF安裝文件地址
destination: “” GCF安裝完成后頁(yè)面跳轉(zhuǎn)到的鏈接地址
className: “” 在mode:”inline”下對(duì)iframe指定新的class名,美化iframe界面時(shí)很有用,默認(rèn)的class為chromeFrameInstallDefaultStyle
OK,了解了這么多,相信你已經(jīng)躍躍欲試了,我在我的博客上開啟了chrome=IE8并加上了GCF的友好安裝指引,歡迎訪問比較IE下和Chrome下的渲染差異。
更多GCF的參考資料:
官方開發(fā)者文檔:http://www.chromium.org/developers/how-tos/chrome-frame-getting-started
chrome frame設(shè)置
安裝完chrome frame后,并非IE訪問任意網(wǎng)頁(yè)就會(huì)自動(dòng)的使用Chrome內(nèi)核來解析,需要兩種方式:一是在網(wǎng)址前面加上”gcf:“,比如gcf:http://gmail.com來訪問;二是在網(wǎng)頁(yè)的meta信息中加入一句:
這里chrome=1代表所有版本的IE瀏覽器都使用Chrome內(nèi)核解析網(wǎng)頁(yè),chrome屬性還有其他的值,比如chrome=IE7,代表IE7或以下版本的瀏覽器才使用chrome內(nèi)核,
2.1.開始–運(yùn)行–輸入regedit打開注冊(cè)表,依次打開HKEY_CURRENT_USER\Software\Google\下新建一個(gè)(key)項(xiàng),名為ChromeFrame.
2.2.使用“gcf:“前綴時(shí)調(diào)用chrome frame瀏覽設(shè)置;需在注冊(cè)表中“HKEY_CURRENT_USER\Software\Google\ChromeFrame”中新建一個(gè)DWORD值取名為”AllowUnsafeURLs“,并將其值設(shè)為”1“。這時(shí),只要在要瀏覽的網(wǎng)頁(yè)的地址前加上”gcf:“,IE就會(huì)自動(dòng)使用ChromeFrame渲染該網(wǎng)頁(yè),例如”gcf:http://www.google.com.hk“IE便會(huì)自動(dòng)使用ChromeFrame渲染谷歌首頁(yè)”http://www.google.com.hk“
2.3.在該項(xiàng)下新建一個(gè)DWORD值,名叫IsDefaultRenderer.這個(gè)IsDefaultRenderer的值如果設(shè)置為0是使用IE內(nèi)核渲染,設(shè)置為1是使用Google Chrome Frame渲染所打開的網(wǎng)頁(yè).我們這里設(shè)置為1.
2.4 chrome訪問網(wǎng)址列表;注冊(cè)表中“HKEY_CURRENT_USER\Software\Google\ChromeFrame”新建一個(gè)子項(xiàng)(KEY)取名為”RenderInGcfUrls;其中添加的多個(gè)字符串值默認(rèn)使用chrome訪問,可用通配符;例如,上圖的”*google“可以理解為所有地址中包含”google“的站點(diǎn))。這樣,就形成了一個(gè)地址列表,凡是與該列表匹配的站點(diǎn)IE將自動(dòng)使用chrome frame瀏覽,其他站點(diǎn)則依舊使用IE自己的內(nèi)核瀏覽
2.5.E僅打開指定站點(diǎn);設(shè)置方法與上面相近,同樣是在“HKEY_CURRENT_USER\Software\Google\ChromeFrame”中新建一個(gè)”DWORD值”取名為”IsDefaultRenderer“,不過這時(shí)要將其值設(shè)為”1“,同樣,回到“HKEY_CURRENT_USER\Software\Google\ChromeFrame”并在其下面新建一個(gè)子項(xiàng),這時(shí)應(yīng)將它命名為”RenderInHostUrls“,同樣,進(jìn)入剛才建好的子項(xiàng)”RenderInHostUrls“,在其下建立一個(gè)或多個(gè)”字符串值“并將它們分別命名為一些網(wǎng)址(同樣需要注意:是條目的名稱,而非它的值,雙擊設(shè)置它的值沒用的,而應(yīng)右鍵點(diǎn)它,然后重命名)同樣,可以為完整的網(wǎng)址,也可以使用通配符”*“那么,同樣也形成了一個(gè)地址列表,不過,與這個(gè)列表相匹配的站點(diǎn),IE將使用自己的內(nèi)核瀏覽,其他站點(diǎn)則自動(dòng)使用chrome frame瀏覽。
如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇