gist + Reveal.js = GistReveal
Published at 2013-09-11
以前Gistを簡易スライドにするGistSlideを作ったという記事を書いた。
Reveal.jsで作られたスライドをたくさん見るようになってきた。gistにReveal.jsを適用出来ても便利なんじゃないかと思い、ChromeのExtensionを作った。
インストールしたら、スライドにしたいgistを表示中にボタンをクリックするだけでスライドになる。
Reveal.jsのリソースを動的にページに
gistのページにreveal.jsのリソースをロードさせることを念頭に置くと、JavaScriptはまだしも CSSを常に適用させていると当然レイアウトが壊れてしまうので、クリックを契機にページにCSSをロードさせなければならない。
chrome.tabs.insertCSS(tab.id, {file: '/hoge.css'});
CSSはこれでOKだが、CSSの中で定義されているフォントへのURLは相対パスで記述されているため、そのままだとhttp://gist.github.com/.../hoge.ttf
のようになってしまい、Extension内のリソースをロードしにいくことができない。
そこでchrome.extension.getURL()
でExtension内の絶対パスを使って、CSSを適用させた。
var fontDefinition =
'@font-face {' +
'font-family: "League Gothic";' +
'src: url("' + chrome.extension.getURL("/font/hoge.ttf") + '");' +
'font-weight: normal;' +
'font-style: normal;' +
'}';
chrome.tabs.insertCSS(tab.id, {code: fontDefinition});
が、適用されない。chrome-extension://
スキーマでもローカルリソースとは認識されないためだった。ロードするフォントを、manifest.json
のweb_accessible_resources
に追加。
{
"web_accessible_resources": [
"/font/hoge.ttf"
]
}
これでOKだった。
タイトルと URL をコピーしました