Luna-cryin' >> Laboratory > JavaScript & VBScript >

IE ContextMenu拡張
#001:選択範囲またはクリップボード内のURLっぽい文字列を開く+α


機能説明

このスクリプトを呼び出すのが

 リンク上ならそのリンク先を
 選択範囲上ならその中のURLっぽい文字列を
 ページ上の何もないところならページ自体もしくはクリップボード内のURLっぽい文字列を

新しいウィンドウで開きます(http,https,ftp,mailtoに対応)
複数のURLが存在した場合全部開きます(設定で開く数を制限可)

まぁ、ありがちなスクリプトですが一応特徴と思われるものを

  • ttp://, tp://などのh抜きURLでも安心
  • URLを開くときに指定したブラウザを使うことができる
  • URLが2ちゃんねる(2ch.net,bbspink.com)のものならそれを2ch専用ブラウザで開くことも
  • 選択範囲から取得したURLをクリップボードに保存できる
  • 取得したURLで同じものがあったときは重複分を削除
  • www.hoge.com/foo[001-123].barのようなURLをwww.hoge.com/foo001.bar、www.hoge.com/foo002.bar ・・・ www.hoge.com/foo123.barと展開して取得
  • アーカイブファイルまでのURLならダウンローダーでダウンロードすることも可
  • エラー処理はきちんとやっている…といいなぁ


Download

>> ie001_jump2url100b.zip

(version 1.0.0 b04 - latest release 2003/01/07)


ベータ、いわゆる開発中バージョンです。
何事にも動じない人柱テスターよ、いざ集え(ぇー


更新履歴

Ver 1.0.0 b04 (2002/01/07)
  • URL がアーカイブファイルまでのものの場合、指定したダウンローダーを使ってダウンロードできるようにした
  • コマンドラインオプションを 2ch ブラウザやダウンローダーにも指定できるようにした
  • アルファベットの大文字が使われているURLを正しく取得できるように修正
Ver 1.0.0 b03 (2002/10/12)
  • アーカイブファイルまでの URL ならダウンロード支援ソフト Irvine を使ってダウンロードするかどうかの設定追加。
    Irvine のデフォルトキューフォルダをカレントにしてダウンロードします
  • 開くものがメールアドレスの場合、以前は新しいウィンドウを開かずにメール作成画面を出していたのが
    開く数が 1 つのときだけだったがこの制限を無くした。
  • リンク上で呼び出した場合の開く URL に http だけでなく https、ftp、mailto も開くように修正
  • クリップボード内に URL っぽい文字列がなかった場合、
    今開いているページを新しいウィンドウ or 指定したブラウザで開くかどうかの確認ウィンドウを出すようにした
  • Irvine で開く、または、2ch 専用ブラウザを使う設定時、
    これらを使用して何らかのエラーが発生したら以後の URL は指定したブラウザを使って開くか
    スクリプト呼び出し元のブラウザで開く(flg_opnBrz の設定による)ようにした。
    また、指定したブラウザを使う設定時、これを使用して何らかのエラーが発生したら
    以後の URL はスクリプト呼び出し元のブラウザで開くようにした。
  • URL が一つでそれがメールアドレスまたはアーカイブなものなら新しくウィンドウを開かずに
    それぞれメーラー起動、ファイル保存ダイアログを出していたのをやめた
  • その他微妙な修正
Ver 1.0.0 b02 (2002/10/08)
  • www.hoge.com/foo[001-123].bar などを www.hoge.com/foo001.bar、www.hoge.com/foo002.bar ・・・ www.hoge.com/foo123.bar と展開するようにした
  • 指定したブラウザで URL を開く際にコマンドラインオプションを渡せるような設定を追加
  • ブラウザまでのパスが存在しないものだったら警告ウィンドウを出すようにした
  • 確認ダイアログで開く URL を一つずつ確認してそのつど開くかどうか選択できるような設定追加
    これに伴い変数chkをurlChkと名称変更と共に機能を拡張。前バージョンを使用している人は再設定してください
  • ブラウザまでのパスが存在しない、もしくはフルパスで記述されていない場合警告ウィンドウを出しその後の処理をスキップするようにした
  • その他微妙な修正
Ver 1.0.0 b01 (2002/10/03)
  • 一般公開
> 開発ログ


設定

jump2URL.htmlの各種設定

var urlChk = 2;
選択範囲orクリップボードから取得したURLの確認
 0 : しない
 1 : URLを開く前にダイアログで確認をする
 2 : 確認ダイアログで一つずつURL文字列をチェックしてから開く
var lim_win = 10;
開く窓の限度数
var flg_sendURLsToCB = 1;
URLの数が開く窓の限度数を超えた場合、超えた分のURLをクリップボードへ送る
また、開く前に開くURLを確認する設定(urlChk=1)のときで確認ダイアログでキャンセルボタンを押したときには取得したURLすべてをクリップボードへ送る
Yes:1 No:0
var flg_opnBrz = 0;
取得したURLを下記brzPathで指定したブラウザに渡す
Yes:1 No:0
var flg_opn2chBrz = 1;
取得したURLが2chの場合の処理

 0 : 2ch専用ブラウザを使わない
 1 : 下記brzPath_2chで指定した2ch専用ブラウザを使う
 2 : j2ch-cacheを使う(事前にサーバーを起動させておくこと)
 3 : jBV。を使う(事前にサーバーを起動させておくこと)
var flg_getFileByDLder = 1;
取得したURLが拡張子がアーカイブなファイルまでのもののときの処理

 0 : ダウンローダーを使わない
 1 : Irvineを使う(Irvine.Api使用)
 2 : 下記brzPath_dlで指定したダウンローダーを使う
var brzPath = "C:\\dl_soft\\DonutP\\DonutP.exe";
取得したURLを開くブラウザの絶対パス(flg_opnBrz=1で有効)
var brzPath_2ch = "C:\\dl_soft\\katjusha\\kage.exe";
2ch専用ブラウザの絶対パス(flg_opn2chBrz=1で有効)
var brzPath_dl = "C:\\cygwin\\bin\\wget.exe";
ダウンローダーの絶対パス(flg_getFileByDLder=2で有効)
var cmdLineOpt = "";
指定したブラウザ起動時に渡すコマンドラインオプション
var cmdLineOpt_2ch = "";
指定した2chブラウザに渡すコマンドラインオプション
var cmdLineOpt_dl = "-N -c --directory-prefix=C:\\downloads";
指定したダウンローダーに渡すコマンドラインオプション
※注)
パス区切り\を\\とすること

指定できるブラウザはコマンドラインから
「アプリケーションまでの絶対パス(半角スペース)URL1(半角スペース)URL2…」と
複数のURLを渡して起動して渡したURLをすべて開くことができるものです。
大抵のタブ型ブラウザは大丈夫かと。
この方法で起動できない場合はurlChk=2にして一つずつ確認しながらURLを開くようにしてください。
しかし2ch専用ブラウザに関しては上記の方法が可能なものが今のところなさそうなので
URLを一つずつ渡すようにしてあります

また、渡されたURLごとに別々のウィンドウで開くように、ブラウザが二重起動をしないように
あらかじめブラウザ側で設定しておいてください

IEコンテクストメニューへ登録

IEMenuExtでの設定
  1. ブラウザ起動していたら終了させる
  2. 追加のボタンをクリッククリック
  3. スクリプトの場所を選択して表示方法で「通常時」「テキスト選択時」「リンク上」にチェックを入れOKボタンを押す
  4. Updateのボタンをぽちっとな
  5. (゚д゚)ウマー
※IEのコンテクストメニューの拡張はレジストリの設定を変えているので取扱注意

その他は

フィーリングと愛で何とかしてください(ぇ


動作確認

OS : Windows 2000 sp3 / XP sp1
Browser : Internet Explorer 6.0 sp1
WSH : WSH(JScript) 5.6


「指定したブラウザで開く」の確認

ブラウザ : MDIBrowser, Sleipnir, DonutP
2ch専用ブラウザ : OpenJane Doe、かちゅ〜しゃ+kage、Abone
ダウンローダー : wget


問題点

指定したブラウザを使う設定(flg_opnBrz=1またはflg_opn2chBrz=1)にしてこのスクリプトをブラウザ から呼び出そうとするとウィルス駆除ソフトが反応することが(汗
Norton AntiVirus 2001、2002で確認。
どうも指定したアプリケーションを起動させるWScriptに反応している模様。
当然のことながら当スクリプトの初期状態ではシステムに深刻な被害を与えるようなスクリプトを組んでおりません。
設置者自身がブラウザまでのパスを指定する変数 opnBrz,opnBrz_2ch に変なアプリやコマンドを指定しない限り安全です。

どうしても気になる人は指定したブラウザで開くのをあきらめてください。(flg_opnBrz=0、flg_opn2chBrz=0,2,3 にする)
2chのURLを2ch専用ブラウザで複数開くとき、一つ一つスレ取得が完了するのを待たなければならない。しかも目視で(滅
2ch専用ブラウザ側で複数のURLを同時に渡して起動できて複数のスレの同時取得ができないことにはどうにも…

まぁ一気にがばっと開きたいならj2ch-cacheかjBV使いなさいってこった。
たまにURLが開けなかったりエラーが出たりするYO!ヽ(`Д´)ノウワァァァン
完璧に謎。
再起動させたりIE本体や別のタブ型ブラウザを使うと何事もなかったかのように正常に動作するし…


>>WebフィルタリングツールProxomitronのWebPage Filterで”Kill Pop-up Windows”が有効で
かつJavaScriptが有効になっているとこの現象に見舞われます(IE6.0sp1で確認)
いろいろと対策を立ててみたもののダメそうなので
上記のフィルタをoffにするかJavaScriptを無効にして問題を回避してください。


今後の予定

今のところ無し。
不具合がなければそろそろ正式版をリリースしようと思うわけで。


誰か助けて(ぇ
  • 指定したアプリのパスが存在しない場合の状態を取得したいんだけどどうすればいいのさ
     →try...catch文使うことで間接的に解決の予感
  • なぜWScript.Sleep()が使えない?
     →WScript.exe経由でないから?
  • アプリが起動しているかどうかの情報って取得できないの?


雑記

・ 分岐&コメントだらけでソースの汚なさ炸裂。。(;´Д`)
・ ムダに機能拡張しすぎた予感
・ 「仕様」という言葉はとても便利だと思った(ぉ
・ MSDNのサイト重すぎ
・ K2Editorマンセー
・ OpenJane Doeへ寝返りますた



楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル