使用 org-mode 管理 emacs 中的 Firefox 标签
Manage firefox tabs in emacs with org-mode
我最近找到了一种在emacs中管理Firefox标签的方法。这听起来有点疯狂。我使用树样式选项卡(Firefox addon),Moz Repl,emacs,org-mode来做到这一点。
对于 10-15 个选项卡,我的计划运行良好。但是 20+ 标签,我的火狐随机挂起。也许是javascript堆栈溢出或其他什么?我不知道我的代码出了什么问题。我在这里发布最多的导入代码。有人帮我找到一些错误?
这是下面的一个基本的Firefox chrome代码,你可以在Firefox中运行它,而无需emacs和MozPepl。
我使用树样式选项卡 api 来获取选项卡并将每个选项卡设置为cetain级别。 输出将在具有 org-mode 的 emacs 中使用。树样式选项卡 API:http://piro.sakura.ne.jp/xul/_treestyletab.html.en#api
该代码可以通过多种方式运行。我推荐"工作区插件"。复制"我的代码",选择"镶边上下文"以运行它。https://addons.mozilla.org/en-US/firefox/addon/workspace/
// two helper function to get title and url of tab
function getTitle(tab)
{
var brower = gBrowser.getBrowserForTab(tab)
var url = brower.currentURI.spec
var title = brower.contentTitle
return title
}
function getUrl(tab)
{
var brower = gBrowser.getBrowserForTab(tab)
var url = brower.currentURI.spec
var title = brower.contentTitle
return ":PROPERTIES:'n:URL:"+url+"'n:END:'n"
}
var L = gBrowser.tabContainer.childNodes.length //firefox tabs length
var str = "" //global string for output
//parse tabs. If tab has child, parse it. It tab has no child, just output.
for(i = 0; i < L; i++){
level = "*"
tab = gBrowser.tabContainer.childNodes[i]
if ('TreeStyleTabService' in window){
if(TreeStyleTabService.hasChildTabs(tab))
{
str = [str, level, " [+] ", getTitle(tab), "'n", getUrl(tab)].join("") //output title and url. level used in org-mode
treeparse(TreeStyleTabService.getChildTabs(tab), "**") //if a tab has child tabs. parse it and level up
}
str = [str, level, " ", getTitle(tab), "'n", getUrl(tab)].join("")
}
function treeparse(tablist,level) //parse a list of tabs. If tab has not a child, output. If it has childs, parse again
{
for(i=0 ; i < tablist.length;i++) {
tab = tablist[i]
if ('TreeStyleTabService' in window){
if(TreeStyleTabService.hasChildTabs(tab))
{
str = [str, level, " [+] ", getTitle(tab), "'n", getUrl(tab)].join("")
newlevel = level + "*"
treeparse(TreeStyleTabService.getChildTabs(tab),newlevel)
}
} }
str = [str, level, " ", getTitle(tab), "'n", getUrl(tab)].join("")
}
}
alert(str) //alert to view result. You can also write the result into a file.
我不确定具体是什么导致了问题,因为我无法重现它,但我看到这段代码有很多问题。我不记得 MozRepl 是如何工作的,但这个改进的代码应该给你一个很好的组织模式友好的选项卡输出。我希望这对您或偶然发现此线程的人有所帮助。
var bullet = "*"; // Org-mode bullet
// two helper function to get title and url of tab
function getTitle(tab) {
var brower = gBrowser.getBrowserForTab(tab);
var url = brower.currentURI.spec;
var title = brower.contentTitle;
return title;
}
function getUrl(tab) {
var brower = gBrowser.getBrowserForTab(tab);
var url = brower.currentURI.spec;
var title = brower.contentTitle;
return ":PROPERTIES:'n:URL:"+url+"'n:END:'n";
}
// NOTE: we factor these string-generation functions out,
// to make things a bit more clear
function makeParentNodeOutput(tab, level) {
return (Array(level+1).join(bullet) +
" [+] " +
getTitle(tab) +
"'n" +
getUrl(tab));
}
function makeLeafNodeOutput(tab, level) {
return (Array(level+1).join(bullet) +
" " +
getTitle(tab) +
"'n" +
getUrl(tab));
}
// NOTE: we only need to handle parsing a collection of tabs
// in once place, and we have a function for it here.
function parseTabCollection(tabs, level) {
var currentTab;
var outputString = "";
for(var i = 0; i < tabs.length; i++){
currentTab = tabs[i];
// For a parent node, we output the node and its children
if(TreeStyleTabService.hasChildTabs(currentTab)){
outputString += makeParentNodeOutput(currentTab, level);
outputString += parseTabCollection(
TreeStyleTabService.getChildTabs(currentTab),
level + 1
);
} else {
outputString += makeLeafNodeOutput(currentTab, level);
}
}
return outputString;
}
if ('TreeStyleTabService' in window){
//NOTE: Start with the rootTabs only. The old version started with
// *all* tabs, which isn't what we want
var orgModeOutput = parseTabCollection(TreeStyleTabService.rootTabs, 1);
alert(orgModeOutput);
}
我希望这在某种程度上有所帮助。
相关文章:
- 使用插件收听Firefox标签的http请求
- Firefox Addon为什么标签页的readystate未定义
- d3.js散点图中的刻度标签在Firefox 13.0.1中被截断
- Firefox 25 没有为音频标签定义 play()
- 标签标签中的复选框:Chrome和Firefox中的不同结果
- Execcommand justifyCenter在Firefox中不起作用,当P标签包含BR时
- 我无法通过 Firefox 中的“for”属性访问标签,但可以在 Chrome 中访问标签
- PDF 中的锚标签在 Firefox 和 safari 中不可点击
- 打开Chrome或Firefox,不带标签和其他菜单项,并设置屏幕位置和大小
- HTML5 的音频标签在 Firefox 中无法始终如一地工作
- Firefox输入标签和jquery 1.9
- Firefox没有't切换媒体标签中的控件
- Firefox插件-如何关闭标签打开后,他们
- 让firefox扩展识别tel:标签并处理它
- 当overflow:hidden css属性设置为标签只能在Firefox中使用
- Javascript代码关闭标签,适用于IE, Firefox和Chrome
- 如何在firefox中获得所有标签和执行某些标签id上的javascript
- Firefox/IE IIS 6不支持在Javascript/HTML中隐藏标签
- Firefox标签不断加载一个iframe
- 使用 org-mode 管理 emacs 中的 Firefox 标签