js中createElement方法的相容性

2021-06-14 18:16:00 字數 1116 閱讀 5324

w3c dom level2 core規定,document 介面下的 createelement 方法可以建立乙個元素節點物件例項。它可以傳入乙個字串引數 tagname,在 html 中,這個引數可以是任何形式,但tagname 應為乙個合法的標籤名。

例如:document.createelement("td");//建立乙個td

若 tagname 中出現不合法的字元,則應丟擲 invalid_character_err 異常。

由於微軟的強大,其產品ie使用了一些規範以外的規則,其中之一就與createelement方法有關。即:在 ie 中,createelement 方法不僅可以通過合法的標籤名建立節點物件,還可以通過傳入一段合法的 html **字串作為引數建立節點物件。

例如:document.createelement("");//建立乙個name屬性為"txtname"的input

若使用了 ie 特有的通過為 createelement 傳入一段合法的 html **字串作為引數建立節點物件的方法,則在其他瀏覽器中將會丟擲異常,並導致後續**無法執行。這就造成了瀏覽器的相容性問題。

也許有的讀者會說,用 createelement 方法時,使用傳入標籤名的做法不就解決了相容性問題嗎?

例如:var txt = document.createelement("input");

txt.type = "text";

txt.name = "txtname";

......

但在 ie6 , ie7 中,如果動態生成 input 元素,是無法為其設定 name 屬性的,這是ie自身的問題。這個時候,ie 特有的通過為 createelement 傳入一段合法的 html **字串作為引數建立節點物件的方法,就有了大顯身手的機會。不過,ie 中無法為 input 設定 name 屬性的 bug 已經在 ie8 中被修復。在其他瀏覽器中,不存在上述問題。

所以,要最終解決 createelement 方法的相容性問題,還是要注意判斷瀏覽器,針對 ie 可以使用其特有的通過為createelement 傳入一段合法的 html **字串作為引數的方法,非 ie 瀏覽器仍然使用 w3c 規範的標準方法。

例如:if($.browser.msie) else else    

js之旅(七)js中this

本文講述js中this的指向 介紹es5和es6中this的不同 在js es5中,使用的是function函式,誰在呼叫function,this就指向誰,有以下幾個特點 1.1 this最終指向的是呼叫它的物件 這個特點的就是es5中this的指向,其它特點都是對它的補充,如下示例 functi...

JS 理解JS中的物件

物件是object資料型別的值 物件是一組沒有特定順序的值 其中每個值都有乙個名字,從而,物件看起來就像是一組名值對。建立並定義物件的方法 1.var person new object person.name carolina person.age 29 person.job dream pers...

js中的函式

1 js中的string物件 1 內建的 2 屬性 length 3 方法 indexof 查詢子字串 匹配字串 查詢到了,返回 字串 出現的位置 沒有找到 返回 1 charat 返回指定位置的字串 substr 字串的擷取,可加兩個引數,形如 2,2 第二個位置 長度 也可以是乙個引數,則表示從...