1. 程式人生 > >IE與Firefox處理Attribute的幾點差異

IE與Firefox處理Attribute的幾點差異

提醒:本文最後更新於 3782 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

前端開發中,經常需要動態的新增、移除或者獲取元素的Attribute。也就是說經常會用到setAttribute、removeAttribute和getAttribute。今天要討論的是開發中遇到的幾處IE與Firefox對Attribute操作的差異。

屬性名大小寫

在Firefox中,屬性沒有小寫的概念,就算屬性名全用大寫,Firefox也會解析成小寫,用Firebug看就能看到。所以下面的程式碼在Firefox與IE中執行結果會不一樣。

<div altStr="sss"></div>
<script type="text/javascript"> var div = document.getElementsByTagName("div")[0]; div.removeAttribute("altstr"); alert(div.getAttribute("altstr"));//IE中返回sss,FF中返回null </script>

不過在IE中,removeAttribute有第二個引數,設定為true表示不忽略大小寫,為false時忽略大小寫,預設值是true;Firefox中因為解析時就不存在大寫屬性了,所以就沒有第二個引數。也就是說IE中removeAttribute(”test”,false)等同於Firefox中的removeAttribute(”test”),IE中removeAttribute(”test”,true)在Firefox中無法實現。

Button的value屬性

假設有下面一個button,怎麼可以得到button的value屬性?

<button value="a">b</button>

其實上,在IE下,無論是btn.getAttribute(”value”)、btn.value、btn.innerHTML還是btn.innerText都得”b”,但是在Firefox下,btn.getAttribute(”value”)、btn.value得到的都是”a”,btn.innerHTML得到的是”b”。也就是說我們如果要在button上加自定義屬性,不要用”value”做屬性名,否則在IE下沒辦法取到值。

getAttribute返回值型別不同

看一下下面的程式碼,你認為IE與Firefox分別會返回什麼?

<button onclick="alert(0)">b</button>
<script type="text/javascript">
 var btn = document.getElementsByTagName("button")[0];
 alert(btn.getAttribute("onclick"));
</script>

IE下,getAttribute(”onclick”)返回的是一個function,直接可以呼叫,Firefox下則返回一個string,直接呼叫會出錯。

題外話

今天翻手冊,看到上面對Button標籤是這麼描述的:

BUTTON 元素在表單中提交的話,Microsoft® Internet Explorer 5 及以後版本將提交 VALUE 標籤屬性,若存在的話。否則就提交 innerText 屬性。在 Internet Explorer 4.0 中,只會提交 innerText 值。

但是我發現我的IE8對於form中的button,無論有沒有value屬性,都是提交button的innerHTML屬性。不知道是什麼回事。

--EOF--

提醒:本文最後更新於 3782 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

相關推薦

IEFirefox處理Attribute差異

提醒:本文最後更新於 3782 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 前端開發中,經常需要動態的新增、移除或者獲取元素的Attribute。也就是說經常會用到setAttribute、removeAttribute和getAttribute。今天要討論的是開發中遇到的幾處IE與Fire

iefirefox的不同處理

[color=blue]1.document.formName.item(itemName) 問題說明:IE下,可以使用 document.formName.item(itemName)或 document.formName.elements[elementName];Fir

關於異常處理建議

ext 統計 href 信息 trace 莫名其妙 dex 推薦 ... 一、原則 捕獲異常必須處理異常,要麽轉換成對應文案返回給調用方,要麽顯式拋出異常給調用方,提醒調用方捕獲處理,顯式拋出異常時,源異常信息和異常Trace棧信息必須打印出來或者拋給調用

OCC語言的區別

技術分享 ima 分享圖片 簡單 cti 分享 src c語言 alt 初步接觸Objiective-C,大概總結了與C語言的一些簡單的區別 OC與C語言的幾點區別

相容IEfirefox火狐的回車事件(jsjquery)(轉)

javascript 相容IE與firefox火狐的回車事件 複製程式碼程式碼如下: <script language="javascript">  function keypress(e)  {  var currKey=0,e=e||event;  i

tensorflow的keras 原聲keras比較

dataset fit 占位符 數據 體會 其他 兩種 支持 那種 tensorflow的keras 與 原聲keras幾點比較,不是全面的比較,因為只是就使用時候發現的差異! 使用函數式API時: 1. 定義模型模型時,用到輸入的張量,也就是給Input的tensor賦值

MUI 和 framework7區別之 UI元件的差異

在做專案的時候,有時候會糾結是用framework7還是MUI,這裡簡單列出來二者在ui方面的一些區別,肯定不夠全面,供大家參考,有不足和錯誤歡迎指正。 一、MUI 中有而framework7 中沒有

oracle 12c其他版本的區別

1、oracle12c 增加CDB和PDB的概念,CDB簡稱資料庫容器,裡面可以建立多個虛擬的相互隔離的PDB資料庫,因此擁有云計算機的功能,實現對雲資料庫的支援;PDB簡稱可插拔資料庫,類似於之前版本的一對一或多對一關係(PAC)資料庫。2、建立使用者的sql語句不同,之前

相容IEfirefox的css 線性漸變(linear-gradient)--gxy

現行漸變 IE系列 filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr=’#FF0000’,endColorStr=’#F9F900’,gradientType=’0’);

js、jQuery,相容IEfirefox火狐的回車事件

js <script> document.onkeydown=function(event) { e = event ? event : (window.event ? window.event : null); if(e.keyCode==13){ //執行的

IEfirefox相容問題

已經很習慣在JS中使用getAttribute()來取得所需的HTML元素的屬性。但是今天在程式碼中很奇怪的發現document.getElementById("userAnswer").getAttribute("va

請牢記以上,做到讓更多人願意你為友

打開 san 無限 你會 並發 span 交朋友 col 若有 請牢記以上幾點,做到讓更多人願意與你為友。若有下一點,你會吸住更多人才的。 第一:你有用。你能帶給人家實用價值。 第二:你有料。跟你相處能打開眼界,放大格局。 第三:你有量。你能傾聽別人的想法並發表有價值的見

高博SLAM14講 ch5 雲拼接例程實現bug處理

一、環境配置,基本庫的安裝 1、Eigen庫 apt-get 安裝 2、sophus庫 apt-get 安裝 3、pcl 點雲庫 (1)官方預編譯版本 sudo apt-get install libpcl-dev 解除安裝 sudo apt-get remove install libpcl

log4j2 log4j使用時的小區別

雖然log4j2 目前還是beta版,不過OneCoder已經忍不住要嘗試一下。跟使用log4j 比起來,上手上主要的區別有。 1、依賴的jar包。使用slf4j+log4j2 時,依賴的jar包如下:(gradle配置,Maven對照修改

hadoopcuda的思考

分散式計算的hadoop與cuda的幾點思考 最近學習分散式計算,突然想到一個問題,hadoop 和cdua有什麼關係。為什麼有的問題要平行計算,交給GPU處理,而現在GPU程式設計的主體是cuda平行計算,有的交給分散式hadoop處理? 學習後,受到點啟發, 覺

關於computer view(CV)的認識-數字影象處理

當今科技越來越追求智慧科技,CV大約從十年前就逐漸開始迅速發展,直至今日的火爆。就我本人的視角來看,CV從原始的基於數字影象處理漸漸發展為了採用機器學習、深度學習等綜合性的學科。下面逐步分析我對此的幾點認識。 我認為計算機視覺是從數字影象處理髮展來的,而數字影

IE火狐關於獲取按鍵不相容處理

用 js實現鍵盤記錄,要關注瀏覽器的三種按鍵事件型別,即keydown,keypress和keyup,它們分別對應onkeydown、 onkeypress和onkeyup這三個事件控制代碼。一個典型的按鍵會產生所有這三種事件,依次是keydown,keypress,然後是

SQL ServerMySQL在“存在則更新,不存在則插入”併發處理上的一些差異

“存在則更新,不存在則插入的邏輯”併發情況下的處理 在sqlserver中: 在sqlserver中,是通過可序列化隔離級別+排它鎖的方式來鎖定一個範圍來實現的當前鎖定一個不存在的記錄的時候,sqlserver是通過範圍鎖來實現的,具體鎖定的範圍,表中已存在的資料和當前具體判斷的Id有關參考之前寫的一

PyQt5學習教程11:種signalslot處理事件的方法

    所有的GUI應用程式都是基於事件驅動的,事件不僅可由應用程式產生,諸如Internet連結、窗體管理器,定時器等都可以產生事件。PyQt通過signal和slot處理事件,本文以例項的方式進行講解4種signal與slot處理事件的方法。 1、本文加入LCDNumb

rabbitmq坑異常處理

來源:http://www.cnblogs.com/gossip/p/4573056.html 一、None of the specified endpoints were reachable 這個異常在建立連線時丟擲(CreateConnection()),原因一