ie不相容的幾個js問題及解決辦法

hemeinvyiqiluoben發表於2018-02-08

1、table問題

在動態新增tr或者td時,createElement()一般用appendChild();都不生效,解決辦法是用新增tbody,如

var table=document.createElement("table");

var tvody=document.createElement("tbody");

var tr=document.createElement("tr");

var td=document.createElement("td");

table.appendChild(tbody.appendChile(tr.appendChild(td)));

 

2、innerHTML的問題

在IE中不支援動態的寫table的innerHTML,但是支援div或者span的innerHTML動態讀寫。

 

  3、設定樣式問題

內斂樣式:如果obj.setAttribute("stylename");stylename對應的樣式不會生效。解決方法:obj.style.cssText="stylename";

外部樣式:obj.setAttribute("class":"className");className對應的外部樣式照樣不會生效。解決辦法:obj.setAttribute("className","className");

 

4、設定屬於元素的事件

對於一個文字obj,IE不支援obj.setAttribute("onclick","functon()"),設定它的onclick屬性做法。解決辦法:obj.onclick=function(){}。注意的是:此處需要放一個匿名的函式

 

5、動態建立單選按鈕

用create和setAttribute()是解決不了問題的。解決辦法:直接document.createElement("<input type='radio' name='myradio'>");來的更痛快一些

 

6、最後就是用document判斷瀏覽器是否為IE的一個方法,document.uniqueID,因為只有IE唯一能識別uniqueID

IE的相容性,更改解析模式

百度原始碼如下

<!Doctype html>
<html xmlns=http://www.w3.org/1999/xhtml xmlns:bd=http://www.baidu.com/2010/xbdml>;
<head>
<meta http-equiv=Content-Type content=“text/html;charset=utf-8″>
<meta http-equiv=X-UA-Compatible content=IE=EmulateIE7>
<title>百度一下,你就知道 </title>
<script>var wpo={start:new Date*1,pid:109,page:‘superpage’}</script>
<meta http-equiv=X-UA-Compatible content=IE=EmulateIE7>

可以開啟百度,右鍵檢視原始碼看下!我們可以看下檔案頭是否存在這樣一行程式碼!

這句話的意思是強制使用IE7模式來解析網頁程式碼!

<meta http-equiv=“X-UA-Compatible” content=“IE=8″>

2. Google Chrome Frame也可以讓IE用上Chrome的引擎:

<meta http-equiv=“X-UA-Compatible” content=“chrome=1″ />

3.強制IE8使用IE7模式來解析

<meta http-equiv=“X-UA-Compatible” content=“IE=EmulateIE7″><!– IE7 mode –>
//或者
<meta http-equiv=“X-UA-Compatible” content=“IE=7″><!– IE7 mode –>
4.強制IE8使用IE6或IE5模式來解析

<meta http-equiv=“X-UA-Compatible” content=“IE=6″><!– IE6 mode –>

<meta http-equiv=“X-UA-Compatible” content=“IE=5″><!– IE5 mode –>
5.如果一個特定版本的IE支援所要求的相容性模式多於一種,如:

<meta http-equiv=“X-UA-Compatible” content=“IE=5; IE=8″ />

 

設定網站伺服器以指定預設相容性模式

如果伺服器是自己的話,可以在伺服器上定義一個自訂標頭來為它們的網站預設一個特定的檔案相容性模式。這個特定的方法取決於你的網站伺服器。

錄入,下列的 web.config檔案使Microsoft Internet Information Services (IIS)能定義一個自訂標頭以自動使用IE7 mode來編譯所有網頁。

另外還有一起其他的解決方案,例如google的

ie7 – js中是一個JavaScript庫(解決IE與W3C標準的衝突的JS庫),使微軟的Internet Explorer的行為像一個Web標準相容的瀏覽器,支援更多的W3C標準,支援CSS2、CSS3選擇器。它修復了許多的HTML和CSS問題,並使 得透明PNG在IE5、IE6下正確顯示。

使IE5,IE6相容到IE7模式(推薦)

<!–[if lt IE 7]>
<script src=”http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE7.js” type=”text/javascript”></script>
<![endif]–>
使IE5,IE6,IE7相容到IE8模式

<!–[if lt IE 8]>
<script src=”http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE8.js” type=”text/javascript”></script>
<![endif]–>
使IE5,IE6,IE7,IE8相容到IE9模式

<!–[if lt IE 9]>
<script src=”http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js”></script>
<![endif]–>
解決PNG顯示問題

只需將透明png圖片命名為*-trans.png

注意:此方法對背景平鋪(background-repeat)和背景(background-position)無法起到任何作用,預設會佔滿整個容器。

<meta http-equiv=”X-UA-Compatible” content=”IE=edge,chrome=1″ />
建立html5時發現這麼一句話,不知其什麼意思,百度如下:
這 樣寫可以達到的效果是如果安裝了GCF,則使用GCF來渲染頁面,如果沒安裝GCF,則使用最高版本的IE核心進行渲染。Google Chrome Frame(谷歌內嵌瀏覽器框架GCF)。這個外掛可以讓使用者的IE瀏覽器外不變,但使用者在瀏覽網頁時,實際上使用的是Google Chrome瀏覽器核心,而且支援IE6、7、8等多個版本的IE瀏覽器。

相關文章