(function(scripts, callback, errorback) { if (typeof errorback != 'function') errorback = function(url) { alert('jsloader load error: ' + url) }; var cssRegexp = /.css$/; var load = function(url) { if (cssRegexp.test(url)) { var link = document.createElement('link'); link.href = url; link.type = 'text/css'; link.rel = 'stylesheet'; (document.getElementsByTagName('head')[0] || document.body).appendChild(link); if (scripts.length) { load(scripts.shift()); } else { callback(); } } else { var script = document.createElement('script'); script.type = 'text/javascript'; script.charset = 'utf-8'; var current_callback; if (scripts.length) { var u = scripts.shift(); current_callback = function() { load(u) } } else { current_callback = callback; } if (window.ActiveXObject) { // IE script.onreadystatechange = function() { if (script.readyState == 'complete' || script.readyState == 'loaded') { current_callback(); } } } else { script.onload = current_callback; script.onerror = function() { errorback(url) }; } script.src = url; document.body.appendChild(script); } } load(scripts.shift()); })(["http://code.jquery.com/jquery-1.4.2.min.js"], function() { /* * @title [懐かしの]はてなビューティフルスター * @description 知ってる人は知っている、「こんぺいとう」のアレです。「シャンシャンシャーン」と言いながらクリックしましょう。ブックマークレットを起動した後、はてなスターをクリックして下さい。 * @include http://* * @license BSD * @require jQuery */ (function() { var FIREWORKS_COUNT = 10; var FIREWORKS_ANIMATION = 30; var FIREWORKS_COLOR = ['yellow', 'red', 'pink', 'blue', 'azure', 'cyan']; var Firework = function(x, y, count) { var self = this; this.count = count; this.seq = 0; this.xacc = []; this.yacc = []; this.divs = []; for (var n = 0; n < count; n++) { this.divs[n] = $('
').css({ position: 'absolute', left: x + 'px', top: y + 'px', zIndex: 256, color: FIREWORKS_COLOR[n%6] || 'white' }).text('★').attr('class', 'hatena-beautiful-star').appendTo(document.body)[0]; this.xacc[n] = 10 * Math.random() - 5; this.yacc[n] = 10 * Math.random() - 20; } this.timer = setInterval(function() { if (self.seq > FIREWORKS_ANIMATION) { clearInterval(self.timer); for (var n = 0; n < self.count; n++) { document.body.removeChild(self.divs[n]); } return true; } for (var n = 0; n < self.count; n++) { var e = self.divs[n]; e.style.left = parseInt(e.style.left) + self.xacc[n] + 'px'; e.style.top = parseInt(e.style.top) + self.yacc[n] + 'px'; self.yacc[n]++; } self.seq++; return true; }, 10); } $('.hatena-star-add-button').click(function() { new Firework($(this).offset().left-5, $(this).offset().top, FIREWORKS_COUNT); }); })(); });