| | 52 | |
| | 53 | // 「ブックマークに追加する」ボタンを作成する関数 |
| | 54 | function createBookmarkEntry( url ) { |
| | 55 | var img = createElement( 'img', { src: 'http://d.hatena.ne.jp/images/b_entry.gif' }, { border: 'none' } ); |
| | 56 | var a = createElement( 'a' , { href: 'http://b.hatena.ne.jp/append?' + url } ); |
| | 57 | a.appendChild( img ); |
| | 58 | return a; |
| | 59 | } |
| | 60 | |
| | 61 | // 「レスする」ボタンを作成する関数 |
| | 62 | function createResponse( id, url ) { |
| | 63 | var img = createElement( 'img', { src: 'http://d.hatena.ne.jp/images/b_entry.gif' }, { cursor: 'pointer' } ); |
| | 64 | observe( img, 'click', function(){ |
| | 65 | var form_id = 'comment-form-' + id; |
| | 66 | // 開いてたら閉じる |
| | 67 | if( $(form_id) != null) { |
| | 68 | this.parentNode.removeChild( $(form_id) ); |
| | 69 | return; |
| | 70 | } |
| | 71 | // 開いてなかったら開く |
| | 72 | var form = createElement( 'form', { id: form_id, action: 'http://b.hatena.ne.jp/add', method: 'post' } ); |
| | 73 | var comment = createElement( 'input', { type: 'text', name: 'comment', size: '50' } ); |
| | 74 | form.appendChild( comment ); |
| | 75 | form.appendChild( createHidden( 'mode', 'enter' ) ); |
| | 76 | form.appendChild( createHidden( 'url' , url ) ); |
| | 77 | form.appendChild( createHidden( 'rkm', w.Hatena.rkm ) ); |
| | 78 | var title = document.title.replace(/^はてなブックマーク/, 'ブコメレス to ' + id ); |
| | 79 | form.appendChild( createHidden( 'title', title ) ); |
| | 80 | var submit = createElement( 'input', { type: 'submit', value: 'レスする' } ); |
| | 81 | form.appendChild( submit ); |
| | 82 | this.parentNode.appendChild( form ); |
| | 83 | }); |
| | 84 | return img; |
| | 85 | } |
| 74 | | // ブックマーク数を表示する画像を作成する関数 |
| 75 | | function createBookmarkCount( url ) { |
| 76 | | var img = document.createElement( 'img' ); |
| 77 | | img.setAttribute( 'src', 'http://b.hatena.ne.jp/entry/image/' + url ); |
| 78 | | var a = document.createElement( 'a' ); |
| 79 | | a.setAttribute( 'href', 'http://b.hatena.ne.jp/entry/' + url ); |
| 80 | | a.appendChild( img ); |
| 81 | | return a; |
| | 111 | // エレメント作る |
| | 112 | function createElement( tagName, attrs, styles ) { |
| | 113 | var elem = document.createElement( tagName ); |
| | 114 | attrs = attrs || {}; |
| | 115 | styles = styles || {}; |
| | 116 | for( var key in attrs ) { |
| | 117 | elem.setAttribute( key, attrs[key] ); |
| | 118 | } |
| | 119 | for( var key in styles ) { |
| | 120 | elem.style[key] = styles[key]; |
| | 121 | } |
| | 122 | return elem; |
| 85 | | // 「ブックマークに追加する」ボタンを作成する関数 |
| 86 | | function createBookmarkEntry( url ) { |
| 87 | | var img = document.createElement( 'img' ); |
| 88 | | img.setAttribute( 'src', 'http://d.hatena.ne.jp/images/b_entry.gif' ); |
| 89 | | img.setAttribute( 'width', 16 ); |
| 90 | | img.setAttribute( 'height', 12 ); |
| 91 | | img.setAttribute( 'style', "border: none;" ); |
| 92 | | var a = document.createElement( 'a' ); |
| 93 | | a.setAttribute( 'href', 'http://b.hatena.ne.jp/append?' + url ); |
| 94 | | a.appendChild( img ); |
| 95 | | return a; |
| | 130 | // 配列の各要素に対して関数を実行する関数 |
| | 131 | function each( array, f ) { |
| | 132 | for( var i=0; i<array.length; i++ ) { |
| | 133 | f( array[i] ); |
| | 134 | } |
| | 135 | } |
| | 136 | |
| | 137 | function $( id ){ return document.getElementById( id ); } |
| | 138 | function observe(target, type, listener) { |
| | 139 | if (target.addEventListener) target.addEventListener(type, listener, false); |
| | 140 | else target.attachEvent('on' + type, function() { listener.call(target, window.event); }); |