タイトル | : Re: SaveCache.user.js |
カテゴリ | : Sleipnir用スクリプト全般 |
記事No | : 685 [関連記事] |
投稿日 | : 2010/10/17(Sun) 17:40 |
投稿者 | : sk |
すいません「SaveCache.user.js」ではなく 「OpenFilteredLinks.js」のほうでした。 よろしくお願いします。 /*************************************************************** UserAction_OpenFilteredLinks(2006/10/14) written by sleepy ***************************************************************/ // 設定ここから // フィルタ var strFilter = "*.jpg *.jpeg"; // ワイルドカードでの記述の例(blnRegex = false) //var strFilter = "^(?:.+\.jpg|.+\.jpeg)$"; // 正規表現での記述の例(blnRegex = true) //var strFilter = ""; // 空文字列だとフィルタ入力ダイアログが表示されます // フィルタを正規表現で記述するかどうか(true:正規表現で記述、false:ワイルドカードで記述) var blnRegex = false; // 開くウィンドウが一枚の場合、アクティブにしたい場合は false を true に変更 var blnActive = false; // 選択部分が無かった場合、アクティブなドキュメントの全リンクを対象にするか(true:する、false:しない) var blnGetAll = true; // 設定ここまで var Slpnr = sleipnir.API; String.prototype.chkFilter = chkFilter; ActiveDocument.prototype.selectedElement = GetSelectedElement; var AD = new ActiveDocument(); var links = new Array(); Main(); links = null; AD = null; Slpnr = null; function Main(){ /* アクティブなドキュメントの取得(失敗した場合はスクリプトの実行を中断) */ if (!AD.getDocument(_document)){ sleipnir.Echo("Error:UserAction_OpenFilteredLinks"); sleipnir.Echo(" アクティブなドキュメントの取得に失敗しました。"); sleipnir.Output.Visible = true; return false; } /* strFilterが空の場合はフィルタ入力ダイアログを表示 */ if (!strFilter){ strFilter = Slpnr.InputBox("フィルタを" + (blnRegex?"正規表現":"ワイルドカード") + "で入力してください", ""); } links = AD.selectedElement("A"); OpenTargetLinks(); return true; } function OpenTargetLinks(){ var strTmp = ""; /* 選択部分が無かった場合、アクティブなドキュメントの全てのリンクを対象に */ if (blnGetAll && !links.length){ links = AD.self.all.tags("A"); } /* 複数のウィンドウが開く時には常に非アクティブで */ if (links.length >= 2){ blnActive = false; } /* 選択部分のリンクを開く */ var blnChkSelection = true; if (links.length){ for (i = 0; i < links.length; i++){ if (links[i].href && links[i].href.chkFilter()){ if (strTmp.indexOf(links[i].href) == -1){ Slpnr.NewWindow(links[i].href, blnActive); if (links[i].href == AD.self.activeElement.href){ blnChkSelection = false; } strTmp += links[i].href; strTmp += " "; } } } } /* 選択部分が無かった場合、アクティブなリンクがあればそれを開く */ if (!blnGetAll && blnChkSelection){ if (AD.self.activeElement.href && AD.self.activeElement.href.chkFilter()){ Slpnr.NewWindow(AD.self.activeElement.href, blnActive); } } } function chkFilter(){ var regex; var strRegex = strFilter; if (blnRegex){ regex = new RegExp(strRegex, "i"); return (this.match(regex)); } else { regex = w2r(); return (this.match(regex)); } /* ワイルドカードの場合 */ function w2r(){ strRegex = strRegex.replace(/^\s+/, "").replace(/\s+$/, ""); strRegex = strRegex.replace(/\s+/g, "|"); strRegex = strRegex.replace(/([^\w\*\?|])/g, "\\$1"); strRegex = strRegex.replace(/\*/g, ".+"); strRegex = strRegex.replace(/\?/g, "."); strRegex = "^(?:" + strRegex + ")$"; return (new RegExp(strRegex, "i")); } } /* ActiveDocumentClass */ function ActiveDocument(){ this.self = null; this.elementSyntax = ""; ActiveDocument.prototype.getDocument = GetDocument; function GetDocument(objDoc){ var strSyntax = ""; try { while (objDoc.activeElement.tagName.match(/FRAME$/i)){ for (i = 0; i < objDoc.all.tags(objDoc.activeElement.tagName).length; i++){ if (objDoc.activeElement == objDoc.all.tags(objDoc.activeElement.tagName).item(i)){ strSyntax += (".frames.item(" + i + ").document"); } } objDoc = objDoc.activeElement.contentWindow.document; } return true; } catch(error) { return false; } finally { this.self = objDoc; this.elementSyntax = strSyntax; } } } /* GetSelectedElement */ function GetSelectedElement(strTag){ var htmlText, objSelectedElement; var objDoc = this.self; var thisArray = new Array(); htmlText = objDoc.selection.createRange().htmlText; objSelectedElement = objDoc.createElement("DIV"); objSelectedElement.innerHTML = htmlText; if (objSelectedElement.all.tags(strTag).length){ for (i = 0; i < objSelectedElement.all.tags(strTag).length; i++){ sleipnir.Sleep(1); thisArray.push(objSelectedElement.all.tags(strTag)(i)); } } objSelectedElement = null; return thisArray; }
- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)
★ - SaveCache.user.js 【Sleipnir用スクリプト全般】 - sk 10/17-17:31 No.684
Re: SaveCache.user.js 【Sleipnir用スクリプト全般】 - sk 10/17-17:40 No.685
Re: SaveCache.user.js 【Sleipnir用スクリプト全般】 - sk 10/20-01:14 No.686