FireGestures
Firefox 12.0 - close your eyes... の続き。
Firefox 12.0 + FireGestures 1.6.16
説明不要?マウスジェスチャでいろんな作業を実行しちゃうアドオン。慣れてしまうと対応していないソフトの上でもマウスをグリグリしてしまう病気にもれなくなります。
そんなFireGesturesに入れているユーザスクリプト。
one time hilight
以前書いたスクリプト。選択してジェスチャすると、選択したテキストがハイライト表示される。
var findbar = document.getElementById("FindToolbar"); var highlightBtn = document.getAnonymousElementByAttribute(findbar, "anonid", "highlight"); if (!FireGestures.getSelectedText()) { highlightBtn.setAttribute("checked", "false"); gFindBar.toggleHighlight(false); gFindBar.close(); return; } gFindBar.toggleHighlight(false); gFindBar.onFindCommand(); gFindBar.toggleHighlight(true); highlightBtn.setAttribute("checked", "true");
ank pixiv tool
Ank Pixiv Tool を呼び出して、そのままpixivのブックマーク操作を進めるだけ。
//ank pixiv tool v0.1 AnkPixiv.downloadCurrentImage(); var url=window.content.location.href.replace("member_illust.php","bookmark_add.php").replace("mode=medium","type=illust"); if(url!=window.content.location.href){ window.content.location.href=url; }
go bookmark (link)
Firefox 22.0 以降で動作しなくなったので更新しました。
以前書いたスクリプト。リンクからのジェスチャでブックマークへ飛ぶ。
//go bookmark (link) v0.1 var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"] .getService(Components.interfaces.nsINavBookmarksService); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var faviconService = Components.classes["@mozilla.org/browser/favicon-service;1"] .getService(Components.interfaces.nsIFaviconService); if (FireGestures.API_goBookmark === undefined) { FireGestures.API_goBookmark = function(bid, fid) { toggleSidebar("viewBookmarksSidebar", true); var sidebar = document.getElementById("sidebar").contentWindow; var bmv = sidebar.document.getElementById("bookmarks-view"); var tbo = bmv.treeBoxObject; //bmv.selectItems([fid]); //tbo.scrollToRow(bmv.currentIndex); bmv.selectItems([bid]); tbo.ensureRowIsVisible(bmv.currentIndex); }; } var srcNode = FireGestures.sourceNode; var url = FireGestures.getLinkURL(srcNode); if (!url) url = window.content.location.href; var uri = ios.newURI(url, null, null); if (!bmsvc.isBookmarked(uri)) throw "Bookmark Not Found"; var bookmarksArray = bmsvc.getBookmarkIdsForURI(uri, {}); var attrsList = bookmarksArray.map(function(bid) { if (!bid) return null; var parentFolderId = bmsvc.getFolderIdForItem(bid); var parentFolderName = bmsvc.getItemTitle(parentFolderId); var bookmarkName = bmsvc.getItemTitle(bid); var faviconUrl = faviconService.getFaviconImageForPage(uri).spec; return { image: faviconUrl, class: "menuitem-iconic", label: parentFolderName, description: bookmarkName + " " + uri.path, value: parentFolderId, oncommand: "this.API_goBookmark(" + bid + "," + parentFolderId + ");" }; }); attrsList.sort(function(a, b) { return a.value - b.value; }); FireGestures.generatePopup(event, attrsList);
go bookmark (selection)
Firefox 22.0 以降で動作しなくなったので更新しました。
以前書いたスクリプト。選択した範囲のリンクからのジェスチャでブックマークへ飛ぶ。
//go bookmark (selection) v0.1 var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"] .getService(Components.interfaces.nsINavBookmarksService); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var faviconService = Components.classes["@mozilla.org/browser/favicon-service;1"] .getService(Components.interfaces.nsIFaviconService); if (FireGestures.API_goBookmark === undefined) { FireGestures.API_goBookmark = function(bid, fid) { toggleSidebar("viewBookmarksSidebar", true); var sidebar = document.getElementById("sidebar").contentWindow; var bmv = sidebar.document.getElementById("bookmarks-view"); var tbo = bmv.treeBoxObject; //bmv.selectItems([fid]); //tbo.scrollToRow(bmv.currentIndex); bmv.selectItems([bid]); tbo.ensureRowIsVisible(bmv.currentIndex); }; } var urlArray = FireGestures.gatherLinkURLsInSelection(); if (!urlArray) { urlArray = [window.content.location.href]; } var bookmarksArray = []; var storage = {}; for (var i=0; i<urlArray.length; ++i) { var url = urlArray[i]; if (url in storage) continue; storage[url] = true; var uri = ios.newURI(url, null, null); if (!bmsvc.isBookmarked(uri)) continue; bookmarksArray = bookmarksArray.concat(bmsvc.getBookmarkIdsForURI(uri, {})); } if (bookmarksArray.length == 0) throw "Bookmark Not Found"; var attrsList = bookmarksArray.map(function(bid) { if (!bid) return null; var parentFolderId = bmsvc.getFolderIdForItem(bid); var parentFolderName = bmsvc.getItemTitle(parentFolderId); var bookmarkName = bmsvc.getItemTitle(bid); var uri = bmsvc.getBookmarkURI(bid); var faviconUrl = faviconService.getFaviconImageForPage(uri).spec; return { image: faviconUrl, class: "menuitem-iconic", label: parentFolderName, description: bookmarkName + " " + uri.path, value: parentFolderId, oncommand: "this.API_goBookmark(" + bid + "," + parentFolderId + ");" }; }); attrsList.sort(function(a, b) { return a.value - b.value; }); FireGestures.generatePopup(event, attrsList);
clear cache
キャッシュを手動でクリア。効果はほとんど感じられない。
//clear cache v0.1 var cacheSvc = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService); cacheSvc.evictEntries(Ci.nsICache.STORE_IN_MEMORY); cacheSvc.evictEntries(Ci.nsICache.STORE_ON_DISK);
close same tab
以前、紹介したshiopuさんのスクリプトを自分用に改変して使用。重複しているタブを閉じる。ついでにブックマークする時のために、URLからパラメーターを削ったり。
//close same tab v0.2 // URLのアンカー指定を除く function getPlaneUrl(url){ //url = url.replace(/#.*/, ''); //for twitter if(url.match("twitter.com/")){ return url; } url = url.replace(/#[^&]*/, ''); return url; } var result = ""; //重複タブを閉じる var tabs = gBrowser.mTabContainer.childNodes; for (var i = 0; i < tabs.length; i++) { var base = gBrowser.getBrowserForTab(tabs[i]); var url = getPlaneUrl(base.currentURI.spec); if(url.match("about:blank")){ continue; } //for google reader if(url.match("www.google.co.jp/reader/")){ continue; } //for youtube if(url.match("www.youtube.com")){ if(url.match(/feature|NR/)){ //temporary code contains side effect url = url.replace(/&(feature|NR|sns)=[^&]*/, '').replace(/feature=[^&]*&/, ''); base.loadURI(url); } } //for nicovideo if(url.match("nicovideo.jp")){ if(url.match(/via|ref|from/)){ //temporary code contains side effect url = url.replace(/[?](via|ref|from)=[^&]*/, ''); base.loadURI(url); } } if(url.match("www.pixiv.net")){ var pixiv = url.replace(/[?](illust_id=[\d]*)&mode=medium/, '?mode=medium&')+RegExp.$1; if(url != pixiv) base.loadURI(pixiv); } //no utm //temporary code contains side effect var noutm = url.replace(/[?&#]utm_(source|medium|campaign|content)=[^&]*/g, ''); if(url != noutm) base.loadURI(noutm); var targets = gBrowser.mTabContainer.childNodes; for (var j = targets.length - 1; i < j; --j) { var target = gBrowser.getBrowserForTab(targets[j]); if (url == getPlaneUrl(target.currentURI.spec)) { gBrowser.removeTab(targets[j]); result += url + "\n"; } } } if(result){ alert("close:\n"+result); }