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

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

本帖最后由 harnack 于 2011-6-10 19:53 编辑

的确存在楼上所说的问题,不过真正诡异之处是;r时比;h多显示出来一个hint(数一下就会发现),其中一个hint被遮掩住了,选择那个被掩盖住的hint就能把头像菜单收起来。

另外很多网站里,没有onmouseover/onmousemove/onmouseout属性的链接也会有悬停菜单,比如xiami:
http://www.xiami.com/album/13138
红框里的那些按钮鼠标悬停时会有下拉菜单,但它们没有onmouseover/onmousemove/onmouseout属性,所以脚本对它们无效,能把它们也包括进来吗?多谢了!



ps:这些链接的一个共同之处是其href为"javascript:void(0)"。
附件: 您所在的用户组无法下载或查看附件
听老人说,今生做千件好事,来世方能讨生为猫。
的确存在楼上所说的问题,不过真正诡异之处是;r时比;h多显示出来一个hint(数一下就会发现),其中一个hint被遮掩住了,选择那个被掩盖住的hint就能把头像菜单收起来。
造成这个问题的原因是:鼠标悬停在头像上时,弹出的“个人信息框”,响应mouseout,所以会多出一个来。
至于hint被遮掩,大概是因为头像和“个人信息框”的左上位置相同,pentadactyl生成的hint刚好重合了--和pentadactyl的hint在链结较多的时候,造成的互相覆盖是一样的
另外很多网站里,没有onmouseover/onmousemove/onmouseout属性的链接也会有悬停菜单,比如xiami:
http://www.xiami.com/album/13138
红框里的那些按钮鼠标悬停时会有下拉菜单,但它们没有onmouseover/onmousemove/onmouseout属性,所以脚本对它们无效,能把它们也包括进来吗?多谢了!

harnack 发表于 2011-6-10 19:41
大概看了一下,好像它是通过a:hover来实现的弹出,试了下触发onmouseover并不能弹出,一时想不出啥好办法了,估计只能单独写脚本实现了


---
又改进了一点代码,增加了一个命令 :setmouseout,可以把最后弹出的对象关掉--同样,上面提到的“个人信息框”也不能被正确关掉
我这里2d就是关闭2个标签页,还想请问有关闭从当前
标签页起右边所有标签页的命令么?
wxuyec 发表于 2011-6-10 00:04
不好意思,今天外出一天,回家倒头就睡,刚刚才睡醒。。。
yhmybsy  好热心。。
大概看了一下,好像它是通过a:hover来实现的弹出,试了下触发onmouseover并不能弹出,一时想不出啥好办法了,估计只能单独写脚本实现了
weide 发表于 2011-6-10 22:36
其实也没那么复杂,用mouseover就能触发那个菜单。其实最初的那个版本对xiami是有效的,现在无效只是因为设置了eht+=[h]:×××。把这个限制去掉或者把×××部分写得更宽泛些(当然里面那两个if也得对应地改改)还是能生效的,比如
set eht+=[h]:[onmouseover],[onmousemove],[href*='void']
但这样写又太宽泛了,因为href="javascript:void(0)"的链接并非全都带有悬停菜单,也没办法去进一步筛选。算了,不管它了,能用就好。
听老人说,今生做千件好事,来世方能讨生为猫。
建议用 autocmd LocationChange动态修改 eht
建议用 autocmd LocationChange动态修改 eht
yhmybsy 发表于 2011-6-11 01:34
嗯,这是个好主意,多谢指点。
听老人说,今生做千件好事,来世方能讨生为猫。
本帖最后由 yhmybsy 于 2011-6-14 10:11 编辑

加一个新插件
edit
快速打开与firefox相关的文件和目录,方便修改或者查看 firefox 配置文件,脚本等。
  1. :ei " 直接 打开 pentadactyl 配置文件(如果存在的话)

  2. :ei! pref.js " 在新标签 页中打开 pref.js

  3. :ei pref.js " 用外部编辑器打开 pref.js, 在 windows 下, js类型的文件好像没与编辑器做关联

  4. :ei user.js " 打开用户配置文件,如果不存在会提醒是否创建

  5. :ei! extensions\\inspector@mozilla.org\\chrome\\inspector.jar " 打开 Dom Inspector,查看其源代码

  6. :ei! omni.jar " 这个没什么好说的了,firefox 都要被看完了。

  7. :ei! xxx.xpi "

  8. :set oped=C:\\Program\ Files\\Vim\\vim73\\gvim.exe " 设置外部编辑器, 这两种路径名写法都可以,不要写成'C:/Program Files/Vim/vim73/gvim.exe', 这种写法 pentadactyl 认,但 firefox 不认。oped 选项默认为空,使用系统关联的编辑器。
  9. :set oped='C:\Program Files\Vim\vim73\gvim.exe'      
  10. :set opsu+=.c,.cpp,.h  " 外部编辑器支持的文件名扩展
复制代码
  1. hi -a CompResult {width:68%;}
  2. hi -a CompDesc {width:30%;}
复制代码
调整自动补全窗口中描述,结果的大小,发现在windows下用 :ei 时,右侧的描述内容太宽了,把文件名都给覆盖了。
最后感叹一下 windows 冗长的路径名和写法!

下载地址:

https://github.com/grassofhust/d ... tyl/plugins/edit.js
附件: 您所在的用户组无法下载或查看附件
jar:file:////home/eric/.mozilla/firefox/4.0/extensions/inspector@mozilla.org/chrome/inspector.jar!/content/inspector/tasksOverlay-tb.xul

打开上面的页面会出现如下提示信息:

Remote XUL
      
      
      
      
      
        
        
          This page uses an unsupported technology that is no longer available by default in Firefox.
        

        
        Please contact the website owners to inform them of this problem.

其实按一下 gf 就能看到 tasksOverlay-tb.xul 的内容了。
本帖最后由 harnack 于 2011-6-12 01:55 编辑

yhmybsy大大最近很多产。

试了下edit.js,很不错。windows下js文件的确没与编辑器做关联,能不能在脚本里加个选项让用户直接指定编辑器呢,其实不论js还是css我都想用Vim打开。

另外这个\\的写法固然可以,不过我试了后发现在Pentadactyl里用/也是可以的,这样会不会更简洁些呢?

附件: 您所在的用户组无法下载或查看附件
听老人说,今生做千件好事,来世方能讨生为猫。
本帖最后由 yhmybsy 于 2011-6-12 20:34 编辑
yhmybsy大大最近很多产。

试了下edit.js,很不错。windows下js文件的确没与编辑器做关联,能不能在脚本里加个选项让用户直接指定编辑器呢,其实不论js还是css我都想用Vim打开。

另外这个\\的写法固然可以, ...
harnack 发表于 2011-6-12 01:44
已经添加 。

windows下的文件/目录补全好像不太好用,实在是有点摸不透。

比如 cd C:,我这边好几个系统下都弹不出来自动补全列表。


用 / 替换  \\  还没弄,这个要繁琐一点。
已经添加 。

yhmybsy 发表于 2011-6-12 16:02
pentadactyl本身就有个编辑器设置(<C-i>用的):set editor='gvim -f +<line> <file>'
建议直接用这个
pentadactyl本身就有个编辑器设置(用的):set editor='gvim -f + '
建议直接用这个
weide 发表于 2011-6-12 20:39
这个不能直接用的,
  1. :set editor='gvim -f -c ":set ft=bbcode" -c ":call cursor(<line>, <column>)" <file>'
复制代码
上面这个明显就不合适。

在设置 oped 选项时,已经把 editor选项 给提取出来了,在自动补全中有的,其实已经很方便了。
本帖最后由 harnack 于 2011-6-12 21:17 编辑

100# yhmybsy

多谢更新,oped很好用。/和\\倒也关系不大了,反正能用就好。

不过在Win7下自动补全似乎是有点问题,我是把插件都放在E:\Firefox\pentadactyl\plugins中,下面还建了两个子目录CSS和JS,可是
ei E:\\Firefox\\pentadactyl\\plugins\\
后面不能显示自动补全。

附件: 您所在的用户组无法下载或查看附件
听老人说,今生做千件好事,来世方能讨生为猫。
本帖最后由 yhmybsy 于 2011-6-12 21:13 编辑
100# yhmybsy

多谢更新,oped很好用。

不过在Win7下自动补全似乎是有点问题,我是把插件都放在E:\Firefox\pentadactyl\plugins中,下面还建了两个子目录CSS和JS,可是
ei E:\\Firefox\\pentadactyl\\plugins\\
...
harnack 发表于 2011-6-12 21:09
直接用 plugins\\就行了吧,不用全路径的。

edit是相对的相对路径优先,处理绝对路径在计划中。
这个不能直接用的,
:set editor='gvim -f -c ":set ft=bbcode" -c ":call cursor(, )" '

上面这个明显就不合适。

在设置 oped 选项时,已经把 editor选项 给提取出来了,在自动补全中有的,其实已经很方便了。 ...
yhmybsy 发表于 2011-6-12 20:45
现在open-editor好像并没有支持更多参数,只是用于打开文件

这样子的话,直接提取出editor中的gvim,忽略后面的选项是否就OK?

或者当open-editor为空时,提取editor中的编辑器作为默认参数
104# yhmybsy

这个果真可以呢,刚才忘了试这种写法。
听老人说,今生做千件好事,来世方能讨生为猫。
现在open-editor好像并没有支持更多参数,只是用于打开文件

这样子的话,直接提取出editor中的gvim,忽略后面的选项是否就OK?

或者当open-editor为空时,提取editor中的编辑器作为默认参数 ...
weide 发表于 2011-6-12 21:14
这样也不错,其实是我想偷懒。
100# yhmybsy

多谢更新,oped很好用。/和\\倒也关系不大了,反正能用就好。

不过在Win7下自动补全似乎是有点问题,我是把插件都放在E:\Firefox\pentadactyl\plugins中,下面还建了两个子目录CSS和JS,可是
ei E: ...
harnack 发表于 2011-6-12 21:09
已经支持绝对路径补全和打开了。

我之前的设定是在对firefox的目录结构很熟悉的情况下,只用相对路径会快很多,现在看来绝对路径也不可少啊.



有人能帮忙确认一下 windows下是否存在文件名/目录补全的问题吗?

比如
cd C:\\<Tab> " 无法弹出目录补全
cd D:\\<Tab> " 正常弹出

只要不是 C 盘的都正常,不知道是我个人情况,还是普遍都有这个问题。我已经在两台机器上重现这个问题。
有人能帮忙确认一下 windows下是否存在文件名/目录补全的问题吗?

比如
cd C:\\<Tab> " 无法弹出目录补全
cd D:\\<Tab> " 正常弹出

只要不是 C 盘的都正常,不知道是我个人情况,还是普遍都有这个问题。我已经在两台机器上重现这个问题。
...
yhmybsy 发表于 2011-6-12 22:35
我这边C盘有问题,其它正常
108# yhmybsy

测试有效,多谢更新。打开常用的文件果真是用相对路径更方便,不过有时会把下载的JS文件放在桌面上,这时就只能用绝对路径了。

C盘的确是无法自动补全,这看起来应该是Pentadactyl自身的bug,或许可以向Kris汇报下。
听老人说,今生做千件好事,来世方能讨生为猫。
其实也没那么复杂,用mouseover就能触发那个菜单。其实最初的那个版本对xiami是有效的,现在无效只是因为设置了eht+=[h]:×××。把这个限制去掉或者把×××部分写得更宽泛些(当然里面那两个if也得对应地改改) ...
harnack 发表于 2011-6-10 23:53
仔细看了下xiami的实现方式,发现还是用mouseover实现的,只不过其事件是用jquery注册上去的。进一步测试了发现:任何用javascript的方式注册的mouseover事件都不能通过pentadactyl识别并hint出来

经Kris指点,了解了获取元素事件列表的方法。改进后的版本能够比较完美的标识带有mouseover/mousemove/mouseout的事件了, 最新代码在此贴84楼
本帖最后由 harnack 于 2011-6-13 18:13 编辑

111# weide

这个效果不俗,代码也很简练。多谢更新!
听老人说,今生做千件好事,来世方能讨生为猫。
https://www.bugzilla.mozilla.org/show_bug.cgi?id=429484

补丁如下:

修复 C 盘根目录下自动补全列表无法弹出 和  'wildignore' 选项不能过滤文件或目录的问题。
  1. diff -urpN dactyl.orig/common/modules/io.jsm dactyl/common/modules/io.jsm
  2. --- dactyl.orig/common/modules/io.jsm        2011-06-13 19:30:04.576365128 +0800
  3. +++ dactyl/common/modules/io.jsm        2011-06-13 19:32:08.314818185 +0800
  4. @@ -902,7 +902,14 @@ unlet s:cpo_save
  5.                  text: !full ? "leafName" : function (f) this.path,
  6.                  path: function (f) dir + f.leafName,
  7.                  description: function (f) this.isdir ? "Directory" : "File",
  8. -                isdir: function (f) f.isDirectory(),
  9. +                isdir: function (f) {
  10. +                    try {
  11. +                        return f.isDirectory();
  12. +                    } catch (e) {
  13. +                        return false;
  14. +                    }
  15. +                },
  16. +                leafName: "leafName",
  17.                  icon: function (f) this.isdir ? "resource://gre/res/html/folder.png"
  18.                                                : "moz-icon://" + f.leafName
  19.              };
  20. @@ -910,7 +917,7 @@ unlet s:cpo_save

  21.              if (modules.options["wildignore"]) {
  22.                  let wig = modules.options.get("wildignore");
  23. -                context.filters.push(function (item) item.isdir || !wig.getKey(this.name));
  24. +                context.filters.push(function (item) item.isdir || !wig.getKey(item.leafName));
  25.              }

  26.              // context.background = true;
  27. diff -urpN dactyl.orig/common/modules/storage.jsm dactyl/common/modules/storage.jsm
  28. --- dactyl.orig/common/modules/storage.jsm        2011-06-13 19:30:04.588364978 +0800
  29. +++ dactyl/common/modules/storage.jsm        2011-06-13 19:31:41.194157241 +0800
  30. @@ -370,8 +370,11 @@ var File = Class("File", {
  31.              throw Error(_("io.eNotDir"));

  32.          let array = [e for (e in this.iterDirectory())];
  33. -        if (sort)
  34. -            array.sort(function (a, b) b.isDirectory() - a.isDirectory() || String.localeCompare(a.path, b.path));
  35. +        if (sort) {
  36. +            try {
  37. +                array.sort(function (a, b) b.isDirectory() - a.isDirectory() || String.localeCompare(a.path, b.path));
  38. +            } catch (e) {}
  39. +        }
  40.          return array;
  41.      },
复制代码
113# yhmybsy

弱弱的问下:这个咋用呢?打开io.jsm,然后对照着行号一处一处修改吗?那样的话每次更新每夜版后都得重新改,好像有点麻烦呢。
听老人说,今生做千件好事,来世方能讨生为猫。
本帖最后由 yhmybsy 于 2011-6-13 20:08 编辑
113# yhmybsy

弱弱的问下:这个咋用呢?打开io.jsm,然后对照着行号一处一处修改吗?那样的话每次更新每夜版后都得重新改,好像有点麻烦呢。
harnack 发表于 2011-6-13 19:59
我把补丁提交 了,先看 kris 的反应吧。

如果是用 cygwin的话, 先克隆一份 dactyl 的源代码,然后 cd 到其目录下
  1. patch -p1 < yourpatchfilehere
复制代码
yourpatchfilehere 是你保存上一楼的代码所得的文件。
多谢指点,cygwin还真没用过,看来我还是等等吧。
听老人说,今生做千件好事,来世方能讨生为猫。
最新的每夜版是不是安装之后不需要重启了啊?
还想请问一个问题,我现在如果关闭firefox的窗口,
再重新开启新的firefox的话不会恢复关闭之前打开的
标签页,但是如果用:restart重新启动就会恢复那些
标签页。请问有人知道这是为什么么?firefox不会默任
记住开启的标签页么?谢谢
firefox不会默任记住开启的标签页么?

--这个好像还真不会,默认好像是打开主页。

:restart 应该是保存 session 的.
最新的每夜版是不是安装之后不需要重启了啊?
wxuyec 发表于 2011-6-14 00:35
很早之前就不用了,不过我还是习惯重启一次。

:rehash 很多次之后,会发现 firefox 会变很慢。