前端點滴記錄

孫群發表於2014-03-29
1.強制瀏覽器重新整理某個dom節點

a.removeChild(b);a.appendChild(b);


2.經測試發現IE10中不支援dom.dataset屬性,如果如下自定了屬性<div data-tip="Message1"></div>的話,在Chrome的高版本中可以通過div.dataset.tip直接獲取,而在IE10中要通過div.getAttribute('data-tip')獲取,IE11沒測試過是否支援dataset,
div.getAttribute('data-tip')是最通用的方法,在大多數的瀏覽器中都支援,建議用這種方法。


3.不要使用class等關鍵字,如果非要使用,在class兩邊加引號,否則在sublime中將jshint配置設定為es3的時候會報錯,而且在使用dojo build的時候也會報錯,而且IE8等老IE瀏覽器也會認為錯誤。而且不要使用dir等詞,比如this.dir中的dir會在sublime中高亮,類似於關鍵字,在IE下也會報錯,所以不要將data-dojo-attach-point設定為dir等值,否則出錯。


4.overflow:hidden auto;這個css樣式在IE10下面不識別,一定要寫成overflow-x:hidden;overflow-y:auto;分開寫的形式才行。


5.一般瀏覽器下將<input type="file" />的display設定為none,然後用javascript執行其click()方法即可顯示選擇檔案的視窗,但是在Firefox下不行。解決辦法是在FF下將其樣式設定為

opacity:0;width:0px;height:0px;

在其他瀏覽器上還是設定為display:none,這樣其執行click方法的時候都會彈出檔案選擇框。


6.div預設情況下不響應失去焦點、獲取焦點、鍵盤事件,為了使其響應,需要給他設定tabIndex屬性,這樣就能接收焦點、鍵盤事件。

http://stackoverflow.com/questions/8032760/how-can-i-get-keydown-events-on-a-div-in-chrome


7.getElementsByClassName() 在 Internet Explorer 5,6,7,8 中無效。


8.IE7+都支援絕對定位的left、right、top、bottom自適應,IE6沒有測試過。


9.IE8中window.HTMLElement不存在,所以不能在IE8中用a instanceof HTMLElement來判斷是否是DOM元素,可以用if(a.nodeType === 1)來判斷。

http://stackoverflow.com/questions/5747523/cross-browser-solution-for-checking-if-a-javascript-object-is-an-html-element


10.通過document.inputEncoding讀取頁面的編碼方式。


11.ECMAScript中標準的判斷某個值的型別所用的方法是Object.prototype.toString方法,該方法可以很好的區分出各種型別,比如判斷是不是陣列,可以如下判斷:

if(Object.prototype.toString.call(value) === '[object Array]'){
          console.log('array');
        }

12. IE8及IE8-的IE瀏覽器的window物件都不支援click等滑鼠事件,參見http://www.quirksmode.org/dom/events/click.html


13. IE8及IE8-的IE瀏覽器的事件物件event中都沒有preventDefault 和stopPropagation方法。

相關文章