今日は、JRA公式Webサイトのリンクの挙動を書き換えるものを作っていました。
目的
- 対象: JRA公式
このWebサイト、官公庁なので仕方ないですが、少し古いつくりです。
通常のハイパーリンクと、JavaScriptで処理されるリンクが混在しています。通常のリンクは良いのですが、JavaScriptで処理されるリンクは、右クリックから「新しいタブで開く」を使おうとしても、新しいタブでは正常に開けず、エラーが発生します。さらに残念なことに、見た目ではこの2種類のリンクは区別がつきません。
関連する情報を並べることができないので、タブ一枚で進んだり戻ったりしながら閲覧するのに疲れたので、少し小細工するための拡張を作ることにしました。
構造
JavaScriptで処理されるリンクは、doActionという関数にパラメータが渡されるようになっています。中を見るとただのアンカーではなく、ページ内の隠しフォームにパラメータを入れて、GETではなくPOSTでデータをSubmitすることにより、次のページを開いているようです。実装
Google先生に尋ねたところ、form.targetに開く先を指定できることがわかりました。リンクの開き方がわかれば、あとは通常動作と「新しいタブで開く」動作で分岐すればよさそうです。とりあえず、Ctrlキーを押しているかどうかを判定し、押されている場合は新しいタブで開くことにしました。
ついでに、あまり使わないけれども、shift同時押しでウィンドウが開くように。適当にターゲット名をでっちあげて、毎回違うウィンドウが増える仕様です。
- 完成品:JRALink_pack.zip
雑感
Chrome拡張、くだらないものが、それに見合った労力で作れるのが良いですね。ウェブストアに公開するような場合は、細かい作りこみが増えて大変なのかもしれませんが、自分用に作る分にはとても気楽です。難点があるとすれば、JavaScriptは動的型付け言語のため、簡単なコードですらエラー箇所特定が大変なところです。Chromeのデバッグ環境はかなり強力ですが、それでもあまり大きなものは作りたくありません。
0 件のコメント:
コメントを投稿