[uc]LocalMark – 页面书签 - 20120411更新
A local mark is used to store the position within a web page.
页面书签就是在一个页面中保存当前的页面位置,当你滚屏到其他位置时可以随时回到这个已保存的页面书签处,比较类似于Vi中的mark概念。
在我们浏览长篇的文章时,可能会比较有用。
这个uc脚本就是提供该功能的,但是目前比较弱,只能保存唯一一个位置,不支持frame、frameset、iframe等。
试验田 – 仅供实验
————————————————————————-
0.6.1 – (20120411)
- 修复 – 通过快捷键新加书签之后再打开列表时无法显示 found by 浮生四相
localMark_0.6.1.uc
————————————————————————-
0.6 – (20110119)
- 书签列表中支持快捷键
- x – 删除选中书签
- u – 撤销上一次的删除动作 – 目前只支持一级
- j – 选中下一个书签
- k – 选中上一个书签
- / – 开启/关闭keyNavigation模式: 可以用字母根据书签名快速定位书签(只支持英文名)
- 支持排序:左键点击column header可以升/降序排列书签(右键点击恢复原本按时间排的序)
- 其他大量细节调整
- 删除某个书签后,光标自动移到下一个书签并选中(如果删除的是最后一个,则移到倒数第二个),不再是刷新整个列表
- 添加标签后,保证该标签显示在视野中
- 修复状态栏有时消失过快的问题
- 其他代码优化
localMark_0.6.uc
————————————————————————-
for dindog – (20101127)
使用按键序列(m -> z) 呼出页面书签列表
localMark_0.5_for_dindog.uc
————————————————————————-
0.5 – (20101026)
- 书签名支持中文
- 打开页面书签列表时,自动截取页面标题作为默认书签名(参数maxLengthOfMarkName配置截取长度,null代表整个标题,觉得长可以改成60),直接回车就可以标记 – 感谢alan的建议
- 呼出页面书签,使用函数 Marker.list(); 可以配成手势或者其他快捷键
- 增加一个独立参数marksListKey,配置“呼出页面书签”默认快捷键,对应的isListKey函数里可修改ctrl/alt/shift修饰符
0.4 基于0.3更新 (20101026)
- 页面书签列表增加一个输入框,可以输入任何内容作为页面书签的名字来标记当前位置(长名书签)- 感谢dindog的建议
- 长名书签只能在书签列表中操作,不支持快捷键
- (0-9a-z)这36个书签(短书签)可以通过快捷键操作(m标记,单引号跳转)
- 调整了闪烁效果,增加一个参数_noMarkBlink,控制是否开启闪烁
- 使用pref.js保存页面书签数据,关闭/重启浏览器时,数据不丢失
0.3 – Vi-like Update (20101026)
- 由0.2升级
- 呼出页面书签列表时,左键双击直接跳转到对应mark处,右键双击删除
0.2 这个实验版按照Vim的mark方式处理 – (20101025)
- 全局共用24个(a-z)命名页面书签
- 当使用(’键)往页面书签跳转时,如果对应当前页面,则滚屏到相应位置;否则,如果对应的URL已打开,则switch tab后滚屏;如果对应的URL已关闭,则用新tab打开对应URL,当页面加载完后,滚屏至相应位置(在加载过程中,如果用户手动switch到别的tab,那么在页面书签对应的tab加载完后也会switch回来并滚屏)
- ctrl+alt+m 显示页面书签列表(对应vim中的 :marks)
- 暂时没提供删除功能
o.1 – (20101024)
- 每个URL拥有独立的24个(a-z)命名页面书签
- m键启动标记,接着输入(a-z)中的一个字母,即会为当前URL以该字母作为名字标记当前位置
- ‘键(单引号)+ (a-z),用来在当前页面移动到该名字标记的位置
- 标记和移动时有动画效果突出标记位置
- 暂时没提供删除功能,重启浏览器可以清除所有标记,在同一URL下标记同一名字会覆盖
localMark.uc.js
—————————————————————————
快捷键:
m – mark current position/move to the mark
alt+m – delete the mark
附件:
localMark.uc.js
related post
- [Algorithm]带通配符*的字符串匹配
- [userChrome script]flybar - 居中地址栏和搜索框 (扩展版 - flybar)
- pentadactyl试用记
- [userChrome script]firelaunchy - 从firefox快速启动应用程序
- [uc]sideBookmarkBar for firefox4

试了试,挺好用。如果能支持多书签,那就完全可以达到Vimperator的效果了。我是门外汉,请问是不是从单书签到多书签还需要添加很多代码呢?或者是不是真正的难度在于监听组合键呢(比如顺序按下m,a实现标记a位置)?
监听按键序列是一个难点,还有一个是存储,如果针对每个页面都可以有独立的书签,那么当标签很多时就会有问题,还得考虑怎么样清除。
我一般都习惯慢慢来,一步步完善^_^
多谢解释,有点明白了。不急,慢慢来。其实现在除了不支持多书签外这个脚本已经很不错了。
我早就要想要着玩意了。
最近一直折腾KeySnail,发现它其实也提供了页面书签的功能,不过要装一个插件“Scrollet!”。楼主或许可以参考下它的代码,不过那个长达上千行。当然这主要是因为它还夹杂了一些别的功能,比如上/下翻半页(这部分代码和楼主上次写给我的一样,呵呵)。
谢谢,回头试试“Scrollet!”
刚放了个实验版本,和vim中的mark不太一样,每个URL独立拥有mark的名字,而不是共享这些名字。这样,随着打开URL的增多,可能会有非常多的mark需要维护。
而在vim里,marks的总量是一定的,所有文件共享这些名字,但是可以在一个文件中直接跳到另一个文件的mark中。如果URL这样处理的话,就可以通过mark打开一个已关闭但是曾经mark过的URL。
我现在还没想好做成什么样。
这是个很棒的主意,这样就真的和Vim一样了。目前不管是KeySnail(Scrollet!)还是Vimperator,都是每个URL独立拥有mark,好像还没有扩展能实现页面间跳转的功能。
不过的确是有利就有弊,共用书签列表的话,一则可能不好记,二则设置新标签时可能会不小心覆盖掉其它页面的书签。为了避免这些问题,可能得提供一个显示目前所有书签(就像Vim里的:marks命令)以及删除书签的快捷键,那估计又得写不少代码。^^
如果封装成keysnail插件,连命令都能和vi一样。
不俗,我能想得到的功能博主都已经实现了。或许以后可以封装成个扩展发布。
ps:不知为何,我发现留言时按ctrl+enter没有反应。^^
估计wp哪里弄错了,回头检查下。
我前面留言犯了个错误,原来Vimperator和Vim一样,把书签按大小写分为页面书签和全局书签,小写的只能在当前页面里跳转,大写的可以页面间跳转。KeySnail无此功能,大小写都是页面书签。
呵呵,真严谨
ctrl+enter修复了
测试有效。
这句时调出界面的。
isListKey: function(e) {
return e.keyCode == this.marksListKey && e.ctrlKey && !e.shiftKey && e.altKey;
},
想改成key sequence,比如m z,不是用z做书签,而是打开该界面,复杂吗?
改是可以改,但是只改这一个方法不行。
你要是一定要这样做,我可以给你提供一个改好的
如果方便的话,那就太感谢了
查看文章正文,已提供附件下载。
已下载。。同我想象中的一样。谢谢
这个很不错,个人觉得要是快捷键尽量 适合 左手来操作的话,那就完美
快捷键可以自己改脚本,找到shortcut函数,用你想设定的按键的charCode替换原来的就行了。
我写得还算可读,应该比较容易改。
默认的键位适合键盘党,那种基本不用鼠标双手不离键盘的^_^
有个小问题
用m+*快捷添加书签时,呼出书签列表里面是不显示的,必须用输入框添加一个书签才会显示出来,希望能检查一下
已修复,请更新新版
在百度贴吧,快捷键无效,不知道怎么回事。
Firefox贴吧复制修复(临时)
http://userscripts.org/scripts/show/114833
装这个脚本,在百度贴吧快捷键就可以用了。
可以双击 书签列表 中的书签直接打开书签嘛?
回车也可以打开。
这个暂时不可以
可以的。