- ¥Ð¥Ã¥¯¥¢¥Ã¥×°ìÍ÷
- ¥½¡¼¥¹ ¤òɽ¼¨
- ¤Ï¤Æ¥Öfooter¤ÎºîÀ®¡Êwith¡¡JSONP¡Ë ¤Ïºï½ü¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
- 1 (2006-10-11 (¿å) 15:17:03)
- 2 (2006-10-11 (¿å) 18:15:05)
- 3 (2006-10-12 (ÌÚ) 00:31:01)
¤Ï¤Æ¥Öfooter¤ÎºîÀ®¡Êwith¡¡JSONP¡Ë?
Ìܼ¡ †
¤Ï¤¸¤á¤Ë †
ARK-Web SandboxWiki¤Ç¤Ï¥Õ¥Ã¥¿¾ðÊó¤òɽ¸½¤¹¤ë¤¿¤á¤Ë¡¢PukiWiki¤Îblikifooter¥×¥é¥°¥¤¥ó¤òÍøÍѤ·¤Æ
#blikifooter(¿ÊÃÏ);
¤È¥³¥Þ¥ó¥É¤òµ½Ò¤¹¤ë¤³¤È¤Ç
Åê¹Æ¼Ô ¿ÊÃÏ|¥Ñ¡¼¥Þ¥ê¥ó¥¯|trackback(10)|comment(5)
¤Î¤è¤¦¤ËÅê¹Æ¼Ô¡¢Permalink¡¢Trackback¡¢¥³¥á¥ó¥È¿ô¤òɽ¼¨¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢ÄɲäǤϤƥ֤ؤÎÅÐÏ¿¥Ü¥¿¥ó¡¢¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È¡¢¤Ï¤Æ¥Ö¾ÜºÙ¾ðÊó¤òɽ¼¨¤¹¤ë¤¿¤á¤Ëblikifooter¥×¥é¥°¥¤¥ó¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤Þ¤·¤¿¡£¡ÊÄɲøå¤Î¥¤¥á¡¼¥¸¤Ï²¼¤Î²èÁü¤ÎÄ̤ê¡Ë
&ref(): File not found: "hatebufooter_with_blikifooter.JPG" at page "¤Ï¤Æ¥Öfooter¤ÎºîÀ®¡Êwith¡¡JSONP¡Ë";
ÆäˤϤƥֿô¥«¥¦¥ó¥È¤È¤Ï¤Æ¥Ö¾ÜºÙ¾ðÊó¤Î¼èÆÀ/ɽ¼¨¤Ë¤ÏJSONP(JSON with Padding)¤òÍøÍѤǤ¤ë¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¨¥ó¥È¥ê¡¼¾ðÊó¼èÆÀAPI¤ò»ÈÍѤ·¤Æ¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢blikifooter¤ÈÀÚ¤êÎ¥¤·¤Æ¡¢¤Ï¤Æ¥ÖÅÐÏ¿¥Ü¥¿¥ó¡¢¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È¡¢¤Ï¤Æ¥Ö¾ÜºÙ¾ðÊó¤Îɽ¼¨µ¡Ç½¤Î¤ß¤ò»ý¤¿¤»¤¿PukiWiki¤Îhatebufooter¥×¥é¥°¥¤¥ó¤òºîÀ®¤·¤Þ¤·¤¿¡£
°Ê²¼¡¢¤³¤Î¥¨¥ó¥È¥ê¡¼¤Ç¤Ï
- ¤Ï¤Æ¥Öfooter¤Î³°Éô»ÅÍÍ
(¢¨¤³¤³¤Ç¤Ïhatebufooter¥×¥é¥°¥¤¥ó¤òÀâÌÀ¤ËÍѤ¤¤Þ¤¹¡£blikifooter¤ËÁȤ߹þ¤ó¤À¥«¥¹¥¿¥Þ¥¤¥º¤Ï¸¶Â§hatebufooter¤ÈÊѤï¤ê¤Ï¤¢¤ê¤Þ¤»¤ó¡£Î¾¼Ô¤òÁí¾Î¤·¤Æ¤³¤³¤Ç¤Ï¤Ï¤Æ¥Öfooter¤Èɽµ¤·¤Æ¤¤¤Þ¤¹) - ¥½¡¼¥¹²òÀâ
- JSONPÍøÍÑÉô¤Î²òÀâ
- JSONscriptRequest¥¯¥é¥¹¤ò»È¤Ã¤¿JSONP¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¼Â¹Ô
- JSONP¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ÎÄêµÁ
¤ò¹Ô¤¤¤Þ¤¹¡£
#blikimore;
¤Ï¤Æ¥Öfooter¤Î³°Éô»ÅÍÍ †
¤Ï¤Æ¥Öfooter¤Î³°Éô»ÅÍͤȤʤ뵡ǽ¤Ï²¼µ¤Ë¤Ê¤ê¤Þ¤¹¡£
- ¤Ï¤Æ¥ÖÅÐÏ¿¥Ü¥¿¥ó¤Îɽ¼¨
- ¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È¤Îɽ¼¨
- ¤Ï¤Æ¥Ö¾ÜºÙ¾ðÊó¤Îɽ¼¨
¤Ï¤Æ¥ÖÅÐÏ¿¥Ü¥¿¥ó¤Ï[B!]¤Î¥Ü¥¿¥ó¤Ç¡¢¥¯¥ê¥Ã¥¯¤¹¤ë¤ÈÅö³ºWiki¥Ú¡¼¥¸¤ò¤Ï¤Æ¥ÖÅÐÏ¿¤Ç¤¤Þ¤¹¡£
¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È¤Îɽ¼¨¤È¡¢¤Ï¤Æ¥Ö¾ÜºÙ¾ðÊó¤Îɽ¼¨¤Ï¡¢Åö³ºWiki¥Ú¡¼¥¸¤¬1·ï°Ê¾å¤Ï¤Æ¥Ö¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Î¤ß͸ú¤Ë¤Ê¤ê¤Þ¤¹¡£
º£¡¢n(n=1¡ÁN)¿Í¤Ë¤è¤Ã¤ÆÅö³ºWiki¥Ú¡¼¥¸¤¬¤Ï¤Æ¥Ö¤µ¤ì¤Æ¤¤¤ë¤È¤¹¤ë¤È¡¢
¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È¤Ï
¤³¤Î¥¨¥ó¥È¥ê¡¼¤ò¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼( n users )
¤Èɽ¼¨¤µ¤ì¡¢
¤Ï¤Æ¥Ö¾ÜºÙ¾ðÊó¤Ï¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È¤Ë³¤¤¤Æ
<div> ¥æ¡¼¥¶1¤Î¤Ï¤Æ¥ÖÅÐÏ¿Æü»þ(yyyy/mm/dd hh:mm:ss) <a href="¥æ¡¼¥¶1¤ÎHatena::Bookmark¤ÎURL">¥æ¡¼¥¶1</a><br/> - ¥æ¡¼¥¶1¤Î¥³¥á¥ó¥È(¥æ¡¼¥¶1¤Î¥³¥á¥ó¥È¤¬¤â¤·¤¢¤ì¤Ðɽ¼¨¤µ¤ì¤ë) </div> <div> ¥æ¡¼¥¶2¤Î¤Ï¤Æ¥ÖÅÐÏ¿Æü»þ(yyyy/mm/dd hh:mm:ss) <a href="¥æ¡¼¥¶2¤ÎHatena::Bookmark¤ÎURL">¥æ¡¼¥¶2</a><br/> - ¥æ¡¼¥¶2¤Î¥³¥á¥ó¥È(¥æ¡¼¥¶2¤Î¥³¥á¥ó¥È¤¬¤â¤·¤¢¤ì¤Ðɽ¼¨¤µ¤ì¤ë) </div> : : <div> ¥æ¡¼¥¶N¤Î¤Ï¤Æ¥ÖÅÐÏ¿Æü»þ(yyyy/mm/dd hh:mm:ss) <a href="¥æ¡¼¥¶N¤ÎHatena::Bookmark¤ÎURL">¥æ¡¼¥¶N</a><br/> - ¥æ¡¼¥¶N¤Î¥³¥á¥ó¥È(¥æ¡¼¥¶N¤Î¥³¥á¥ó¥È¤¬¤â¤·¤¢¤ì¤Ðɽ¼¨¤µ¤ì¤ë) </div>
¤È¤¤¤¦¹½Â¤¤ÇÀ¸À®¡¢É½¼¨¤µ¤ì¤Þ¤¹¡£
hatebufooter¤Ï
#hatebufooter();
¤Èɽµ¤¹¤ë¤³¤È¤ÇÅö³º¥Ú¡¼¥¸¤ÎÅö³º²Õ½ê¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
¥½¡¼¥¹²òÀâ †
¤Ï¤Æ¥Öfooter¤Î¥á¥¤¥óÉô¤Î¥½¡¼¥¹¤Ï²¼µ¤ÎÄ̤ê¤Ç¤¹¡ÊÄê¿ôÉô¤ÎÀë¸ÀÅù¤ÏºÜ¤»¤Æ¤¤¤Þ¤»¤ó¡Ë
01: function plugin_hatebufooter_convert() { 02: 03: global $script, $vars; 04: 05: $args = func_get_args(); 06: $retval = ""; 07: 08: if ( empty($args[1]) || ( ( !empty($args[1]) ) && $args[1] == true ) ) { 09: 10: $permalink = $script . '?' . urlencode($vars['page']); 11: $permalink4bookmark = urlencode($permalink); 12: 13: // ¡Ö¤³¤Î¥¨¥ó¥È¥ê¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿¡×¥Ü¥¿¥ó¤Îɽ¼¨ 14: $retval .= sprintf('<a href="http://b.hatena.ne.jp/append?"><img alt="append.gif" src="" alt="¤³¤Î¥¨¥ó¥È¥ê¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿" width="" height="" border="0" /></a>', $permalink4bookmark, HATEBUFOOTER_HATENA_BOOKMARK_APPEND_IMG_URL, HATEBUFOOTER_HATENA_BOOKMARK_APPEND_IMG_WIDTH, HATEBUFOOTER_HATENA_BOOKMARK_APPEND_IMG_HEIGHT); 15: 16: // ¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È¤È¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤Æ¤¤¤ë¥æ¡¼¥¶¤Î¾ÜºÙɽ¼¨¡ÊJSONP¤òÍøÍÑ¡Ë 17: $md5_page = md5($vars['page']); 18: $retval .=<<< HATENA_BOOKMARK_COUNT 19: <script type="text/javascript" src="./js/jsr_class.js"></script> 20: <div id="hatena_bookmark_count_detail_$md5_page"> 21: </div> 22: <script type="text/javascript"> 23: var hatena_jsonp_base = 'http://b.hatena.ne.jp/entry/json/'; 24: var jsr = new JSONscriptRequest(hatena_jsonp_base + '?url=$permalink4bookmark&callback=hatena_footer_hundler_$md5_page'); 25: jsr.buildScriptTag(); 26: jsr.addScriptTag(); 27: 28: function hatena_footer_hundler_$md5_page(data) { 29: 30: if (data != null && data.count > 0) { 31: var parent_div = document.getElementById('hatena_bookmark_count_detail_$md5_page'); 32: 33: // ¥«¥¦¥ó¥¿²èÁü¤ò¼èÆÀ 34: var counter_a = document.createElement('a'); 35: counter_a.setAttribute('href', 'http://b.hatena.ne.jp/entry/' + '$permalink'); 36: var counter_img = document.createElement('img'); 37: counter_img.setAttribute('src', 'http://b.hatena.ne.jp/entry/image/' + '$permalink'); 38: counter_a.appendChild(counter_img); 39: 40: // ¤³¤Î¥¨¥ó¥È¥ê¡¼¤ò¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼(xx users) 41: // ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Çfooter¤Î²¼¤Ëɽ¼¨¤¹¤ë 42: parent_div.appendChild(document.createTextNode('¤³¤Î¥¨¥ó¥È¥ê¡¼¤ò¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼(')); 43: parent_div.appendChild(counter_a); 44: parent_div.appendChild(document.createTextNode(')')); 45: 46: // ³Æ¥Ö¥Ã¥¯¥Þ¡¼¥¯¤Î¾ÜºÙ¤ò¥ê¥¹¥Èɽ¼¨¤µ¤»¤ë 47: var bookmarks = data.bookmarks; 48: for (var i=0, bookmark; bookmark = bookmarks[i]; i++) { 49: 50: var user_div = document.createElement('div'); 51: 52: // ¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¿¥¤¥à¥¹¥¿¥ó¥×¤Îɽ¼¨ 53: user_div.appendChild(document.createTextNode(bookmark.timestamp + ' ')); 54: 55: // ¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤¿¥æ¡¼¥¶¤Îɽ¼¨ 56: var user_a = document.createElement('a'); 57: // yyyy/mm/dd hh:mm:ss¤«¤éyyyymmddʸ»úÎó¤òºîÀ®¤¹¤ë 58: var user_a_timestamp = bookmark.timestamp.substring(0, bookmark.timestamp.indexOf(' ', 0)); 59: while (true) { 60: var tmp_timestamp = user_a_timestamp; 61: user_a_timestamp = tmp_timestamp.replace('/', ''); 62: if (user_a_timestamp == tmp_timestamp) { 63: break; 64: } 65: } 66: user_a.setAttribute('href', 'http://b.hatena.ne.jp/' + bookmark.user + '/' + user_a_timestamp + '#bookmark-' + data.eid); 67: user_a.appendChild(document.createTextNode(bookmark.user)); 68: user_div.appendChild(user_a); 69: 70: // ¥³¥á¥ó¥È¤Îɽ¼¨ 71: if ( bookmark.comment != '' ) { 72: user_div.appendChild(document.createElement('br')); 73: user_div.appendChild(document.createTextNode(' - ' + bookmark.comment)); 74: } 75: 76: parent_div.appendChild(user_div); 77: } 78: } 79: jsr.removeScriptTag(); 80: } 81: </script> 82: HATENA_BOOKMARK_COUNT; 83: } 84: 85: return sprintf(HATEBUFOOTER_TEMPLATE, $retval); 86: }
´Êñ¤Ë²òÀ⤷¤Þ¤¹¡£
- 10,11¹ÔÌÜ
- ¤Ï¤Æ¤Ê¤¬Ä󶡤¹¤ë¼«Ê¬¤Î¥Ö¥í¥°¤ËÈï¥Ö¥Ã¥¯¥Þ¡¼¥¯¿ô¤òɽ¼¨¤¹¤ëµ¡Ç½¡¢¤ª¤è¤Ó¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¨¥ó¥È¥ê¡¼¾ðÊó¼èÆÀAPI¤òÍøÍѤ¹¤ë°Ù¤Ë¡¢Åö³ºWiki¥Ú¡¼¥¸¤ÎPermalink¤òÀ¸À®¤·¤Æ¤¤¤Þ¤¹¡Êξµ¡Ç½¡¢API¤ÏÂоݥڡ¼¥¸¤ÎPermalink¤ò°ú¿ô¤È¤·¤ÆÍ׵᤹¤ë¤¿¤á¡Ë¡£¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¨¥ó¥È¥ê¡¼¾ðÊó¼èÆÀAPI¤Ïʸ»ú%¤âurlencode¤µ¤ì¤¿URL¤òÍ׵᤹¤ë¤¿¤á¡¢Permalink¤ò2²óurlencode()¤Ë¤«¤±¤Æ¤¤¤Þ¤¹¡£
- 13¡Á15¹ÔÌÜ
- ¤Ï¤Æ¥ÖÅÐÏ¿¥Ü¥¿¥ó¤Î¥¿¥°¤òÀ¸À®¤·¤Æ¤¤¤Þ¤¹¡£¤Ï¤Æ¥ÖÅÐÏ¿µ¡Ç½¤Ï
http://b.hatena.ne.jp/append?$permalink4bookmark(¢«Permalink¤ò2²óurlencode()¤Ë¤«¤±¤¿URL)
¤Ë¥ê¥ó¥¯¤¹¤ë¤³¤È¤Ç¼Â¸½¤µ¤ì¤Þ¤¹¡£
- 16¡Á83¹ÔÌÜ
- JSONP¤òÍøÍѤ·¤ÆÅö³ºWiki¥Ú¡¼¥¸¤ËÂФ·¤Æ£±·ï°Ê¾å¤Ï¤Æ¥Ö¤¬¤µ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥Èɽ¼¨¤È¾ÜºÙ¾ðÊó¤Îɽ¼¨¤ò¹Ô¤¤¤Þ¤¹¡£JSONPÍøÍÑÉô¤Î²òÀâ¤Ë¾ÜºÙ¤òµ½Ò¤·¤Þ¤¹¡£
- 85¹ÔÌÜ
- À¸À®¤·¤¿¥¿¥°¡Ê¡á¤Ï¤Æ¥Öfooter¤Î½ÐÎϡˤòÊÖ¤·¤Þ¤¹¡£
JSONPÍøÍÑÉô¤Î²òÀâ †
¥½¡¼¥¹²òÀâ¤Î16¡Á83¹ÔÌܤϲ¼µ¤ÎHTML¥¿¥°¤ÈJavaScript¥³¡¼¥É¤òÀ¸À®¤·¤ÆÊÖ¤¹°Ù¤Î¥í¥¸¥Ã¥¯¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£$md5_page¤Ï¼ÂºÝ¤Ë¤ÏÅö³ºWiki¥Ú¡¼¥¸¤Î¥Ú¡¼¥¸Ì¾¤òPHP¤Îmd5()´Ø¿ô¤Ç¥Ï¥Ã¥·¥å²½¤·¤¿Ãͤ¬»ØÄꤵ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥È¥Ã¥×¥Ú¡¼¥¸¤Ê¤É¤ÇÊ£¿ôWiki¥Ú¡¼¥¸¤¬Ê¤ó¤Çɽ¼¨¤µ¤ì¤ë¾ì¹ç¤Ë¡¢¤Ï¤Æ¥Öfooter¤Ë¤è¤Ã¤Æ³ÆWiki¥Ú¡¼¥¸Ã±°Ì¤Ë½ÐÎϤµ¤ì¤ëdiv¤Îid¤äJSONP¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾¤¬¥Ð¥Ã¥Æ¥£¥ó¥°¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Î»ÅÁȤߤǤ¹¡£
<script type="text/javascript" src="./js/jsr_class.js"></script> <div id="hatena_bookmark_count_detail_$md5_page"> </div> <script type="text/javascript"> var hatena_jsonp_base = 'http://b.hatena.ne.jp/entry/json/'; var jsr = new JSONscriptRequest(hatena_jsonp_base + '?url=$permalink4bookmark&callback=hatena_footer_hundler_$md5_page'); jsr.buildScriptTag(); jsr.addScriptTag(); function hatena_footer_hundler_$md5_page(data) { if (data != null && data.count > 0) { var parent_div = document.getElementById('hatena_bookmark_count_detail_$md5_page'); // ¥«¥¦¥ó¥¿²èÁü¤ò¼èÆÀ var counter_a = document.createElement('a'); counter_a.setAttribute('href', 'http://b.hatena.ne.jp/entry/' + '$permalink'); var counter_img = document.createElement('img'); counter_img.setAttribute('src', 'http://b.hatena.ne.jp/entry/image/' + '$permalink'); counter_a.appendChild(counter_img); // ¤³¤Î¥¨¥ó¥È¥ê¡¼¤ò¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼(xx users) // ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Çfooter¤Î²¼¤Ëɽ¼¨¤¹¤ë parent_div.appendChild(document.createTextNode('¤³¤Î¥¨¥ó¥È¥ê¡¼¤ò¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼(')); parent_div.appendChild(counter_a); parent_div.appendChild(document.createTextNode(')')); // ³Æ¥Ö¥Ã¥¯¥Þ¡¼¥¯¤Î¾ÜºÙ¤ò¥ê¥¹¥Èɽ¼¨¤µ¤»¤ë var bookmarks = data.bookmarks; for (var i=0, bookmark; bookmark = bookmarks[i]; i++) { var user_div = document.createElement('div'); // ¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¿¥¤¥à¥¹¥¿¥ó¥×¤Îɽ¼¨ user_div.appendChild(document.createTextNode(bookmark.timestamp + ' ')); // ¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤¿¥æ¡¼¥¶¤Îɽ¼¨ var user_a = document.createElement('a'); // yyyy/mm/dd hh:mm:ss¤«¤éyyyymmddʸ»úÎó¤òºîÀ®¤¹¤ë var user_a_timestamp = bookmark.timestamp.substring(0, bookmark.timestamp.indexOf(' ', 0)); while (true) { var tmp_timestamp = user_a_timestamp; user_a_timestamp = tmp_timestamp.replace('/', ''); if (user_a_timestamp == tmp_timestamp) { break; } } user_a.setAttribute('href', 'http://b.hatena.ne.jp/' + bookmark.user + '/' + user_a_timestamp + '#bookmark-' + data.eid); user_a.appendChild(document.createTextNode(bookmark.user)); user_div.appendChild(user_a); // ¥³¥á¥ó¥È¤Îɽ¼¨ if ( bookmark.comment != '' ) { user_div.appendChild(document.createElement('br')); user_div.appendChild(document.createTextNode(' - ' + bookmark.comment)); } parent_div.appendChild(user_div); } } jsr.removeScriptTag(); } </script>
¹½Â¤¤ÏÂ礤¯Ê¬¤±¤Æ£²¤Ä¤Ç¤¹¡£
- JSONscriptRequest¥¯¥é¥¹¤ò»È¤Ã¤¿JSONP¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¼Â¹Ô
- JSONP¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ÎÄêµÁ
JSONscriptRequest¥¯¥é¥¹¤ò»È¤Ã¤¿JSONP¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î¼Â¹Ô †
JSONP¤Ï¥Õ¥©¡¼¥Þ¥Ã¥È¤È¤·¤Æ¤ÏJSON(JavaScript Object Notation)¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥Ç¡¼¥¿¡Ê¥Æ¥¥¹¥È¡Ë¤ò¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾¤Ç³ç¤Ã¤¿¤â¤Î¤Ë¤¹¤®¤Þ¤»¤ó¡£Î㤨¤Ð¡¢
"bindings": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} ]
¤Î¤è¤¦¤ÊJSON¥Ç¡¼¥¿¤ò¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾¤òhundler¤ÇJSONP²½¤¹¤ë¤È
hundler("bindings": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} ] );
¤È¤Ê¤ê¤Þ¤¹¡£
¤Ï¤Æ¤Ê¤¬Ä󶡤¹¤ë¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¨¥ó¥È¥ê¡¼¾ðÊó¼èÆÀAPI¤ÏJSON·Á¼°¤Ç¤Ï¤Æ¥Ö¾ðÊó¤òÊÖ¤·¤Æ¤¯¤ì¤Þ¤¹¡£¤½¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï²¼µ¤ÎÎã¤Ë¤Ê¤ê¤Þ¤¹¡£
{ "count":"14", "url":"http://www.ark-web.jp/", "bookmarks":[ { "timestamp":"2006/09/07 01:35:08", "comment":" \u4e2d\u91ce\u5b97\u3000webSig24/7", "user":"pongpongland", "tags":["web","design","contents","dh","TVBlog"] }, { "timestamp":"2006/08/10 15:35:29", "comment":"", "user":"keepintouch", "tags":["web\u5236\u4f5c"] }, { : : }, : ], "title":"Web\u5236\u4f5c(\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u4f5c\u6210) \u30a2\u30fc\u30af\u30a6\u30a7\u30d6:Web\u30c7\u30b6\u30a4\u30f3(HTML,Flash)\u30fb\u30b7\u30b9\u30c6\u30e0\u958b\u767a\u30fbZen Cart\u5c0e\u5165:\u6771\u4eac\u90fd\u4e2d\u592e\u533a\u9280\u5ea7", "eid":"1047377", "entry_url":"http://b.hatena.ne.jp/entry/http://www.ark-web.jp/", "screenshot":"http://screenshot.hatena.ne.jp/images/120x90/d/f/5/2/0/571e29202efd8abbf1fd91db361d92470a7.jpg" }
¤Þ¤¿¡¢°ú¿ô¤Ç¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾¤ò»ØÄꤹ¤ë¤³¤È¤ÇJSONP²½¤·¤¿¥Æ¥¥¹¥È¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£²¾¤Ë¤³¤ÎÎã¤Ç¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾¤òhundler¤È¤¹¤ë¤È
hundler( { "count":"14", "url":"http://www.ark-web.jp/", "bookmarks":[ { "timestamp":"2006/09/07 01:35:08", "comment":" \u4e2d\u91ce\u5b97\u3000webSig24/7", "user":"pongpongland", "tags":["web","design","contents","dh","TVBlog"] }, { "timestamp":"2006/08/10 15:35:29", "comment":"", "user":"keepintouch", "tags":["web\u5236\u4f5c"] }, { : : }, : ], "title":"Web\u5236\u4f5c(\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u4f5c\u6210) \u30a2\u30fc\u30af\u30a6\u30a7\u30d6:Web\u30c7\u30b6\u30a4\u30f3(HTML,Flash)\u30fb\u30b7\u30b9\u30c6\u30e0\u958b\u767a\u30fbZen Cart\u5c0e\u5165:\u6771\u4eac\u90fd\u4e2d\u592e\u533a\u9280\u5ea7", "eid":"1047377", "entry_url":"http://b.hatena.ne.jp/entry/http://www.ark-web.jp/", "screenshot":"http://screenshot.hatena.ne.jp/images/120x90/d/f/5/2/0/571e29202efd8abbf1fd91db361d92470a7.jpg" } );
¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£
JSONP¤Ï¤½¤Î¤Þ¤Þ¤Ç¤Ïñ¤Ë¥Æ¥¥¹¥È¤Ë²á¤®¤Ê¤¤¤¿¤á¡¢¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤òµ¯Æ°¤·¤ÆJSON¥Ç¡¼¥¿¤ò¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ËÅϤ¹»ÅÁȤߤ¬É¬ÍפǤ¹¡£¤³¤Î»Å»ö¤ò¤¹¤ë¤¿¤á¤Ë¡¢Jason Levitt»á¤¬ºîÀ®¡¢¸ø³«¤µ¤ì¤Æ¤¤¤ëJSONscriptRequest¥¯¥é¥¹¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¤½¤Î²Õ½ê¤¬
<script type="text/javascript" src="./js/jsr_class.js"></script> <div id="hatena_bookmark_count_detail_$md5_page"> </div> <script type="text/javascript"> var hatena_jsonp_base = 'http://b.hatena.ne.jp/entry/json/'; var jsr = new JSONscriptRequest(hatena_jsonp_base + '?url=$permalink4bookmark&callback=hatena_footer_hundler_$md5_page'); jsr.buildScriptTag(); jsr.addScriptTag();
¤Ë¤Ê¤ê¤Þ¤¹¡£
jsr_class.js¤ËJSONscriptRequest¥¯¥é¥¹¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤ì¤ò¤Þ¤º¥í¡¼¥É¤·¤Þ¤¹¡£¼¡¤Ë¡¢JSONscriptRequest¥ª¥Ö¥¸¥§¥¯¥È¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¨¥ó¥È¥ê¡¼¾ðÊó¼èÆÀAPI¤Ø¤Î¥ê¥¯¥¨¥¹¥ÈURL¤ò°ú¿ô¤Ë¤·¤ÆºîÀ®¤·¤Þ¤¹¡£°ú¿ô¤ËÍ¿¤¨¤¿URL¤Îcallback¥Ñ¥é¥á¡¼¥¿¤Ë»ØÄꤷ¤¿Ãͤ¬¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾¤Ë¤Ê¤ê¤Þ¤¹¡£JSONscriptRequest¥ª¥Ö¥¸¥§¥¯¥È(jsr)¤ÏbuildScriptTag()¤Ç¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ò¼Â¹Ô¤¹¤ëscript¥¿¥°¤òÀ¸À®¤·¡¢addScriptTag()¤Ç¥Ú¡¼¥¸¤ÎheadÆâ¤Ë¤½¤Îscript¥¿¥°¤òËä¤á¹þ¤ß¤Þ¤¹¡£
°Ê¾å¤Ë¤è¤Ã¤Æ¡¢¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¨¥ó¥È¥ê¡¼¾ðÊó¼èÆÀAPI¤¬ÊÖ¤¹JSON¥Ç¡¼¥¿¤ò»ØÄꤷ¤¿¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Ç¼õ¤±¤Æ½èÍý¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
JSONP¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ÎÄêµÁ †
¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î°ú¿ô¤Ë¤Ï¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¨¥ó¥È¥ê¡¼¾ðÊó¼èÆÀAPI¤¬ÊÖ¤¹JSON¥Ç¡¼¥¿¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£Àè¤ÎÎã¤Ç¸À¤¨¤Ð¡¢
{ "count":"14", "url":"http://www.ark-web.jp/", "bookmarks":[ { "timestamp":"2006/09/07 01:35:08", "comment":" \u4e2d\u91ce\u5b97\u3000webSig24/7", "user":"pongpongland", "tags":["web","design","contents","dh","TVBlog"] }, { "timestamp":"2006/08/10 15:35:29", "comment":"", "user":"keepintouch", "tags":["web\u5236\u4f5c"] }, { : : }, : ], "title":"Web\u5236\u4f5c(\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u4f5c\u6210) \u30a2\u30fc\u30af\u30a6\u30a7\u30d6:Web\u30c7\u30b6\u30a4\u30f3(HTML,Flash)\u30fb\u30b7\u30b9\u30c6\u30e0\u958b\u767a\u30fbZen Cart\u5c0e\u5165:\u6771\u4eac\u90fd\u4e2d\u592e\u533a\u9280\u5ea7", "eid":"1047377", "entry_url":"http://b.hatena.ne.jp/entry/http://www.ark-web.jp/", "screenshot":"http://screenshot.hatena.ne.jp/images/120x90/d/f/5/2/0/571e29202efd8abbf1fd91db361d92470a7.jpg" }
¤¬³ÊǼ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£Îã¤Ç¤Ï°ú¿ô̾data¤Ç¼õ¤±¤Æ¤¤¤ë¤Î¤Ç¡¢Î㤨¤Ð¡¢Åö³ºWiki¥Ú¡¼¥¸¤ËÂФ¹¤ë¤Ï¤Æ¥Ö¿ô¤ò¼èÆÀ¤·¤¿¤¤¾ì¹ç¤Ïdata.count¤Ç¼èÆÀ¤Ç¤¤Þ¤¹¡£
¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ÎËÁƬ¤Ç¤Ï
function hatena_footer_hundler_$md5_page(data) { if (data != null && data.count > 0) {
¤Ë¤è¤Ã¤Æ¡¢£±·ï°Ê¾å¥Ö¥Ã¥¯¥Þ¡¼¥¯¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Î¤ß¸å¤Î½èÍý¤ò·Ñ³¤·¤Æ¤¤¤Þ¤¹¡£
¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È²èÁü¤Î¼èÆÀ¤Ïhttp://b.hatena.ne.jp/entry/image/$permalink¤Ç¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£
¤Ï¤Æ¥Ö¾ÜºÙ¾ðÊó¤Ï¤Þ¤º¡¢
// ³Æ¥Ö¥Ã¥¯¥Þ¡¼¥¯¤Î¾ÜºÙ¤ò¥ê¥¹¥Èɽ¼¨¤µ¤»¤ë var bookmarks = data.bookmarks;
¤Çbookmarks¤Ë¥Ï¥Ã¥·¥å¤ÎÇÛÎó¤ò³ÊǼ¤·¤¿¾å¤Ç¡¢
for (var i=0, bookmark; bookmark = bookmarks[i]; i++) {
¤ÇÇÛÎó¤Î³ÆÍ×ÁÇ¡Ê¡á³Æ¥Ö¥Ã¥¯¥Þ¡¼¥¯Ã±°Ì¤Î¾ðÊó¡Ë¤ò½èÍý¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î»þÅÀ¤Çbookmark¤Ë¤Ï
{ "timestamp":"2006/09/07 01:35:08", "comment":" \u4e2d\u91ce\u5b97\u3000webSig24/7", "user":"pongpongland", "tags":["web","design","contents","dh","TVBlog"] }
¤Î¥Ç¡¼¥¿¹½Â¤¤¬³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢Åö³º¥Ö¥Ã¥¯¥Þ¡¼¥¯¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬Íߤ·¤±¤ì¤Ðbookmark.timestamp¡¢¥³¥á¥ó¥È¤¬Íߤ·¤±¤ì¤Ðbookmark.comment¤Ç¼èÆÀ¤Ç¤¤Þ¤¹¡£
¸å¤ÏŬÅö¤ËÀ°·Á¤·¤Æ¿Æ¤Îdiv¤ËappendChild()¤·¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£
¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ôÆâ¤ÇºÇ¸å¤Ë¼Â¹Ô¤µ¤ì¤ëjsr.removeScriptTag()¤Ï¡¢addScriptTag()¤ÇËä¤á¹þ¤ó¤À¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ôµ¯Æ°ÍÑ¥¹¥¯¥ê¥×¥È¤ò¼è¤ê½ü¤¯¸å»ÏËöÍѥ᥽¥Ã¥É¤Ç¤¹¡£
·ë¶É¡¢JSONP¤Ç²¿¤¬´ò¤·¤¤¤Î¤«¡© †
JavaScript¤Ë¤ª¤¤¤Æ¤ÏJSON¤ÏXML¤ËÈæ¤Ù¤ÆÈó¾ï¤Ë´Ê°×¤ËÁàºî¤Ç¤¤Þ¤¹¡£Ajax¹½ÃۤκݤËJSON¤ò¥Ç¡¼¥¿·Á¼°¤ËÁªÂò¤Ç¤¤ì¤Ð¤È¤Æ¤â´ò¤·¤¤¤ï¤±¤Ç¤¹¡£¤·¤«¤·¡¢¥¯¥í¥¹¥É¥á¥¤¥ó¤ÎÀ©Ì󤫤龥ɥᥤ¥ó¤ÎJSON¥Ç¡¼¥¿¤òXMLHttpRequest¤Ç¤ÏÆɤ߹þ¤á¤Þ¤»¤ó¡£¤½¤³¤Ç¡¢JavaScript¤¬JSONP¤òJavaScript¥½¡¼¥¹¤È¤·¤Æ´Ý¤´¤È¥¤¥ó¥¯¥ë¡¼¥É¤Ç¤¤ë¤³¤È¤òÍøÍѤ·¤Æ¡¢Â¾¥É¥á¥¤¥ó¤ÎJSON¥Ç¡¼¥¿¤òÆɤ߹þ¤á¤ë¤è¤¦¤Ë¤¹¤ë»ÅÁȤߤȤ·¤ÆJSONP¤òÍøÍѤ·¤Þ¤¹¡£JSONP¤òÍѤ¤¤ì¤Ð¥µ¡¼¥Ð¦¤ËÂоݥǡ¼¥¿¤ò¼èÆÀ¤·¤ÆJSON·Á¼°¤ËÊÑ´¹¤¹¤ë¥¹¥¯¥ê¥×¥È¤òÃÖ¤¯É¬Íפ⤢¤ê¤Þ¤»¤ó¡£
¤Þ¤È¤á¤ë¤È¡¢JSONP¤Ç´ò¤·¤¤¤Î¤Ï¾¥É¥á¥¤¥ó¤ÎJSON¥Ç¡¼¥¿¤òJavaScript¤Î¤ß¤Ç¼èÆÀ¡¢Áàºî¤Ç¤¤ë¤³¤È¡¢¤È¤Ê¤ê¤Þ¤¹¡£
¤Ç¤¹¤«¤é¡¢JSONP¤òÅǤ¯¥µ¡¼¥Ó¥¹¤¬Ä󶡤µ¤ì¤ì¤Ð¡¢¸å¤Ï¥¯¥é¥¤¥¢¥ó¥È¤ÎJavaScript¤¬Ä󶡤µ¤ì¤ë¥Ç¡¼¥¿¤òÍÍ¡¹¤ËÁȤ߹ç¤ï¤»¤ë¤³¤È¤¬¤Ç¤¤ë¤Î¤Ç¤¹¡£¤·¤«¤â¡¢JSON·Á¼°¤Ê¤Î¤ÇÁàºî¤â´Êñ¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£