過去ログ

                                Page      22
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼選択中のURLを待ちながら開く(js)  YAma(作成sim氏) 02/8/2(金) 10:14

 ───────────────────────────────────────
 ■題名 : 選択中のURLを待ちながら開く(js)
 ■名前 : YAma(作成sim氏)
 ■日付 : 02/8/2(金) 10:14
 -------------------------------------------------------------------------
   //選択中のURLを待ちながら開く
//選択されたテキストに含まれるURLを開きます(先頭のhを省いたものにも対応)。
//URLが複数ある場合は、それぞれのURLを一つずつ開き終わるまで待って
//開いていきます。広告ポップアップなどが開く問題には対処して
//いませんので、連続で開いてしまう場合もあります。
//書いた人:sim

//読み込み完了をチェックする際のチェック間隔は
//次のwait_timeを変更することでミリ秒単位で変えられます。
var wait_time = 1000;

var bugweb = new ActiveXObject("BugWeb.BugBrowserAPI");
var docObj; //ドキュメントビューオブジェクト
var selText; //選択範囲の文字列
var re = new RegExp("(h?ttp|h?ttps)://[-\\w\\.~\\*'\\(\\);/\\?:@&=\\+\\$,%#]+", "g"); //URI抜き出し用正規表現:正規表現エスケープ用の\をさらにエスケープする。
var regexp_result;
var uris = new Array(); //抜き出したURIを含む配列

 if (bugweb == null ){
  WScript.Echo("BugBrowserオブジェクトが取得できません。");
  WScript.Quit();
 }

 //ドキュメントビューオブジェクト取得
 docObj = bugweb.CreateDocumentViewObject(bugweb.ActiveView);
 if ((docObj == null) || (docObj.Busy == true)) {
  docObj = null;
  bugweb.ShowMessage("ドキュメントビューオブジェクトエラーです。");
  bugweb = null;
  WScript.Quit();
 }

 //ホントはここにフレーム選択を入れたい。選択範囲はフレームの数に限らず
 //ドキュメント中に1個だけぽいので、それを使えばできるかなーと。

 //選択範囲がテキストでなければそのまま終了
 if ((docObj.document.selection == null) || (docObj.document.selection.type != "Text")) {
  docObj = null;
  bugweb = null;
  WScript.Quit();
 }

 //正規表現でURLを抜き出して配列に追加
 selText = docObj.document.selection.createRange().text;
 docObj = null;

 while ((regexp_result = re.exec(selText)) != null) {
  //先頭のhを補完
  if (regexp_result[0].substr(0, 3) == "ttp")
   regexp_result[0] = "h" + regexp_result[0];
   uris.push(regexp_result[0].toString());
 }

 //読み込み完了を待ちながら開く
 var i = 0;
 for (i in uris) {
  bugweb.NavigateNew(uris[i]);
  docObj = bugweb.CreateDocumentViewObject(bugweb.DocumentView(bugweb.DocumentCount - 1));
  try {
   while (docObj.NavigateStatus != 0) {
    WScript.Sleep(wait_time);
   }
  } catch (e) {
   bugweb.ShowMessage("読み込み完了待機中のエラーです。\n" + e.toString());
   docObj = null;
   break;
  }
  docObj = null;
 }

 bugweb = null;

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 22