【JS・jQuery】ページ内リンクのスムーススクロールのベスト(2017年9月現在)な実装を考える

2018/1/27追記:「スムーススクロールをjQueryを使わずにシンプルに実装する」という記事を書きました。 jQueryを使わないスムーススクロールのコードを紹介していますので、もしよければ参考にしてみてください。
サイト制作時に、必ずと言っていいほど使用しているスクリプトがあります。 ページ内リンク(アンカーリンク)のスムーススクロールです。 これはもう本当に毎回使用するので、手元のデフォルトのJSファイルには当たり前のように用意してあります。 しかし、先日書いた記事「【JavaScript】Chromeの最新版(61)から画面スクロール量を取得する要素がdocument.bodyじゃなくてdocument.documentElementに変わっていた事を知った。」にあるように、 Chromeの最新版(61)から、画面のスクロール位置を取得したりする要素が変わり、 今まで使用していたスムーススクロールが、Chromeでは動かなくなってしまいました。 これは簡単に修正する事ができましたが、少しひっかかる点があり、 今現在ベストな実装方法はどのようなものだろうと思い、考えてみました。 あくまでも、個人的なベストですので、ご了承下さい。

Fatal error: Uncaught Error: Call to a member function id() on array in /home/web-rice/www/noze.space/wp/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php:36 Stack trace: #0 /home/web-rice/www/noze.space/wp/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php(538): CrayonFormatter::format_code('', Array, Object(CrayonHighlighter)) #1 [internal function]: CrayonFormatter::delim_to_internal(Array) #2 /home/web-rice/www/noze.space/wp/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php(516): preg_replace_callback('#()#msi', 'CrayonFormatter...', '$('a[href^="#"]...') #3 /home/web-rice/www/noze.space/wp/wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php(166): CrayonFormatter::format_mixed_code('$('a[href^="#"]...', Object(CrayonLang), Object(CrayonHighlighter)) #4 /home/web-rice/www/noze.space/wp/wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php(186): CrayonHighlighter->process() #5 /home/web-rice/www/noze.space/wp/wp-co in /home/web-rice/www/noze.space/wp/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 36