tixture55’s diary

主にプログラミング関係の日記です。

javascript雑記(scrollTopとかiterableとか)

javascriptjquery)を書いていて、いろいろ気になったところをまとめます。

 

Chromeで仕様変更になってたところ

普段Chromeしか使わないので、他のブラウザとの仕様の差とかあんまり意識してコーディングする機会ないのですが、他のブログ記事読んでて気になったので下記にまとめます。

 

 $('body').scrollTopが効かなくなってたみたい

      

$('body').scrollTop();

Chromeでは上記値は常に0を返します。(Chrome51.0で検証)

Firefoxと同じ仕様みたいです。つまり、$('body').scrollTopがきかなくなり、htmlタグを読むタイミングでscrollTopが効くようになってみたいです。

 

 

HTML CollectionとNodeListのイテレータサポートについて

 Arrayはiterableかつ長さを持ちます。

 

if(typeof array[Symbol.iterator] === "function")
alert('true'); //trueがアラートされる

古いChromeとかだと、イテレータが使えないので、下記のような処理が必要かと思います。 

 

let arrayIterator = Array.prototype[Symbol.iterator];
if (!(Symbol.iterator in HTMLCollection.prototype))
HTMLCollection.prototype[Symbol.iterator] = arrayIterator;
if (!(Symbol.iterator in NodeList.prototype))
NodeList.prototype[Symbol.iterator] = arrayIterator;