honto.jpからamazon.co.jpのカスタマーレビューのサイトを開く

基本的に honto.jp を使って電子書籍を買っている @riocampos です。紙の本を買った上で電子書籍が半額を買うのが目的です*1
ただし honto.jp の弱点はレビューが弱いところ。booklog と連携しているけど、やはり弱い。ということで、気になった本を読んだ人の意見がたくさん載っている amazon.co.jp の同書籍のサイトを見てみたい、と思うわけです。なので簡単に honto.jp から amazon サイトを開きたい。

先例

honto から Amazon.co.jp のカスタマーレビューを開くブックマークレット - edp02の日記
これだと一つ目の bookmarklet では書名検索のみであってカスタマーレビューまで開かないのです。
ということで ISBN(正確にはASIN)に基づいたカスタマーレビューの URL を生成して開くようにすれば良いのでは、と思いました。

つくってみた

javascript:void(function(d,w){r=d.evaluate('//li[contains(.,"ISBN")]/text()',d,null,XPathResult.STRING_TYPE,null);if(r&&r.stringValue){o=r.stringValue.substr(5).trim();if(~o.indexOf('-')){i=o.split('-').slice(1,4).join('')}else{i=o.substr(3,9)}a=i.split('');s=0;for(j=0;j<9;j++){s+=parseInt(a[j])*(10-j)}r=11-s%parseInt('11');if(r==11){r='0'}else{if(r==10){r='X'}else{r+=''}}t=i+r;w.open('https://www.amazon.co.jp/product-reviews/'+t)}else{w.alert('ISBN Not Found.')}})(document,window);

honto.jp には ISBN-13 が載っているのですが ASIN に対応する ISBN-10 が載っていません、ということで bookmarklet の中で ISBN-13 から ISBN-10 に変換しています。そして ISBN-10(ASIN)に対応したカスタマーレビューのサイトの URL は[]https://www.amazon.co.jp/product-reviews/[]{ASIN} ですので、この URL を開くようにしています。
なお、ISBN が載っていない本のサイトもあるので、その場合には「ISBN Not Found.」とアラートが出ます。

なぞ

MacChrome でこの bookmarklet が動作するのに、iOSChrome で動作しないのが謎。
さらに、MacSafari で動作しないのに、iOSSafari で動作するのも謎。なんでだ。

*1:講談社のマンガで半額にならないのが時々あるのが辛い>_