門戶網(wǎng)站ie兼容性問題學(xué)習(xí)

1、ie8以下不兼容jquery要用原生js操作,這樣會(huì)兼容低版本ie瀏覽器

2、然后自己封裝ajax方法兼容ie8以下瀏覽器

輪播圖用js實(shí)現(xiàn)

兼容ie8一下瀏覽器的顯示錯(cuò)誤可以用如下方法:

<!--[if lte IE 8]>

<script src="ie-fix.js"></script>

<link href="ie-fix.css" rel="stylesheet" type="text/css">

<![endif]-->

僅當(dāng)瀏覽頁(yè)面的瀏覽器是IE 8或更早版本時(shí),此塊才會(huì)應(yīng)用特定于IE的CSS和JavaScript。lte表示“小于或等于”,但您也可以使用lt,gt,gte,!NOT和其他邏輯語(yǔ)法。

參考鏈接 https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/HTML_and_CSS

https://www.sitepoint.com/internet-explorer-conditional-comments/

還可以用 polyfill

https://remysharp.com/2010/10/08/what-is-a-polyfill

判斷瀏覽器需要時(shí)才加載js

if (browserSupportsAllFeatures()) {

main();} else {

loadScript('polyfills.js', main);}

function main(err) {

// actual app code goes in here}

function browserSupportsAllFeatures() {

return window.Promise && window.fetch;}

function loadScript(src, done) {

var js = document.createElement('script');

js.src = src;

js.onload = function() {

done();

};

js.onerror = function() {

done(new Error('Failed to load script ' + src));

};

document.head.appendChild(js);}

關(guān)于瀏覽器的可訪問性

- 移動(dòng)設(shè)備上的用戶。

- 用戶使用其他瀏覽設(shè)備,如電視,手表等。

- 可能沒有最新瀏覽器的舊設(shè)備的用戶。

- 較低規(guī)格設(shè)備的用戶可能具有較慢的處理器。

鍵盤按鍵

document.onkeydown = function(e) {

if(e.keyCode === 13) { // The Enter/Return key

document.activeElement.onclick(e);

}};

常見錯(cuò)誤#5:DOM操作效率低下

JavaScript使得操作DOM相對(duì)容易(即添加,修改和刪除元素),但沒有做任何事情來(lái)促進(jìn)這樣做有效。

一個(gè)常見的例子是一次添加一個(gè)DOM元素的代碼。添加DOM元素是一項(xiàng)昂貴的操作。連續(xù)添加多個(gè)DOM元素的代碼效率低下,可能無(wú)法正常工作。

當(dāng)需要添加多個(gè)DOM元素時(shí),一種有效的替代方法是使用文檔片段,從而提高效率和性能。

例如:

var div = document.getElementsByTagName("my_div");

var fragment = document.createDocumentFragment();

for (var e = 0; e < elems.length; e++) { // elems previously set to list of elements

fragment.appendChild(elems[e]);

}

div.appendChild(fragment.cloneNode(true));

除了本方法本身提高的效率之外,創(chuàng)建附加的DOM元素也很昂貴,而在分離時(shí)創(chuàng)建和修改它們?nèi)缓蟾郊铀鼈儠?huì)產(chǎn)生更好的性能。

剩余參數(shù)和 arguments對(duì)象的區(qū)別

剩余參數(shù)和 arguments對(duì)象之間的區(qū)別主要有三個(gè):

- 剩余參數(shù)只包含那些沒有對(duì)應(yīng)形參的實(shí)參,而 arguments 對(duì)象包含了傳給函數(shù)的所有實(shí)參。

- arguments對(duì)象不是一個(gè)真正的數(shù)組,而剩余參數(shù)是真正的 Array實(shí)例,也就是說你能夠在它上面直接使用所有的數(shù)組方法,比如 sort,map,forEach或pop。

- arguments對(duì)象還有一些附加的屬性 (如callee屬性)。

Objects 和 maps 的比較

Object 和 Map 類似的是,它們都允許你按鍵存取一個(gè)值、刪除鍵、檢測(cè)一個(gè)鍵是否綁定了值。因此(并且也沒有其他內(nèi)建的替代方式了)過去我們一直都把對(duì)象當(dāng)成 Map 使用。不過 Map 和 Object 有一些重要的區(qū)別,在下列情況里 Map 會(huì)是更好的選擇:

- 一個(gè)對(duì)象的鍵只能是字符串或者 Symbols,但一個(gè) Map 的鍵可以是任意值,包括函數(shù)、對(duì)象、基本類型。

- 你可以通過 size 屬性直接獲取一個(gè) Map 的鍵值對(duì)個(gè)數(shù),而 Object 的鍵值對(duì)個(gè)數(shù)只能手動(dòng)計(jì)算。

- Map 是可迭代的,而 Object 的迭代需要先獲取它的鍵數(shù)組然后再進(jìn)行迭代。

- Object 都有自己的原型,所以原型鏈上的鍵名有可能和對(duì)象上的鍵名產(chǎn)生沖突。雖然 ES5 開始可以用 map = Object.create(null) 來(lái)創(chuàng)建一個(gè)沒有原型的對(duì)象,但是這種用法不太常見。

- Map 在涉及頻繁增刪鍵值對(duì)的場(chǎng)景下會(huì)有些性能優(yōu)勢(shì)。

像上面的例子中,如果你執(zhí)行var a1 = new A(); var a2 = new A(); 那么 a1.doSomething事實(shí)上會(huì)指向Object.getPrototypeOf(a1).doSomething,它就是你在 A.prototype.doSomething 中定義的內(nèi)容。也就是說:Object.getPrototypeOf(a1).doSomething == Object.getPrototypeOf(a2).doSomething == A.prototype.doSomething?!狙a(bǔ)充:實(shí)際上當(dāng)執(zhí)行a1.doSomething()相當(dāng)于執(zhí)行Object.getPrototypeOf(a1).doSomething.call(a1)==A.prototype.doSomething.call(a1)】

解構(gòu)賦值語(yǔ)法是一個(gè) Javascript 表達(dá)式,這使得可以將值從數(shù)組或?qū)傩詮膶?duì)象提取到不同的變量中

箭頭函數(shù)不會(huì)創(chuàng)建自己的this,它只會(huì)從自己的作用域鏈的上一層繼承this

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 瀏覽器兼容性問題總結(jié) 一、簡(jiǎn)介 瀏覽器內(nèi)核主要包含兩種引擎,一是渲染引擎,另一個(gè)是 js 引擎,常見的內(nèi)核有 Tr...
    zhangAllen閱讀 1,920評(píng)論 0 0
  • 以前對(duì)瀏覽器兼容性問題只是大概知道一些點(diǎn),沒想到這次真正著手去做的時(shí)候,還是碰到了很多問題。剛開始的時(shí)候一邊解決問...
    沮溺閱讀 28,082評(píng)論 2 11
  • 1、css3媒體查詢 IE8不支持媒體查詢 解決:respond.js,在頁(yè)面中所有css文件的引用位置之后引用R...
    LIsPeri閱讀 858評(píng)論 0 0
  • 兼容性問題: 一、CSS兼容性 1.felx布局在iOS8上有問題。解決:加-webkit前綴 2.ie6、7和遨...
    af13e05a9b9a閱讀 943評(píng)論 0 0
  • 一:Vue 2.x cli 1、 使用vue2.0的項(xiàng)目在IE11版本瀏覽器中是空白的 或者路由跳轉(zhuǎn)但是而頁(yè)...
    Marting424閱讀 11,092評(píng)論 0 1

友情鏈接更多精彩內(nèi)容