読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

Iron-RouterとWeibo share button

Meteorアプリに新浪微博のシェアボタンを追加するに以下のようにします。
1. サーバーサイドで

WebApp.addHtmlAttributeHook (request) -> 'prefix="wb: http://open.weibo.com/wb"'

(CoffeeScriptで書いてますが、同様の内容をJavaScriptで書いてもOKです)
2. テンプレートで

<head>
    <title>ironrouter</title>
    <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js" type="text/javascript" charset="utf-8"></script>
</head>

<template name="example">
    <wb:share-button appkey="appKey" addition="number" type="button"></wb:share-button>
</template>

ところがこの方法、Iron-Routerを使うとなぜか表示されません。
そこで、Iron-Router使う場合には、
クライアント側で

window.addEventListener 'load', -> WB2.initCustomTag()

を入れておくと、うまく行きます。
未公開のinitCustomTagという関数を使うので、筋が悪いかもしれません。それが気になる人は、テンプレートから以下の一行

    <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js" type="text/javascript" charset="utf-8"></script>

を削って、

window.addEventListener 'load', ->
    $(document.head).append '<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js" type="text/javascript" charset="utf-8"></script>'

としましょう。
(記述の省略のため、jQueryを使いました)