scrollsmoothly-GE.js http://www7a.biglobe.ne.jp/~goroh/blog/category/web/others/1394887900.html 2014-03-21 CJ?ごろう ■概要 ページ内のリンクに対してスムーズにスクロールするスクリプト。 文末に転載した「scrollsmoothly.js」(以下、オリジナル)を「CJ?ごろう」が改造 したものです。 ■更新履歴 2014-03-21 ライセンスなどの記載用ファイル(これ)を用意し、スクリプトのコメントを修正。 ※関連してスクリプトのファイル名を変更。 ※スクリプト本体は変更無し。 Minify化したスクリプト(scrollsmoothly-GE.min.js)を同梱しました。 2014-03-15 スクロールの中断処理を追加。 公開。 2014-02-09 イージング処理を変更。 ■ライセンス 「追加した部分」に対して以下のライセンスを適用。 「追加した部分」とは、オリジナルに存在しない行の事とします。 ●原文 「http://opensource.org/licenses/mit-license.php」より。 The MIT License (MIT) Copyright (c) 2014 CJ?ごろう Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ●日本語参考訳 「http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license」より。 The MIT License (MIT) Copyright (c) 2014 CJ?ごろう 以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。 上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。 ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。 作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。 ■備考 「追加した部分」には、直前にコメントを付けています。 「scrollsmoothly-GE.js」とオリジナルのスクリプトを比較する事でも確認できます。 ■オリジナルのスクリプト 「http://d.hatena.ne.jp/KAZUMiX/20080418/scrollsmoothly」で配布されている 「scrollsmoothly.js」がオリジナルのスクリプトです。 2014-02-09時点で配布されていたスクリプトを元に改造しました。 ●ダウンロードした改造前のスクリプト // UTF-8 /** * scrollsmoothly.js * Copyright (c) 2008 KAZUMiX * http://d.hatena.ne.jp/KAZUMiX/20080418/scrollsmoothly * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php * * 更新履歴 * 2009/02/12 * スクロール先が画面左上にならない場合の挙動を修正 * 2008/04/18 * 公開 * */ (function(){ var easing = 0.25; var interval = 20; var d = document; var targetX = 0; var targetY = 0; var targetHash = ''; var scrolling = false; var splitHref = location.href.split('#'); var currentHref_WOHash = splitHref[0]; var incomingHash = splitHref[1]; var prevX = null; var prevY = null; // ドキュメント読み込み完了時にinit()を実行する addEvent(window, 'load', init); // ドキュメント読み込み完了時の処理 function init(){ // ページ内リンクにイベントを設定する setOnClickHandler(); // 外部からページ内リンク付きで呼び出された場合 if(incomingHash){ if(window.attachEvent && !window.opera){ // IEの場合はちょっと待ってからスクロール setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50); }else{ // IE以外はそのままGO scrollTo(0, 0); setScroll('#'+incomingHash); } } } // イベントを追加する関数 function addEvent(eventTarget, eventName, func){ if(eventTarget.addEventListener){ // モダンブラウザ eventTarget.addEventListener(eventName, func, false); }else if(window.attachEvent){ // IE eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);}); } } function setOnClickHandler(){ var links = d.links; for(var i=0; i