SHOEISHA iD

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

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

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

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

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

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


変数の初期化

 次はJavaScriptを使ってのプログラミングになります。ここでは、コンテキストメニューを開いた元のWebページから、必要な情報を取得します。ここで取得するのは、コンテキストメニューを開いた元のWebページのデータです。以下の4種類のデータを、それぞれデータのために用意した変数に代入します。

4種類のデータと対応する変数
データ 変数
選択している範囲のHTMLタグ付き文字列 strSelHtml
選択している範囲の文字列 strSelPlain
Webページ全体のHTMLタグ付き文字列 strAllHtml
Webページ全体の文字列 strAllPlain

 「コンテキストメニュー用ソフト」を作成する場合、多くの場面でこれらのデータは参照されます。この「変数の初期化」では、これらの取得方法を説明していくことにします。

 以下、ソースコードです。前の章で作成したscriptタグのエリアに、ソースを追加していくことになります。このプログラムの書き方は、通常のHTMLファイル内に記述する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;    // 全体テキスト

 まず、最も重要なのは、external.menuArgumentsというオブジェクトです。コンテキストメニューを開いた元のWebページへのアクセスは、すべてこのオブジェクトを通して行うことになります。最初の行では、このexternal.menuArgumentsを表わす変数として、objを初期化しています。

 次に2つのオブジェクトを準備します。「元Webページのドキュメント」であるobj.documentを表わす変数としてobjDocを、「選択範囲」にあたるobj.document.selection.createRange()を表わす変数としてobjSelを初期化します。以降、このobjDocobjSelという2つの変数を利用して、必要な情報を取得していきます。

 「選択している範囲のHTMLタグ付き文字列」はobjSel.htmlTextで取得できます。また、「選択している範囲の文字列」はobjSel.textで取得できます。

 最後にWebページ全体の文字列も取得しておきます。「Webページ全体のHTMLタグ付き文字列」はobjDoc.body.innerHTMLで取得できます。また、「Webページ全体の文字列」はobjDoc.body.innerTextで取得できます。選択している範囲から文字列を取得するのとは値の取り方が違うので、若干注意が必要です。

「選択範囲の表示」関数

 ここでは、先ほど取得した文字列をテキストエリアに表示させます。bodyタグのonLoad属性で、このViewSel()関数は呼び出されて実行されます。onLoad属性は、タグで囲まれた領域が読み込み終わった際に実行されるスクリプトを記述する部分です。

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

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

 フォームfの、各テキストエリアのvalueに、「変数の初期化」で取得した文字列を代入しています。

次のページ
「選択範囲の削除」関数

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

IEのコンテキストメニュー用インストーラーとソフトの作成連載記事一覧
この記事の著者

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー