読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

Firefox3でttp://から始まるURLに飛べるようにする(navigator.registerProtocolHandler)

ttp://google.co.jp/等の不完全なリンクをロケーションバーにペーストしてサイトに移動したり、リンクをクリックして移動できるようにする。
ttp_processor.cgi等の名前にして保存し、CGIとして動かす。

#!/usr/bin/env ruby
require "webrick/cgi"

class TTPProcessor < WEBrick::CGI
  def do_GET(req, res)
    res.content_type = "text/html;charset=utf_8"
    if req.query.has_key?("url")
      res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, 'h' + req.query["url"])
    else
      res.body = DATA.read
    end
  end
end

TTPProcessor.new.start

__END__
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <title>ttp processor</title>
    <script type="text/javascript"><!--
    window.onload = function () {
      var register_protocol = document.getElementById('register_protocol');
      var warning;
      if (typeof navigator.registerProtocolHandler !== 'function') {
        warning = document.createElement('strong');
        warning.appendChild(
          document.createTextNode('(未対応です)')
        );
        register_protocol.parentNode.insertBefore(warning, register_protocol.nextSibling);
      } else {
        register_protocol.addEventListener(
          'click',
          function () {
            navigator.registerProtocolHandler(
              'ttp',
              location.protocol + '//' + location.host + location.pathname + '?url=%s',
              'Use http alias'
            );
          },
          false
        );
      }
    };
    --></script>
  </head>
  <body>
    <h1>ttp processor</h1>
    <p>ttp://から始まるURLをFirefoxで処理できるようにする。</p>
    <button id="register_protocol">この機能を登録</button>
    <h2>正しく機能するかチェックする</h2>
    <p>
      登録が完了したら、<a href="ttp://www.google.co.jp/">ttp://www.google.co.jp/</a>をクリックしてwww.google.co.jpに飛べるかどうか確認する。
    </p>
  </body>
</html>