¤Ï¤Æ¥Öfooter¤ÎºîÀ®¡Êwith¡¡JSONP¡Ë?

[edit]

Ìܼ¡

[edit]

¤Ï¤¸¤á¤Ë

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¤ÈÀÚ¤êÎ¥¤·¤Æ¡¢¤Ï¤Æ¥ÖÅÐÏ¿¥Ü¥¿¥ó¡¢¤Ï¤Æ¥Ö¿ô¥«¥¦¥ó¥È¡¢¤Ï¤Æ¥Ö¾ÜºÙ¾ðÊó¤Îɽ¼¨µ¡Ç½¤Î¤ß¤ò»ý¤¿¤»¤¿hatebufooter¥×¥é¥°¥¤¥ó¤òºîÀ®¤·¤Þ¤·¤¿¡£

°Ê²¼¡¢¤³¤Î¥¨¥ó¥È¥ê¡¼¤Ç¤Ï

¤ò¹Ô¤¤¤Þ¤¹¡£

[edit]

¤Ï¤Æ¥Ö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>

¤È¤¤¤¦¹½Â¤¤ÇÀ¸À®¡¢É½¼¨¤µ¤ì¤Þ¤¹¡£

[edit]

¥½¡¼¥¹²òÀâ

¤Ï¤Æ¥Ö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¤Î½ÐÎϡˤòÊÖ¤·¤Þ¤¹¡£
[edit]

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>

¹½Â¤¤ÏÂ礭¤¯Ê¬¤±¤Æ£²¤Ä¤Ç¤¹¡£

[edit]

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":"1",
   "url":"http://www.ark-web.jp/sandbox/wiki/index.php?%A1%D6%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8%C0%AE%B8%F9%A4%CE%A4%BF%A4%E1%A4%CE%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%C6%A5%B9%A5%C8%A4%CE%B4%AA%BD%EA%A1%D7%BB%B2%B2%C3%A5%EC%A5%DD%A1%BC%A5%C8",
   "bookmarks":
     [
       {
         "timestamp":"2006/10/08 09:55:44",
         "comment":"",
         "user":"shinchi_xx",
         "tags":[]
       }
     ],
    "title":"\u300c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u6210\u529f\u306e\u305f\u3081\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30c6\u30b9\u30c8\u306e\u52d8\u6240\u300d\u53c2\u52a0\u30ec\u30dd\u30fc\u30c8 - ARK-Web SandBox Wiki",
    "eid":"2950166",
    "entry_url":"http://b.hatena.ne.jp/entry/http://www.ark-web.jp/sandbox/wiki/index.php?%A1%D6%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8%C0%AE%B8%F9%A4%CE%A4%BF%A4%E1%A4%CE%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%C6%A5%B9%A5%C8%A4%CE%B4%AA%BD%EA%A1%D7%BB%B2%B2%C3%A5%EC%A5%DD%A1%BC%A5%C8",
    "screenshot":"http://screenshot.hatena.ne.jp/images/120x90/c/4/2/3/3/95c3fdc54d5a13047ce29c77f7a78df13aa.jpg"
 }

¤Þ¤¿¡¢°ú¿ô¤Ç¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾¤ò»ØÄꤹ¤ë¤³¤È¤ÇJSONP²½¤·¤¿¥Æ¥­¥¹¥È¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£²¾¤Ë¤³¤ÎÎã¤Ç¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾¤òhundler¤È¤¹¤ë¤È

hundler(
 {
   "count":"1",
   "url":"http://www.ark-web.jp/sandbox/wiki/index.php?%A1%D6%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8%C0%AE%B8%F9%A4%CE%A4%BF%A4%E1%A4%CE%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%C6%A5%B9%A5%C8%A4%CE%B4%AA%BD%EA%A1%D7%BB%B2%B2%C3%A5%EC%A5%DD%A1%BC%A5%C8",
   "bookmarks":
     [
       {
         "timestamp":"2006/10/08 09:55:44",
         "comment":"",
         "user":"shinchi_xx",
         "tags":[]
       }
     ],
    "title":"\u300c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u6210\u529f\u306e\u305f\u3081\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30c6\u30b9\u30c8\u306e\u52d8\u6240\u300d\u53c2\u52a0\u30ec\u30dd\u30fc\u30c8 - ARK-Web SandBox Wiki",
    "eid":"2950166",
    "entry_url":"http://b.hatena.ne.jp/entry/http://www.ark-web.jp/sandbox/wiki/index.php?%A1%D6%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8%C0%AE%B8%F9%A4%CE%A4%BF%A4%E1%A4%CE%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%C6%A5%B9%A5%C8%A4%CE%B4%AA%BD%EA%A1%D7%BB%B2%B2%C3%A5%EC%A5%DD%A1%BC%A5%C8",
    "screenshot":"http://screenshot.hatena.ne.jp/images/120x90/c/4/2/3/3/95c3fdc54d5a13047ce29c77f7a78df13aa.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¥Ç¡¼¥¿¤ò»ØÄꤷ¤¿¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Ç¼õ¤±¤Æ½èÍý¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£

[edit]

JSONP¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ÎÄêµÁ

¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Î°ú¿ô¤Ë¤Ï¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¥¨¥ó¥È¥ê¡¼¾ðÊó¼èÆÀAPI¤¬ÊÖ¤¹JSON¥Ç¡¼¥¿¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£Àè¤ÎÎã¤Ç¸À¤¨¤Ð¡¢

 {
   "count":"1",
   "url":"http://www.ark-web.jp/sandbox/wiki/index.php?%A1%D6%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8%C0%AE%B8%F9%A4%CE%A4%BF%A4%E1%A4%CE%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%C6%A5%B9%A5%C8%A4%CE%B4%AA%BD%EA%A1%D7%BB%B2%B2%C3%A5%EC%A5%DD%A1%BC%A5%C8",
   "bookmarks":
     [
       {
         "timestamp":"2006/10/08 09:55:44",
         "comment":"",
         "user":"shinchi_xx",
         "tags":[]
       }
     ],
    "title":"\u300c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u6210\u529f\u306e\u305f\u3081\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30c6\u30b9\u30c8\u306e\u52d8\u6240\u300d\u53c2\u52a0\u30ec\u30dd\u30fc\u30c8 - ARK-Web SandBox Wiki",
    "eid":"2950166",
    "entry_url":"http://b.hatena.ne.jp/entry/http://www.ark-web.jp/sandbox/wiki/index.php?%A1%D6%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8%C0%AE%B8%F9%A4%CE%A4%BF%A4%E1%A4%CE%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%C6%A5%B9%A5%C8%A4%CE%B4%AA%BD%EA%A1%D7%BB%B2%B2%C3%A5%EC%A5%DD%A1%BC%A5%C8",
    "screenshot":"http://screenshot.hatena.ne.jp/images/120x90/c/4/2/3/3/95c3fdc54d5a13047ce29c77f7a78df13aa.jpg"
 }

¤¬³ÊǼ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£Îã¤Ç¤Ï°ú¿ô̾data¤Ç¼õ¤±¤Æ¤¤¤ë¤Î¤Ç¡¢Î㤨¤Ð¡¢Åö³ºWiki¥Ú¡¼¥¸¤ËÂФ¹¤ë¤Ï¤Æ¥Ö¿ô¤ò¼èÆÀ¤·¤¿¤¤¾ì¹ç¤Ïdata.count¤Ç¼èÆÀ¤Ç¤­¤Þ¤¹¡£


¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS

¥¢¡¼¥¯¥¦¥§¥Ö¤Î¥µ¡¼¥Ó¥¹¤ä¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¤³¤Á¤é