眠い。 - Category:JavaScript

眠い。

カープネタ多め、他にWebネタとか書いてくblogです♪(^-^)

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

Tag弄った。


今までもTagの部分をJavaScriptでごにょごにょしてたんだけど、Tagの使用回数でフォントサイズが大きくなったりするように弄ってみた。…けどなんか微妙。というか使用回数が1とか2とかが多いせいか。あと無駄にタグ付け過ぎww

で、突出して多かった「カープ」タグと「野球」タグ消しました。カテゴリと被ってるし今回弄ったJavaScriptがさっぱり効果ないように見えるんでw

今のところ一番多いタグが「大竹寛」かぁ~。最近こっそり某選手のタグをごっそり消したんで消してなかったら某選手のタグが一番多いという惨事になっていたかもしれない/(^o^)\

スポンサーサイト

  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

JavaScript 弄った。


http://dean.edwards.name/weblog/2005/09/busted/http://dean.edwards.name/weblog/2006/06/again/ を参考にして (というかほぼまるコピペ。) こんなの書いてみたんですけど。

if (window.netscape || window.opera) {
    document.addEventListener("DOMContentLoaded", main, false);
} else if (/WebKit/i.test(navigator.userAgent)) { // sniff
    (function () {
        var _timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) {
                clearInterval(_timer);
                main(); // call the onload handler
            }
        }, 10);
    })();
} else {
    addEvent(window, 'load', main);
}

IEの件がよく分からなくて無視。

えーと、あと、Safari (と他のKHTML系) だとイベントオブジェクト欲しい時ってどうすればいいんだろ。まーonloadでイベントオブジェクトが欲しい処理ってあんまり無いかもだけど。

えーとあと、<code class="javascript">とか書いたらJavaScriptのメソッドとかifとかをハイライト表示に変換してくれるJavaScriptライブラリ?ってどっか無かったかな…あるハズ。自分で書いても良いんだけど。


でもこれ(↑)書いてもあまり早さが実感できないっつーかBlogPetのJavaScript読むところでレンダリング止まるのであんまり意味ないっつーか。


で、BlogPetのJavaScriptをonload時に動的に読み込むスクリプトを試行錯誤してたんですけど上手く行かなくて断念。えー一応、試した事。

element.innerHTML = '<script src=~
// スクリプト読んでるのかもしれないけど実行されない。

innerHTML

var script = document.createElement('script');
(中略)
element.appendChild(script);
// スクリプト実行されるんだけどなんかBlogPetのパーツだけになってしまう。

createElement

なんか上手い方法は無いかなー。これが上手く行けばランダムで義真にしたりメロメロパーク表示させたり他の「これ以上増やしてもなー…」って諦めてきたフラッシュ系ブログパーツを表示させたりできるのに><


  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

Recent Entries (その4)

  • 2006-07-03 (Mon) 19:06
  • [Category: JavaScript]

という訳で、モチベーション下がったり面倒臭くなったりしたけど決定・完成

ソース割愛。覗いて持ってってくれて構わないし、変な所があれば指摘くれると幸せ(^-^)


  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

何このfloat。

  • 2006-06-30 (Fri) 21:02
  • [Category: JavaScript]

function () {
    var n = 0;
    var str = '';
    while (n < 1) {
        str += n + '\n';
        n += 0.1;
    }
    alert(str);
}

↑ を実行すると (JavaScript)、結果が 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 ってならないんだなぁ。。。(ー"ー;)

とりあえず、こうするしかないのかな(’’)? ↓

function () {
    var n = 0;
    var str = '';
    while (n < 10) {
        str += (n / 10) + '\n';
        n++;
    }
    alert(str);
}

  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

テンプレート修正 +α

  • 2006-06-27 (Tue) 23:57
  • [Category: JavaScript]

エントリごとのページのテンプレを昨日から修正してて。

で、こんなのつけてみたんだけど。

いらないと言われても否定できない機能。

var commentForm = {
    trigger : null,
    box : null,
    init : function () {
        var target = getElementsByClassName(document, 'comment_form', 'div')[0];
        if (!target) { return; }
        this.trigger = target.getElementsByTagName('h3')[0];
        this.box = document.getElementById('comment_form');
        if (!this.trigger || !this.box) { return; }
        this.trigger.className = 'trigger';
        this.trigger.setAttribute('onclick', 'commentForm.show();');
        this.box.style.display = 'none';
    },
    show : function () {
        this.trigger.setAttribute('onclick', 'commentForm.hide();');
        this.box.style.display = 'block';
    },
    hide : function () {
        this.trigger.setAttribute('onclick', 'commentForm.show();');
        this.box.style.display = 'none';
    }
};

いつもと書き方変えて、変数をオブジェクト的に使う編。JavaScript は書き方が色々許されるから、そのぶん迷うよねぇ?


  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

Safari の挙動。

  • 2006-06-23 (Fri) 23:41
  • [Category: JavaScript]

getElementsByTagNameNS とか。 の続き。


var e87 = document.getElementById('entry87');
var ele = e87.getElementsByTagName('*');
var tag = new Array;
for (var i = 0; i < ele.length; i++) {
    tag[tag.length] = ele[i].tagName;
}
alert(tag);

↑ のスクリプトで#entry87 内の全要素を取得してみた結果。

Gecko。H2,A,UL,LI,LI,A,A,A,LI,A,A,A,HR,DIV,P,CODE,P,CODE,ABBR,CODE,P,CODE,EM,P,P,RDF:RDF,RDF:DESCRIPTION

Safari。H2,A,UL,LI,LI,A,A,A,LI,A,A,A,HR,DIV,P,CODE,P,CODE,ABBR,CODE,P,CODE,EM,P,P

と言う訳で、要素ノードとして認識されてないっぽい┐(´ー`)┌ やっぱり text/html で他の語彙使うのは無理があるか(ーー;

e87.childNodes で廻してみたけどやっぱり無視。

innerHTML から正規表現使って切り出せないかとか考えてみたけど、これも無視。

もしかして、タイプミスとか他のブラウザの独自拡張要素と同じ扱いを受けてるんだろか。


  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

getElementsByTagNameNS とか。

  • 2006-06-22 (Thu) 23:52
  • [Category: JavaScript]

Trackback URL を prompt で表示させてみるとかやってみたんだけども。

どうも、Safari だと text/html な文書の rdf:Description みたいな、名前空間接頭辞付き要素・属性が拾えない模様。…あたしの Safari が古いせい? まぁ、text/html で XHTML 以外の語彙引っ張ってくるの方がおかしいとか言われるかもしれないケド(ーー; 因みに application/xhtml+xml の時は getElementsByTagNameNS でちゃんと拾える。

因みに、Gecko、及び Opera & text/html だと getElementsByTagName('rdf:Description') で行けるんだけどなぁ。

とりあえずは Safari でスクリプト走らせなければいいやーって感じでしゅーりょー。なんか改善方法とかあったら指摘下さると幸せ。

IE は確認のしようがないのでサポート外┐(´ー`)┌ 動いたら儲けもん。


Safari の挙動。 に続く。

2006-06-24 追記。


  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

Recent Entries V3

  • 2006-06-18 (Sun) 21:52
  • [Category: JavaScript]

Recent Entries改。 の続き。


別の候補バージョン。こっちにしようかな…。

function entriesList() {
    this.targetNode = '';
    this.block = '';
    this.showTrigger = '';
    this.hideTrigger = '';
}

entriesList.prototype = {
    init : function () {
        EL.targetNode = document.getElementById('plugin_entries').getElementsByTagName('ul')[0];
        if (!EL.targetNode) { return; }
        EL.block = document.createElement('div');
        EL.targetNode.parentNode.replaceChild(EL.block, EL.targetNode);
        EL.block.appendChild(EL.targetNode);
        EL.targetNode.style.display = 'none';
        var p = document.createElement('p');
        EL.showTrigger = document.createElement('a');
        EL.showTrigger.setAttribute('href', 'javascript:void(0);');
        addEvent(EL.showTrigger, 'click', EL.show);
        EL.showTrigger.appendChild(document.createTextNode('Recent Entries'));
        p.appendChild(EL.showTrigger);
        EL.hideTrigger = document.createElement('a');
        EL.hideTrigger.style.display = 'none';
        EL.hideTrigger.setAttribute('href', 'javascript:void(0);');
        addEvent(EL.hideTrigger, 'click', EL.hide);
        EL.hideTrigger.appendChild(document.createTextNode('Close'));
        p.appendChild(EL.hideTrigger);
        EL.block.insertBefore(p, EL.block.firstChild);
//        EL.block.style.border = '1px solid';
    },
    show : function (evt) {
        var x = document.body.clientWidth - evt.pageX;
        var y = evt.pageY + 20;
//        window.status = x + ', ' + y;
        EL.showTrigger.style.display = 'none';
        EL.hideTrigger.style.display = 'inline';
        EL.block.style.backgroundImage = 'url("file/white_90.png")';
        EL.block.style.position = 'absolute';
        EL.block.style.top = y + 'px';
        EL.block.style.right = x + 'px';
        EL.block.style.zIndex = 10000;
        EL.block.style.maxWidth = Math.floor(document.body.clientWidth * 0.8) + 'px';
        EL.targetNode.style.display = 'block';
    },
    hide : function () {
        EL.showTrigger.style.display = 'inline';
        EL.hideTrigger.style.display = 'none';
        EL.block.style.backgroundImage = 'none';
        EL.block.style.position = 'static';
        EL.targetNode.style.display = 'none';
    }
};

var EL = new entriesList;

因みに addEventaddEventListenerattachEvent を振り分ける関数。


  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

Recent Entries改。

  • 2006-06-17 (Sat) 15:35
  • [Category: JavaScript]

サイドメニューが長すぎ(ーー; の続き。


改良を加えてみた。Submit ボタンでも移動できる様に。

function entrySelector() {
    var ent = document.getElementById('plugin_entries');
    if (!ent) { return; }
    var a = ent.getElementsByTagName('a');
    if (a.length < 1) { return; }
    var sel = document.createElement('select');
    sel.name = 'entry';
    sel.setAttribute('onchange', 'location.href = this.value;');
    sel.style.maxWidth = '100%';
    for (var i = 0; i < a.length; i++) {
        var opt = document.createElement('option');
        opt.setAttribute('value', a[i].getAttribute('href'));
        var str = a[i].textContent ? a[i].textContent : a[i].innerText;
        opt.appendChild(document.createTextNode(str));
        if (location.href == a[i].getAttribute('href')) {
            opt.setAttribute('selected', 'selected');
        }
        sel.appendChild(opt);
    }
    var fld = document.createElement('fieldset');
    var lgd = document.createElement('legend');
    lgd.appendChild(document.createTextNode('Select entry'));
    fld.appendChild(lgd);
    fld.appendChild(sel);
    var btn = document.createElement('input');
    btn.setAttribute('type', 'submit');
    btn.setAttribute('value', 'Go');
    fld.appendChild(btn);
    var form = document.createElement('form');
    form.setAttribute('onsubmit', 'var sel = this.elements.entry; location.href = sel[sel.selectedIndex].value; return false;');
    form.appendChild(fld);
    var div = ent.getElementsByTagName('div');
    for (var i = 0; i < div.length; i++) {
        if (div[i].className == 'plugin_content') {
            while (div[i].hasChildNodes()) {
                div[i].removeChild(div[i].firstChild);
            }
            div[i].appendChild(form);
            break;
        }
    }
}

Recent Entries V3 へ続く。

2006-06-18 追記。


  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

サイドメニューが長すぎ(ーー;

  • 2006-06-17 (Sat) 00:17
  • [Category: JavaScript]

サイドメニューのどこを削れば…(ーー; と考えてみた所、Recent entries をよくある select メニューにしてみようかと。

で、書いてみた JavaScript↓。

function entries() {
    var ent = document.getElementById('plugin_entries');
    if (ent) {
        var a = ent.getElementsByTagName('a');
        if (a.length > 0) {
            var sel = document.createElement('select');
            sel.setAttribute('onchange', 'location.href = this.value;');
            sel.style.maxWidth = '100%';
            for (var i = 0; i < a.length; i++) {
                var opt = document.createElement('option');
                opt.setAttribute('value', a[i].getAttribute('href'));
                opt.appendChild(document.createTextNode(a[i].firstChild.nodeValue));
                if (location.href == a[i].getAttribute('href')) {
                    opt.setAttribute('selected', 'selected');
                }
                sel.appendChild(opt);
            }
            var fld = document.createElement('fieldset');
            var lgd = document.createElement('legend');
            lgd.appendChild(document.createTextNode('Select entry'));
            fld.appendChild(lgd);
            fld.appendChild(sel);
            var form = document.createElement('form');
            form.appendChild(fld);
            var div = ent.getElementsByTagName('div');
            for (var i = 0; i < div.length; i++) {
                if (div[i].className == 'plugin_content') {
                    while (div[i].hasChildNodes()) {
                        div[i].removeChild(div[i].firstChild);
                    }
                    div[i].appendChild(form);
                    break;
                }
            }
        }
    }
}

他にも考えてるので実際稼働させるかどうかまだ迷い中。


Recent Entries改。 に続く。

2006-06-17 追記。


  • この記事をはてなブックマークに追加。
  • Add to del.icio.us
  • fave it!
  • FC2ブックマークへ追加
  • この記事をクリップ!
  • Yahoo!ブックマークに登録

Tools & Appendixes

義真 (BlogPet)


Calendar

2017/07
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

Entries


Recent Comments


Recent Trackbacks


Categories


Monthly Archives


Tags


あわせて読みたい

あわせて読みたい


BlogScouter


RSS Feed


Author

和眞イメージ。

Author: 和眞
友人の弟君の名前を拝借。

FOAF FoaF Explorer


License

Creative Commons License
この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。


Ranking

お気に召されたらぽちっと押してやって下さい(^-^)


Counter

FC2カウンター


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。