開発日誌-20160517-別冊-ソースの入手 のバックアップ(No.1)


はじめに

このWikiを編集するページのソースを読むと、タグ挿入ボタンをクリックしたときには

pukiwiki_tag('size');

といった関数呼び出しが発生しています。

これの実体がどこにあるのをブラウザ越しに捜すのは骨が折れるので、ソースコードを入手してgrepしました。ソースの入手方法はちょっと煩雑なので、下記に詳述します。

結論から言うと、この関数の実体は

の2箇所で、どちらが呼ばれるのかは skin/default.js でブラウザを自動判別して決定しています。

gecko.jsでの実装

Gecko系(ポピュラーなブラウザでいうとFirefox、Chrome、Opera、Safariなど)では、

  • var t = document.getElementById('text1');

のように入力欄オブジェクトを取得して、

  • t.selectionStart
  • t.selectionEnd

という2つのプロパティを読み書きすることができます。入力されている文字列の全文は t.value で読み書きできるので、

  • 取得する際は、t.value.substring ( t.selectionStart, t.selectionEnd ) とすればOKです。
  • 選択範囲を差し替えるには、まず差替後の全文をt.value に (選択範囲より前の文字列) + (差替後の文字列)

ソースの入手方法

ソースの所在地は次の通り:

  • 公式サイトのダウンロードページから、1.4.7plus-u2-i18n rev1726というバージョンが入手できます。
  • このページの末尾の「開発リリース」はリンク切れになっています。トップページには2011年12月19日の日付で「XSS脆弱性の修正─i18n」とありますが、その差替ファイルもリンク切れになっています。
  • ところが、そのトップページには2012年3月5日付で「githubに仮移行」とあり、そこに書かれているアドレスを開くと最新版が入手できます。
    • ファイル・フォルダ一覧から「plugin」フォルダをさがすと「XSS脆弱性の修正(JVN#76515037)」とあり、これをクリックすると、2011念12月17日に修正が行われていることが分かります。
    • Gitについてよくわかっていない人は「Download ZIP」をクリックしてzipファイルを落とし、それを解凍すればOKです。