| « [userChrome.js] 「最近閉じたタブ」のエントリを中クリックしてタブを開き直す | [userChrome.js] 新しいタブを現在のタブの右隣に開く » |
[userChrome.js] 選択範囲内のすべてのURLをタブで開く、またはWeb検索する
選択範囲内にあるURLと思しき文字列をすべてタブで開くための、 userChrome.js 用スクリプトです。さらに、URLが含まれない場合はWeb検索します。URLかどうかの判定はかなり曖昧ですが、「ttp://」形式や「http://」が無い形式にも対応していますので、以下のような場合に有効です。
—
ttp://www.example.com/photo1.jpg
ttp://www.example.com/photo2.jpg
ttp://www.example.com/photo3.jpg
—
下記ではとりあえず関数として定義しています。
使い方は色々ありますが、userChrome.js マウスジェスチャからも利用可能です。
/**
* A user script for userChrome.js extension.
* @name Open all URLs in selection or Web-search
* @compatibility Firefox 2.0
* @author Gomita
* @version 2007.1.12
* @permalink http://www.xuldev.org/blog/?p=48
*/
function ucjsOpenOrSearchSelection()
{
// getBrowserSelection function couldn't be apply since it removes all line breaks.
var win = document.commandDispatcher.focusedWindow;
var sel = win.getSelection().toString();
if (!sel) return;
// process each lines
var flag = false;
sel = sel.split("
");
sel.forEach(function(str)
{
// extract strings which may be URL (not strict)
str = str.match(/([a-zA-Z0-9+$;?.%,!#~*/:@&=_-]+)/);
if (!str || str[1].indexOf(".") < 0 || str[1].length < 8 ) return;
str = str[1];
if ( str.indexOf("ttp://") == 0 ) str = "h" + str;
// Open in a background tab
gBrowser.loadOneTab(str, null, null, null, true, false);
flag = true;
});
// If the selection doesn't contain URL, we does Web-Search it.
if ( !flag )
BrowserSearch.loadSearch(sel, true);
}
ついでに All-in-one Gestures の「閉じたタブを元に戻す」ジェスチャで Firefox 本体の undoCloseTab 関数を呼び出すように変更。
aioUndoCloseTab = undoCloseTab;
// getBrowserSelection
・
・
・
BrowserSearch.loadSearch(sel, true);
までをuserChrome.js マウスジェスチャに書き加えて動作を確認しました。
が・・・例えば userChrome.js という文字を選択して実行させるとweb searchではなく
#http://www.userchrome.js/(故意に全角記入しました)
を開こうとします・・・
userChromeだけだとweb searchになりますが「.」があると・・・みたいです・・・
今のところ、「.」が含まれる8文字以上の英数記号の連続はURLとみなしています。
より厳密な判定はどのようになりますか?
パクラーなσ(^_^;)はPiroたんのText Link内をのぞいてみたのですが・・・
能力無くて恥ずかしいです・・・(@_@;)眼が廻ってきて・・・
より厳密なURLの判定・・・
そんな私ですが頭の隅に置いて事あるごとに少しずつ考えてみます・・・(^^;