以下のようなコードをwebに貼り付ける。javascriptが有効の場合にはシンタックスハイライトされたコードが表示される。無効の場合はリンクが表示される。
<script type="application/ecmascript" src="https://gist.github.com/1342587.js?file=dom_document_write.js"></script> <noscript> <p><a href="https://gist.github.com/1342587">l's gist: 1342587 — Gist</a></p> </noscript>
具体的には以下のようになる。
githubが提供するシンタックスハイライトはjavascriptのdocument.writeを使っている。そのため、以下に示すhttpレスポンスヘッダのようにContent-Type: application/xhtml+xml;の場合は、ブラウザのjavascriptが有効になっていても表示されない。たとえばこのサイトははこのようなケースに該当するが、少し工夫して表示されるようにしている。
$ wget -S http://za.toypark.in/html/2010/03-09.html --2011-11-06 03:22:07-- http://za.toypark.in/html/2010/03-09.html Resolving za.toypark.in... 202.94.135.219 Connecting to za.toypark.in|202.94.135.219|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Sat, 05 Nov 2011 18:22:09 GMT Server: Apache/2.2.3 (CentOS) Last-Modified: Sat, 05 Nov 2011 18:16:15 GMT ETag: "2769bda-145c-d136f9c0" Accept-Ranges: bytes Expires: Thu, 01 Jan 1970 00:00:00 GMT, -1 Cache-Control: must-revalidate Pragma: no-cache Connection: close Content-Type: application/xhtml+xml; charset=utf-8 Content-Language: ja Length: unspecified [application/xhtml+xml] Saving to: “03-09.html” [ <=> ] 5,699 --.-K/s in 0.01s 2011-11-06 03:22:12 (383 KB/s) - “03-09.html” saved [5699]
本来、noscriptの中見はscriptと同等の情報を提供するべきで、リンクを張るだけはNGだと思うなら、また、何らかのケースでまったく表示されないことを恐れるなら、noscriptタグの外にリンクをはるほうがいい。
<script type="application/ecmascript" src="https://gist.github.com/1342587.js?file=dom_document_write.js"></script> <p><a href="https://gist.github.com/1342587">l's gist: 1342587 — Gist</a></p>
具体例は以下。javascriptが無効化されていても、リンクの場所は見れる。
シンタックスハイライトをするためにgistの提供するjavascriptファイルを使うのはちょっとやりすぎ。シンタックスハイライトしたいだけなら、それ用のjavascriptを使ったほうがいいと思う。gistを使いたくてその付加的恩恵としてシンタックスハイライトを使うのならいいと思うけど。