テキストがだんだん書かれてゆくBookmarklet

    @@ -13,22 +13,23 @@ var getAllTextData = function (textData) { var textData = []; for (var i = 0; i < allTextEl.snapshotLength; i++) { - if (allTextEl.snapshotItem(i).nodeValue.match(/[^\n\t\r ]+/g)) { + //if (allTextEl.snapshotItem(i).nodeValue.match(/^[^\n\r\t ]+$/g)) { var obj = {}; - obj.parent = allTextEl.snapshotItem(i).parentNode; + obj.parent = allTextEl.snapshotItem(i); obj.text = allTextEl.snapshotItem(i).nodeValue; +console.log(obj.parent); allTextEl.snapshotItem(i).nodeValue = ''; textData.push(obj); - } + //} } - return textData + return textData; } textData = getAllTextData(textData); var nodep = 0, textp = 0, insertTextTimer; var insertText = function () { - textData[nodep].parent.childNodes[0].nodeValue += textData[nodep].text.charAt(textp); + textData[nodep].parent.nodeValue += textData[nodep].text.charAt(textp); textp++; if (textData[nodep].text.length - 1 < textp) { textp = 0; @@ -38,5 +39,5 @@ } } } - insertTextTimer = setInterval(insertText, 20) + insertTextTimer = setInterval(insertText, 15) })(document);
  • /*
     * @title テキストがだんだん書かれてゆくBookmarklet
     * @description 一旦消えたテキストがだんだん元に戻って行く様子を見つめるだけの暇つぶしにどうぞ。
     * @include http://d.hatena.ne.jp/esperia/
     * @license MIT License
     * @require 
     */
    
    
    (function (doc) {
        var allTextEl = doc.evaluate("/*/body//*[not(self::script) and not(self::noscript)]/text()", doc, null, 7, null);
        var textData;
        var getAllTextData = function (textData) {
            var textData = [];
            for (var i = 0; i < allTextEl.snapshotLength; i++) {
                //if (allTextEl.snapshotItem(i).nodeValue.match(/^[^\n\r\t ]+$/g)) {
                    var obj = {};
                    obj.parent = allTextEl.snapshotItem(i);
                    obj.text = allTextEl.snapshotItem(i).nodeValue;
    console.log(obj.parent);
                    allTextEl.snapshotItem(i).nodeValue = '';
                    textData.push(obj);
                //}
            }
            return textData;
        }
        textData = getAllTextData(textData);
        var nodep = 0,
            textp = 0,
            insertTextTimer;
        var insertText = function () {
            textData[nodep].parent.nodeValue += textData[nodep].text.charAt(textp);
            textp++;
            if (textData[nodep].text.length - 1 < textp) {
                textp = 0;
                nodep++;
                if (textData.length - 1 < nodep) {
                    clearInterval(insertTextTimer)
                }
            }
        }
        insertTextTimer = setInterval(insertText, 15)
    })(document);
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2011/04/02 07:09:43 - 2011-04-02
  2. 2011/04/02 07:06:09 - 2011-04-02
  3. 2011/04/02 05:59:51 - 2011-04-02
  4. 2011/04/02 05:58:20 - 2011-04-02