まとめ(完成プログラム)
「コンテキストメニュー用ソフト」のプログラミングは終了しました。すべての関数を組み込んだソースコードの全文は以下のようになります。
<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>
利用の仕方もまとめておきます。
- 前編で作成した「コンテキストメニュー・インストーラ」を実行して、IEのコンテキストメニューに「コンテキストメニュー用ソフト」を登録する。
- IEを起動している場合は、いったん終了してIEを再度起動する。
- ソフトを実行するWebページを開く。
- Webページの文字列を選択する。
- 選択した場所の上にマウスカーソルを置き、右クリックをしてコンテキストメニューを表示させる。
- コンテキストメニューから、「ソースコードを表示&削除&書き換え」を選択する。
- 選択した範囲のソースコードや文字列などが表示される。
- 選択した範囲を削除したい場合は[選択範囲の削除]ボタンをクリックする。
- 選択した範囲を書き換えたい場合は[選択範囲の書き換え]ボタンをクリックする。
- [閉じる]ボタンでソフトを終了する。
おわりに
IEのコンテキストメニュー用のソフトは、非常に手軽に作成できます。また、IEを利用している場合は、使う場面も多いために重宝します。拙サイトでは、この技術を利用して作ったいくつかのソフトを公開しています。これらのソフトのソースコードは自由に見ることができますので、こちらも参考にしてください。アイデア次第で、さまざまな機能を追加できることが分かると思います。
皆さんも自分専用の簡単なソフトを作成し、うまく活用していただければと思います。
参考資料
- ブラウザの標準コンテキスト メニューに項目を追加する(InetSDK)
- msdn - menuArguments Property - MSDNのmenuArgumentsについての説明
