SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IEのコンテキストメニュー用インストーラーとソフトの作成

IEで選択した部分のソースコードを右クリックメニューで編集する(後編)

IEのコンテキストメニュー用インストーラーとソフトの作成


まとめ(完成プログラム)

 「コンテキストメニュー用ソフト」のプログラミングは終了しました。すべての関数を組み込んだソースコードの全文は以下のようになります。

「コンテキストメニュー用ソフト」全文
<meta http-equiv="Content-type" 
      content="text/html; charset=Shift_JIS">
<html>
  <head>
    <title>ソースコードを表示&削除&書き換え</title>
  </head>

  <script language="JavaScript">
    //===============================================================

    //==== 変数の初期化 =============================================
    // 
    var obj = external.menuArguments;    // 引数のオブジェクトの参照
    var objDoc = obj.document;           // 元Webページのドキュメント
    var objSel = obj.document.selection.createRange();    // 選択範囲

    var strSelHtml  = objSel.htmlText;    // 選択中HTMLテキスト
    var strSelPlain = objSel.text;        // 選択中テキスト
    var strAllHtml  = objDoc.body.innerHTML;    // 全体HTMLテキスト
    var strAllPlain = objDoc.body.innerText;    // 全体テキスト

  //=================================================================
    //========================================
    // 
    //    選択範囲
    // 
    //========================================
    //    引数 :なし
    //    返り値:なし
    //    仕様 :フォームに、取得した値を表示する。

  function ViewSel () {
    //==== フォームに表示 ===========================================
    // 
    f.SelHtml.value  = strSelHtml;        // 選択中HTMLテキスト
    f.SelPlain.value = strSelPlain;        // 選択中テキスト
    f.AllHtml.value  = strAllHtml;        // 全体HTMLテキスト
    f.AllPlain.value = strAllPlain;        // 全体テキスト
  }

  //=================================================================
    //========================================
    // 
    //    選択範囲の削除
    // 
    //========================================
    //    引数 :なし
    //    返り値:なし
    //    仕様 :選択範囲を削除する。

  function DelSel () {
    //==== 選択範囲を削除 ===========================================
    // 
    objSel.text = "";        // 選択中テキストを空にする
  }

  //=================================================================
    //========================================
    // 
    //    選択範囲を書き換え
    // 
    //========================================
    //    引数 :なし
    //    返り値:なし
    //    仕様 :選択範囲を書き換える。

  function RepSel () {
    //==== 書き換え文字列の取得 =====================================
    // 
    var strRep = strSelPlain;
    strRep = prompt( "検索文字列を入力してください", strRep );
    if ( ! strRep ) { return; }

    //==== promptの結果にごみが付く問題の回避処理 ===================
    // 
    strRep = escape( strRep );
    strRep = strRep.replace( /%0.*$/, "" );
    strRep = unescape( strRep );

    //==== 選択範囲を書き換え =======================================
    // 
    objSel.text = strRep;        // 選択中テキストを書き換える
  }
  </script>

  <body leftmargin=16 topmargin=16 scroll="no" onLoad="ViewSel()">
    <small>

      <form name="f">

        ■ 選択中HTMLテキスト<br>

        <textarea name="SelHtml" rows=5 cols=63></textarea><br>
        <br>

        ■ 選択中テキスト<br>

        <textarea name="SelPlain" rows=5 cols=63></textarea><br>
        <br>

        ■ 全体HTMLテキスト<br>

        <textarea name="AllHtml" rows=5 cols=63></textarea><br>
        <br>

        ■ 全体テキスト<br>

        <textarea name="AllPlain" rows=5 cols=63></textarea><br>
        <br>

        <div align="right">
          <input type="button" value="選択範囲の削除" 
                 onClick="DelSel()">
          <input type="button" value="選択範囲の書き換え" 
                 onClick="RepSel()">
          <input type="button" value="閉じる" 
                 onClick="window.close()">
        </div>
      </form>

    </small>
  </body>
</html>

 利用の仕方もまとめておきます。

  1. 前編で作成した「コンテキストメニュー・インストーラ」を実行して、IEのコンテキストメニューに「コンテキストメニュー用ソフト」を登録する。
  2. IEを起動している場合は、いったん終了してIEを再度起動する。
  3. ソフトを実行するWebページを開く。
  4. Webページの文字列を選択する。
  5. 選択した場所の上にマウスカーソルを置き、右クリックをしてコンテキストメニューを表示させる。
  6. コンテキストメニューから、「ソースコードを表示&削除&書き換え」を選択する。
  7. 選択した範囲のソースコードや文字列などが表示される。
    1. 選択した範囲を削除したい場合は[選択範囲の削除]ボタンをクリックする。
    2. 選択した範囲を書き換えたい場合は[選択範囲の書き換え]ボタンをクリックする。
  8. [閉じる]ボタンでソフトを終了する。

おわりに

 IEのコンテキストメニュー用のソフトは、非常に手軽に作成できます。また、IEを利用している場合は、使う場面も多いために重宝します。拙サイトでは、この技術を利用して作ったいくつかのソフトを公開しています。これらのソフトのソースコードは自由に見ることができますので、こちらも参考にしてください。アイデア次第で、さまざまな機能を追加できることが分かると思います。

 皆さんも自分専用の簡単なソフトを作成し、うまく活用していただければと思います。

参考資料

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
IEのコンテキストメニュー用インストーラーとソフトの作成連載記事一覧
この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/875 2008/08/21 21:12

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー