本站不兼容 8 以前的版本的 Interner Explorer 浏览器(或基于这些版本的 IE 的其他浏览器),并且页面样式不完全兼容 IE 8,我们建议你升级至 IE 9 或改用其他非 IE 浏览器

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

请问为什么我用了bftabs之后,当用右键单击在状态栏显示的扩展图标
后弹出的菜单总是不停的闪烁,什么也看不清楚啊?大家有没有遇到这个
问题啊?是我自己的问题么?谢谢
31# wxuyec

装了 Inspect Context 吧。
是的,我安装了inspect context,但是没有安装它之前,
也是这个情况,而且我现在卸了inspect context也同样。
谢谢。
33# wxuyec

我之前也有这个问题,但把Inspect Context禁用就没事了。

pentadactyl与All-in-one sidebar, tile tabs有点不太合得来,可以自己试试。

不过我现在开着 Inspect Context也没问题,莫名其妙的就好了。
至于weide的问题,我觉得重新定义后的函数肯定会替换原来的,事实上从源代码里能看出来dactyl.modules.hints.show原本只有一句(用:echo也能直接显示出来):
show: function show(mode, opts) ...
harnack 发表于 2011-6-7 20:56
感谢关注及分享通过echo显示代码的方法!

关于“重新编写后的方法是替换原来的,还是在原来的方法执行前或执行后被执行?”,应该是替换。
造成我困扰的原因是对TortoiseHg不熟,每次更新代码都是执行Update,正确做法貌似是先Synchronize,然后在Update,结果就是实际上没有更新到最新的代码。
新代码中从原来的dactyl.modules.Hints中拆分出了dactyl.modules.HintSession,并把原来hints.show的操作放到了HintSession.Show中了
  1. dactyl.modules.hints.show = function(mode, opts) {
  2.         this.hintSession = HintSession(mode, opts);//初始化时,执行了HintSession.Show
  3.         this.hintSession.pageHints.forEach(function(h) {
  4.                 h.text =...;//将h.text按照拼音五笔等重新编码,用于下一步过滤
  5.         }
  6. );
复制代码
更新代码后,推断现在的处理模式是这样的:
进入hints模式后,当按下按键时,会启动一个事件序列,首先由onKeyPress处理,然后由onChange处理:
在onKeyPress中,当按键为hintkeys中定义的按键时,根据hint.number进行过滤显示,并终止事件序列;
        当按键不是hintkeys中定义的按键时,不进行处理,交由onChange方法处理;
在onChange方法中,执行show方法,在show方法中根据hint.text(链接或按钮上的文字)进行过滤显示

由此得出结论:
set hintkeys=abcefhilmopqrsuvwxyz
当使用字母型的hintkeys时,通过按下字母对链接文字进行过滤没有意义,准确地说是无法使用hintkeys中的字母进行hint过滤--因为执行不到那一步。
这种情况下,pinyin-hints等装了也白装,浪费资源还用不上

部分代码添加注释备用
  1. //:echo dactyl.modules.HintSession.prototype.onKeyPress
  2. function onKeyPress(eventList) {
  3.     "use strict";
  4.     const KILL = false, PASS = true;
  5.     var key = events.toString(eventList[0]);
  6.     this.clearTimeout();
  7.         //如果按下的键是HintKey,将在此函数内处理
  8.         //否则返回PASS,由onChange函数处理
  9.     if (!this.escapeNumbers && this.isHintKey(key)) {
  10.         this.prevInput = "number";
  11.         let oldHintNumber = this.hintNumber;
  12.         if (this.usedTabKey) {
  13.             this.hintNumber = 0;
  14.             this.usedTabKey = false;
  15.         }
  16.         this.hintNumber = this.hintNumber * this.hintKeys.length + this.hintKeys.indexOf(key);
  17.         this.updateStatusline();
  18.         if (this.docs.length) {
  19.                         //已经有hints的情况下,执行updateValidNumbers
  20.                         //主要实现代码:hint.valid = always || hint.span.getAttribute("number").indexOf(string) == 0;
  21.                         //也就是说,此时的过滤操作,是根据hint的number进行过滤,而不是对应的链接或按钮上的文字(hint.text)
  22.             this.updateValidNumbers();
  23.         } else {
  24.                         //第一次首先生成hints然后显示之,初次生成无需过滤               
  25.             this.generate();
  26.             this.show();
  27.         }
  28.         this.showActiveHint(this.hintNumber, oldHintNumber || 1);
  29.         dactyl.assert(this.hintNumber != 0);
  30.         this.checkUnique();//此函数验证dactyl.assert(this.hintNumber <= this.validHints.length);
  31.         return KILL;
  32.     }
  33.         //返回PASS时,事件交由dactyl.modules.HintSession.prototype.onChange
  34.         //该方法内将调用dactyl.modules.HintSession.prototype.show
  35.         //show方法显示有效的hint,这时候是根据hint.text进行过滤的,相关代码:
  36.         //                ...var validHint = hints.hintMatcher(this.hintString.toLowerCase());
  37.         //                ...hint.valid = validHint(hint.text);
  38.     return PASS;//
  39. }
复制代码
本帖最后由 yhmybsy 于 2011-6-8 11:12 编辑
  1. hg pull -u
复制代码
hg 分两步,第一部分是pull, 然后是update
hg pull -u

hg 分两步,第一部分是pull, 然后是update
yhmybsy 发表于 2011-6-8 11:11
谢谢指点,用熟了subversion,现在又流行Hg了
本帖最后由 weide 于 2011-6-14 17:31 编辑

分享插件:g;b模式下,不再过滤hint
适用于:set hintkeys=abcdefghijklmnopqrstuvwxyz
不适用:set hintkeys=0123456789,喜欢pinyin-hint过滤方式

disable-hint-filter.js:
  1. var INFO =
  2. <plugin name="disable-hint-filter" version="1.5"
  3.         href="http://g.mozest.com/viewthread.php?tid=38908"
  4.         summary="disable hint filter in g;b mode"
  5.         xmlns={NS}>
  6.     <info lang="zh-CN" summary="在g;b模式下,禁用hint过滤,防止无谓闪烁"/>
  7.     <author>weide</author>
  8.     <license href="http://opensource.org/licenses/mit-license.php">MIT</license>
  9.     <project name="Pentadactyl" min-version="1.0"/>
  10.     <p lang="zh-CN">
  11.         本插件使用于使用字母型hintkeys的情况,如下所示:
  12.     </p>
  13.     <p lang="en-US">
  14.         This plugin is used when set hintkeys=abcdefghijklmnopqrst
  15.     </p>
  16.     <example>
  17.     <p><![CDATA[set hintkeys=abcefhilmopqrsuvwxyz]]></p>
  18.     <p><![CDATA[set hinttimeout=500]]></p>
  19.     <p><![CDATA[map -m hints j     -ex normal! <C-f>]]></p>
  20.     <p><![CDATA[map -m hints J  -c    -ex normal! <count>j]]></p>
  21.     <p><![CDATA[map -m hints k     -ex normal! <C-b>]]></p>
  22.     <p><![CDATA[map -m hints K  -c   -ex normal! <count>k]]></p>
  23.     <p><![CDATA[map -m hints <Space>     -ex normal! <C-f>]]></p>
  24.     <p><![CDATA[map -m hints d     -ex normal! d]]></p>
  25.     <p><![CDATA[map -m hints D     -ex normal! D]]></p>
  26.     <p><![CDATA[map -m hints gg      -ex normal! gg]]></p>
  27.     <p><![CDATA[map -m hints G     -ex normal! G]]></p>
  28.     <p><![CDATA[map -m hints gt    -ex normal! gt<Esc>]]></p>
  29.     <p><![CDATA[map -m hints gT    -ex normal! gT<Esc>]]></p>
  30.     </example>   
  31. </plugin>;

  32. dactyl.modules.HintSession.prototype.updateValidNumbers_org=dactyl.modules.HintSession.prototype.updateValidNumbers;
  33. dactyl.modules.HintSession.prototype.updateValidNumbers=function(always){
  34.     if(this.hintMode.name=="b" && this.continue)
  35.         this.updateValidNumbers_org(true);
  36.     else
  37.         this.updateValidNumbers_org(always);
  38. };

  39. dactyl.modules.HintSession.prototype.process_org=dactyl.modules.HintSession.prototype.process;
  40. dactyl.modules.HintSession.prototype.process=function(followFirst){
  41.     if(followFirst)    dactyl.modules.hints.activeHint = this.validHints[this.hintNumber ? this.hintNumber - 1 : 0];
  42.     return this.process_org(followFirst);
  43. }

  44. dactyl.modules.HintSession.prototype.show_org=dactyl.modules.HintSession.prototype.show;
  45. dactyl.modules.HintSession.prototype.show=function(){
  46.     this.show_org();
  47.     if(this.hintMode.name=="b" && this.continue){
  48.         dactyl.modules.hints.activeHint.active=true;
  49.         setTimeout('dactyl.modules.hints.activeHint.active=true;',300);
  50.         setTimeout('dactyl.modules.hints.activeHint.active=true;',600);
  51.         setTimeout('dactyl.modules.hints.activeHint.active=true;',900);
  52.         setTimeout('dactyl.modules.hints.activeHint.active=true;',1200);
  53.     }
  54. }
复制代码
本帖最后由 harnack 于 2011-6-8 15:13 编辑

以前我也困惑过当用字母做hintkeys的时候Pentadactyl如何过滤hint,看了weide的分析终于明白了。

看到上面的代码里用到<count>,想顺便说一个大家或许没注意到的改变。最新的每夜版里mappings.js里有这么一段:
  1. if (args[1] && !/^<nop>$/i.test(args[1])
  2.                 && !args["-count"] && !args["-ex"] && !args["-javascript"])
  3.     args[1] = "<count>" + args[1];
复制代码
这意味着只要自定义map里没有-c、-j、-e三个参数,Pentadactyl就会自动为其加上<count>。

具体说来,以前如果我们想把gT映射给h,需要写成
  1. map -c h <count>gT
复制代码
(另外aryeah提到过可以把-c省掉。)现在已经没有必要这么写了,只要写成
  1. map h gT
复制代码
就行了,Pentadactyl会自动为其加上<count>。(用:map或:listkeys看下就会发现的确如此。)

不过我自定义的
  1. map d <C-w>
复制代码
也会被Pentadactyl傻傻地翻译为<count><C-w>,但<C-w>根本不支持[count],还好这倒也没啥副作用。
听老人说,今生做千件好事,来世方能讨生为猫。
34# yhmybsy
all-in-one sidebar和tile tabs我都没有装。
奇怪了。
37# weide
你好,我记得以前你曾经在pentadactyl中调用
一个扩展的内部函数去保存图片,这样就可以给
定快捷键了。我想请问能不能同样的方法来对付
1g1g的这个扩展啊?谢谢。
37# weide
你好,我记得以前你曾经在pentadactyl中调用
一个扩展的内部函数去保存图片,这样就可以给
定快捷键了。我想请问能不能同样的方法来对付
1g1g的这个扩展啊?谢谢。 ...
wxuyec 发表于 2011-6-8 16:57
可以的。

你把1g1g扩展解压出来之后,找与oncommand相关的字串应该就有收获了。
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9

  11. ....
  12. 95
  13. 96
  14. 97
  15. 98
  16. 99
复制代码
  1. js <<EOF
  2. function echo(/*count*/) {
  3.     let count = arguments[0];
  4.     let value = "";
  5.     for (var i = 0; i < count; i++) {
  6.         value += i+"\n";
  7.     }
  8.     dactyl.modules.buffer.lastInputField.value = value;
  9. }
  10. EOF

  11. nmap -count -javascript V echo(count)

  12. " 100V
复制代码
玩一下 -c 选项。
本帖最后由 yhmybsy 于 2011-6-8 21:22 编辑
有这么多的插件,喜欢buftab
很喜欢delicious.一直希望可以在dacty下使用delicious.可以实现添加书签(tags也能支持最好),并且可以浏览dilicious书签.
找到了以下两个vimperator的插件.不知道能不能帮忙更改下.
1.htt ...
hoolooday 发表于 2011-6-7 18:04
不知不觉中,delicious 已经不是 yahoo的了,我还以为它们会不离不弃呢。

第二个好像需要 delicious 工具栏吧。

第一个:
完成向本地,google bookmark, delicious 同时添加书签
完成tags

不太明白你所说的浏览是什么意思?


求助:

如何解决 delicious 导入本地书签,中文乱码?
如何一次删除 delicious 中所有书签?
我对 delicious 很失望,如何纠正这种心理?
你把1g1g扩展解压出来之后,找与oncommand相关的字串应该就有收获了。
yhmybsy 发表于 2011-6-8 18:23
这么干好像麻烦了点,之前有人推荐的扩展:
Dom  Inspector:https://developer.mozilla.org/En/DOM_Inspector
Inspect Context:https://addons.mozilla.org/en-US/firefox/addon/inspect-context/

之后在任何菜单、按钮上打开右键菜单->Inspect,在打开窗口中显示的DOM元素,通常有id,command,oncommand

有oncommand的,通常之后的语句就可以直接执行了,比如切换最大化的按钮:
  1. command! -d=切换窗口最大化 winmax js onTitlebarMaxClick();
复制代码
有command的,找到执行即可,比如autoproxy中:
  1. command! -d=切换AutoProxy模式为自动 proxyAuto js document.getElementById("aup-command-modeauto").doCommand();
  2. command! -d=切换AutoProxy模式为全局 proxyGlobal js document.getElementById("aup-command-modeglobal").doCommand();
  3. command! -d=切换AutoProxy模式为禁用 proxyDisable js document.getElementById("aup-command-modedisabled").doCommand();
复制代码
还有一些只有id的,其事件是在后台用代码注册的,通常可以尝试执行click方法,1g1g就属于这种:
  1. command! -d=启动1g ygStart js document.getElementById("MusicBar1g1g-title").click();
  2. command! -d=暂停/播放1g ygSwitch js document.getElementById("MusicBar1g1g-playPauseBtn").click();
  3. command! -d=下一首 ygNext  js document.getElementById("MusicBar1g1g-nextBtn").click();
复制代码
还有些功能,不是按钮直接提供的,比如关闭1g,好像没提供这样的按钮,而是关闭对应的tab页面,就需要解压扩展代码具体分析了,看了看这个扩展并不复杂:
  1. command! -d=关闭1g ygClose js MusicBar1g1g.browser1g1g.contentWindow.close();
复制代码
用得不多,所以都定义成命令了,可自定义快捷键及其它功能按钮
多谢weide和yhmybsy,尤其是weide,太详细了,可以用了。
不知不觉中,delicious 已经不是 yahoo的了,我还以为它们会不离不弃呢。

第二个好像需要 delicious 工具栏吧。

第一个:
完成向本地,google bookmark, delicious 同时添加书签
完成tags

不太明白你所说的浏览 ...
yhmybsy 发表于 2011-6-8 21:20
所说的浏览就是可以在dactyl下面
直接浏览到dilicious的书签.比如我输入什么命令比如
:delicious tags或者是书签的内容.它可以在dactyl下提示目前的dilicious上面有的书签.我再table下就直接打开了.就可以免去用dilicious的工具栏了(好像现在也不开发了.)
--------------------------------------------------------------------
中文乱码.不知道尝试下先将本地的bookmarks转换成utf-8试试?(具体真的还没有导入过呢?应该是这个问题吧)
如何全部删除.我找了好久,也没有找到.不好意思.
另外,确实是换东家了.目前来看,好像没有什么大的更改.个人觉得至少比yahoo掌握要好.如果用国内的,总是担心那天公司突然就没有了...
本帖最后由 hoolooday 于 2011-6-8 22:24 编辑

感谢wedie兄.看了兄的调用扩展的代码.最算是可以在dactyl下面调用它了.
ireader扩展.http://www.samabox.com/extensions/iReader/
看电子书,有那么一点用..
调用代码如下:
  1. :js document.getElementById("ireader-icon").click();
复制代码
以上为打开ireader
经实践证明.如果要关闭再执行一次就关闭了.
还有一点要解决的就是
打开ireader之后.没有方法滚动屏幕了.不知道有没有解决方法?
ireader 好像不太可靠,有好些地方只显示一部分内容。

readability能直接发送到 Kindle,这点比较爽,而且不用多装一个扩展。

delicious 还真没有全部删除,只能一次删一页,还好我书签不多。

我导出的文件是utf8格式的,google了一下,好像也没什么好的解决方法。
玩一下 -c 选项。
yhmybsy 发表于 2011-6-8 19:45
很有趣的例子,如果不用arguments[0]的话,可不可以这样写呢?
  1. js <<EOF
  2. function echo(N) {
  3.     let value = "";
  4.     for (var i = 0; i < N; i++) {
  5.         value += i+"\n";
  6.     }
  7.     dactyl.modules.buffer.lastInputField.value = value;
  8. }
  9. EOF

  10. nmap -c -e V js echo(<count>)
复制代码
听老人说,今生做千件好事,来世方能讨生为猫。
本帖最后由 hoolooday 于 2011-6-8 23:12 编辑
ireader 好像不太可靠,有好些地方只显示一部分内容。

readability能直接发送到 Kindle,这点比较爽,而且不用多装一个扩展。

delicious 还真没有全部删除,只能一次删一页,还好我书签不多。

我导出的文件是utf8 ...
yhmybsy 发表于 2011-6-8 22:34
ireader是不可靠的说,有的地方,在贴吧,就能显示一部分...
readability相比较而言,比如好用一点.所以,我投明了.哈哈
后面的问题,真的没有遇到过.因为我根本就没有导入过书签.

-------------------------------------
对了,readability.论坛脚本区有个本地的.读取速度应该更快?
https://g.mozest.com/viewthread.php?tid=35299&highlight=readab
不知道有兴趣没有?
很有趣的例子,如果不用arguments[0]的话,可不可以这样写呢?
js
harnack 发表于 2011-6-8 22:56
没什么问题啊。
没什么问题啊。
yhmybsy 发表于 2011-6-8 23:13
嗯,<count>的写法对我这种小白来说比较好理解。
听老人说,今生做千件好事,来世方能讨生为猫。
本帖最后由 154798760 于 2011-6-8 23:49 编辑
我自己用的几个脚本,可能不很完善(可怜我之前辛辛苦苦码的字,本来打字就慢)。

yhmybsy 发表于 2011-6-7 16:15
太感谢你所分享的脚本  ~~~~

查词典




Dict.cn 海词 - 划词释义

已开启划词
设置

悬停发音即划即查
太感谢你所分享的脚本  ~~~~

查词典




Dict.cn 海词 - 划词释义

已开启划词
设置

悬停发音即划即查
154798760 发表于 2011-6-8 23:47
有用就好,划词确实蛮方便。
本帖最后由 yhmybsy 于 2011-6-9 00:57 编辑
ireader是不可靠的说,有的地方,在贴吧,就能显示一部分...
readability相比较而言,比如好用一点.所以,我投明了.哈哈
后面的问题,真的没有遇到过.因为我根本就没有导入过书签.

------------------------------ ...
hoolooday 发表于 2011-6-8 23:07
那个本地版的是不是加载之后,如果想看原来的页面就只有刷新页面才行啊?

支持本地载入了,但好像效果没在线的好。
想请教各位,怎样用 js 模拟鼠标指向(悬停)的效果?比如小明牌豆瓣电台的按钮。
樽前落花无觅处,且折花枝、独饮疏狂,一醉掩风流。——樽前小筑
请问各位我如果想当fx关闭的时候关闭某个标签页或者执行一个命令可以么?其实我就是想关闭fx的时候关闭那个1g的标签页。谢谢。
那个本地版的是不是加载之后,如果想看原来的页面就只有刷新页面才行啊?

支持本地载入了,但好像效果没在线的好。
yhmybsy 发表于 2011-6-9 00:07
感谢.经测试
就是一刷新就恢复到原来了.好像后退都不行.
有用就好,划词确实蛮方便。
yhmybsy 发表于 2011-6-9 00:06
请问现在dict.js脚本支持划词翻译么?在帮助
中没看到啊,似乎是用<a-d>开始翻译的啊?