« 「プログラマに半角全角の入り乱れた数字を見せ続けると死ぬ。」で死にたくないのでブックマークレット書いた | メイン | モダンブラウザのタイマー処理の制限をWebSocketを使って突破する(WebWorkersについて追記あり) »

どこでも「do a barrel roll」するためのグリモンとブックマークレット

Googleで「do a barrel roll」を検索すると、画面が回転すると話題になっていた。
Googleだけでしか実行できないのは寂しいので、グリモンとブックマークレット書いた。
適当なページを開いて、テキストボックスかテキストエリアに「do a barrel roll」と入力すると回転する。

(
    function(){
        document.body.addEventListener(
            "keyup",
            function(e){
                e = e||event;
                var tagName = e.target.tagName.toLowerCase();
                if (tagName != "input" && tagName != "textarea"){
                    return;
                }
                if (e.target.value != "do a barrel roll"){
                    return;
                }
                var cssValue = [
                    "@-moz-keyframes roll {100% {-moz-transform:rotate(360deg);}}",
                    "@-o-keyframes roll {100% {-o-transform:rotate(360deg);}}",
                    "@-webkit-keyframes roll {100% {-webkit-transform:rotate(360deg);}}",
                    "@keyframes roll {100% {transform:rotate(360deg);}}",
                    "body{",
                    "-moz-animation-name:roll;",
                    "-moz-animation-duration:4s;",
                    "-moz-animation-iteration-count:1;",
                    "-o-animation-name:roll;",
                    "-o-animation-duration:4s;",
                    "-o-animation-iteration-count:1;",
                    "-webkit-animation-name:roll;",
                    "-webkit-animation-duration:4s;",
                    "-webkit-animation-iteration-count:1;",
                    "animation-name:roll;",
                    "animation-duration:4s;",
                    "animation-iteration-count:1;",
                    "}"
                ].join("");
                var style = document.createElement("style");
                if ("textContent" in style) {
                    style.textContent = cssValue;
                } else {
                    style.innerText = cssValue;
                }
                var body = document.body;
                body.appendChild(style);
                setTimeout(
                    (
                        function(body,style){
                            return function(){
                                body.removeChild(style);
                            };
                        }
                    )(body,style),
                    5000
                );
            },
            false
        );
    }
)();

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google

タグ クラウド