質問編集履歴

2

追記部分の文言を修正

2015/07/25 07:06

投稿

flat
flat

スコア617

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,9 @@
38
38
 
39
39
 
40
40
 
41
+ **追記**
42
+
41
- 自己解決したコードも一応記載しておきます。
43
+ 回答を頂く前に自己解決してしまっので、そのコードも一応記載しておきます。
42
44
 
43
45
  ```JavaScript
44
46
 

1

自己解決したコードを追記

2015/07/25 07:06

投稿

flat
flat

スコア617

test CHANGED
File without changes
test CHANGED
@@ -35,3 +35,75 @@
35
35
  }
36
36
 
37
37
  ```
38
+
39
+
40
+
41
+ 自己解決したコードも一応記載しておきます。
42
+
43
+ ```JavaScript
44
+
45
+ function insert_script( url ) {
46
+
47
+ // script 要素を生成
48
+
49
+ var script = document.createElement( 'script' );
50
+
51
+ // スクリプトのソースを指定
52
+
53
+ script.src = url;
54
+
55
+ // 非同期読み込みを有効にする
56
+
57
+ script.async = true;
58
+
59
+ // body タグにノードを追加
60
+
61
+ document.body.appendChild( script );
62
+
63
+ }
64
+
65
+
66
+
67
+ // Twitterのシェア数を取得
68
+
69
+ function get_social_count_twitter( url, selector ) {
70
+
71
+ // url をエンコード
72
+
73
+ var url = encodeURIComponent( url );
74
+
75
+ // コールバックを生成(キャッシュ対策としてUTCに変換した現在時刻を付加)
76
+
77
+ var callback = 'jsonp_twitter_' + ( new Date ).getTime();
78
+
79
+ // script 要素に指定するURL
80
+
81
+ url = '//urls.api.twitter.com/1/urls/count.json?url=' + url + '&callback=' + callback;
82
+
83
+ // script 要素を追加
84
+
85
+ insert_script( url );
86
+
87
+ // シェア数を表示する要素
88
+
89
+ var selector = document.querySelector( selector );
90
+
91
+
92
+
93
+ // 返り値(JSONP)を利用した処理を実行
94
+
95
+ window[callback] = function( res ) {
96
+
97
+ // シェア数を表示するためのテキストノードを生成
98
+
99
+ var count = document.createTextNode( res.count );
100
+
101
+ // selector にテキストノードを追加
102
+
103
+ selector.appendChild( count );
104
+
105
+ };
106
+
107
+ }
108
+
109
+ ```