今日のフェンリルデベロッパーズブログに載っているブックマークレットを弄る
タイトルは釣りくさいかも
今週はあまりやる気が起きてないので手抜きな内容ですw
単純な手直し
まず、どんなブックマークレットかと言いますと、iTunes App Storeのカスタマー評価を取得するものです。
詳しいことはデベロッパーズブログを見てください。
ブックマークレットを転載(Sleipnir Mobile の日本での評価のもの)
javascript:(function(){window.apcb=function(j){t=j.results[0];alert('今までの評価: '+t.averageUserRating+' / '+t.userRatingCount+'件\n最新版の評価: '+t.averageUserRatingForCurrentVersion+' / '+t.userRatingCountForCurrentVersion+'件')};var s=document.createElement('script');s.type='text/javascript';s.src='http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup?id=404732112&entity=software&country=jp&callback=apcb';document.body.appendChild(s);})();
これは変数のスコープに問題ありますね。
例えば、適当なページで上記ブックマークレット実行後に以下のブックマークレット実行すると情報が取得できます。
javascript:(function(){alert('今までの評価:%20'+t.averageUserRating+'%20/%20'+t.userRatingCount+'件\n最新版の評価:%20'+t.averageUserRatingForCurrentVersion+'%20/%20'+t.userRatingCountForCurrentVersion+'件');})();
という訳で、その辺の部分を修正したものです。ついでに半角スペースも置換してみました。*1
javascript:(function(){window.apcb=function(j){var%20t=j.results[0];alert('今までの評価:%20'+t.averageUserRating+'%20/%20'+t.userRatingCount+'件\n最新版の評価:%20'+t.averageUserRatingForCurrentVersion+'%20/%20'+t.userRatingCountForCurrentVersion+'件')};var%20s=document.createElement('script');s.type='text/javascript';s.src='http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup?id=404732112&entity=software&country=jp&callback=apcb';document.body.appendChild(s);})();
柔軟に利用できるようにしてみる
アプリと国によってスクリプトを適宜書き換えるのもなんなんで、iTunes App Storeのアプリ個別ページにて実行すると、そのアプリと国にあわせたカスタマー評価を出すようにしてみた。
javascript:(function(){if(location.hostname=='itunes.apple.com'&&location.pathname.match(/^\/\D+\/app\/.*id\d+/)!=null){window.apcb=function(j){var%20t=j.results[0];alert('今までの評価:%20'+t.averageUserRating+'%20/%20'+t.userRatingCount+'件\n最新版の評価:%20'+t.averageUserRatingForCurrentVersion+'%20/%20'+t.userRatingCountForCurrentVersion+'件')};var%20p=location.pathname.split('/'),s=document.createElement('script');s.type='text/javascript';s.src='http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup?id='+p[p.length-1].replace('id','')+'&entity=software&country='+p[1]+'&callback=apcb';document.body.appendChild(s);}else{alert('アプリ個別ページで実行してください');}})();
※Sleipnirだと動きません。Chromeだと動きます。他のブラウザは試してないです。
ただ、一部の国だと上手く動かないっぽいんで、国はプロンプトで入力可能にしてみた。*2
javascript:(function(){if(location.hostname=='itunes.apple.com'&&location.pathname.match(/^\/\D+\/app\/.*id\d+/)!=null){window.apcb=function(j){var%20t=j.results[0];alert('今までの評価:%20'+t.averageUserRating+'%20/%20'+t.userRatingCount+'件\n最新版の評価:%20'+t.averageUserRatingForCurrentVersion+'%20/%20'+t.userRatingCountForCurrentVersion+'件')};var%20p=location.pathname.split('/'),c=prompt('Enter%20Country',p[1]),s=document.createElement('script');s.type='text/javascript';s.src='http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup?id='+p[p.length-1].replace('id','')+'&entity=software&country='+c+'&callback=apcb';document.body.appendChild(s);}else{alert('アプリ個別ページで実行してください');}})();