以下のようなコードを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を使いたくてその付加的恩恵としてシンタックスハイライトを使うのならいいと思うけど。