#ドメイン間でのデータソースのアクセス、を無効以外にしないと機能しません。
にこにこランキングをいじくってみたやにこにこ検索をいじくってみたで上記の警告文をでかでかと出していたところ、
Hirotowさんから「JSONP(jsr_class.js)ってのがあって、これを使うと自動的に制限を回避してくれます。」という
ありがたい突込みをいただきました。
早速取り組んでみたいと思います。まずはどんなものかごっごる先生にお伺いをたてましょう。
関連検索にクロスドメインやセキュリティがあがっていますね。目的も懸念事項も、かなりクリティカルのようです。
期待に胸を膨らませつつ、最初の候補をポチッとな。
ふむふむ。要約すると、データ付きのfunctionをスクリプトとして読み込み、コールバックとして使おう!
ということのようです。軽く言っていますが、理解するのに丸一日かかっています・゚・(つД`)・゚・。つまりは、
関数名( データ ) という書式でデータをよこしてくれるアドレスがあれば、クロスドメイン制限を越えて
他サイトのデータを読み込めるのです。かなりひねた使い方の気がしますが…よく考えますね。
そうはいっても、せっかくですので使ってみましょう。ニコニコ動画にJSONPを返す便利なAPIはない
ようなので、Webページのソースを丸ごと投げてくれるようなサービスを探して見ます。
おぉ、素晴らしいタイトルです。考えもなしに思いつきでつけてるどこかのブログも見習ってほしいですね。
びっくりするぐらいそのまま、ありがたいことです。Yahoo! Pipesというサービスを使っているそうです。
これはこれで楽しそうですが、寄り道してると本題が終わらないので自重して進めます。また後でねー。
まずは実験してみましょう。テストコードは以下のとおり。
<html>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<head>
<script type="text/javascript">
var hoge = function( response ) {
var debug = document.getElementById( "debug" );
debug.innerHTML = response.value.items[0].description;
}
window.onload = function( category ) {
var url = "http://www.nicovideo.jp/ranking/mylist/daily/music";
var script = document.createElement( "script" );
script.type = "text/javascript";
script.charset = "utf-8";
script.src = "http://pipes.yahoo.com/poolmmjp/page_loader?url="
+ url + "&_render=json&_callback=hoge";
document.getElementsByTagName( "head" )[0].appendChild( script );
var debug = document.getElementById( "debug" );
debug.innerHTML = script.src;
}
</script>
</head>
<body>
<div id="debug"></div>
</body>
</html>
こんなもんだろう。では、いざ実行!
Д<な に ご と で す か
土曜深夜にここまできてから日曜丸々費やして調べましたが、全く解決できていません。(現在形)
- ページ・スクリプト共UTF-8指定をしても文字化けする(PipesからくるのはShift-JISだから?)
- 表示されたりされなかったり(Googleはまだ安定しているけれど、タブを再生成しないとだめ)
- いろいろやっていると文字化けせず正常に表示されることがたまにあるが、たいてい一度きり
上記のテストコードは経験を元に最小化しています。
後ちょっとでいけそう!という状態が続いたため、引き際を見誤りました。
方向は悪くなさそうなので、この路線で少し幅を広げて調べてみようと思います(。ω。キュ~。