mattthew
小狐狸
小狐狸
  • UID32036
  • 注册日期2010-02-12
  • 最后登录2010-03-29
  • 发帖数60
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:3077回复:7

Firefox新手:KeyConfig不温不火 天理不容啊 囧。

楼主#
更多 发布于:2010-02-14 14:31
部分载录自己的博客
 
       安装KeyConfig之后,发觉这款扩展有着与它知名度不相符的实用性,所以决定花点时间为他鸣下不平。在左耳听着春晚小品、右耳惦记着冬奥开幕式,脚底板感受来自二踢炮带来的震动的这个除夕夜,边查资料边做实验。

      KeyConfig测评:(没有实际写过FF的扩展,欢迎高手拍装指摘)
       1、可以修改默认FF的快捷键,且支持单键。
      


           a、 强烈建议有的功能不要修改,直接新建一个同样的,然后设置第二快捷键)
           b、单键非常便捷,光标在输入性的元素里,也不会被触发。(缺点是有的页面焦点会默认到一个地方,导致单键操作可能的不连贯性,对少数网站如贴吧也会不起作用,待看源码后研究再修改之。)
      
       2、能够自定义新的快捷键。

            能够自定义到底说明一个什么问题呢?不夸张的说功能上能抵得大半个GM,并具有更高的自由度。
            为什么这么说?GM作为一个脚本运行器还额外提供了一些附加支持本地存储数据、可跨域的函数。但这些性特对KeyConfig来说是小菜一碟。
          
           如GM_setValue、GM_getValue功能。对KC来说可以通过类似下面的Code初步实现:
           globalStorage['matt.mozilla.org'].v='matt';
           var v = globalStorage['matt.mozilla.org'].v;
           alert(v);
          参考:https://developer.mozilla.org/en/DOM/Storage

          如GM_xmlHttpRequest功能。对KC来说可以通过类似下面的Code初步实现(可跨域):    
          var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest);
          req.onload = onLoad;
          req.open("GET", "http://www.douban.com", true);
          req.send(null);

          function onLoad(e){
              alert(e.target.status+'\n\n'+e.target.responseText);
          }
         参考:https://developer.mozilla.org/En/Using_XMLHttpRequest
          
         如GM_openInTab功能。对KC来说可以通过类似下面的Code初步实现:
         var ff= document.getElementById("content");
         var tab =gBrowser.addTab("http://www.anti-cnn.com/");
         ff.selectedTab=tab;
         参考:https://developer.mozilla.org/en/Code_snippets/Tabbed_browser
        
         写到这里,相当令人兴奋了。可自由存储数据、可跨域的HTTP访问、可对浏览器标签页等组件进行操作对上网页这点事来说已经代表了近乎无限的可能性。何况乎它还能绑定到一个快捷键上。

附:插件地址和自用一些简单例子。(绿色:复制默认的第二快捷键;蓝色:来源网络;红色:原创(GPL,转载留名...))
XPI地址(3.6可安装):http://mozilla.dorando.at/keyconfig.xpi

后退2(Q)

前进2(W)

刷新2(F)

新建标签页2(C)

关闭标签页2(E)

左标签(A)
gBrowser.mTabContainer.advanceSelectedTab(-1,true);

右标签(D)
gBrowser.mTabContainer.advanceSelectedTab(1,true);

百度引擎(选中文字 + B)
var t = content.getSelection().toString();
if(t) {
      var ff= document.getElementById("content");
      var tab =gBrowser.addTab("http://www.douban.com/subject_search?search_text="+t);
      ff.selectedTab=tab;
}

豆瓣影音书引擎(选中文字 + V)
var t = content.getSelection().toString();
if(t) {
      var ff= document.getElementById("content");
      var tab =gBrowser.addTab("http://www.douban.com/subject_search?search_text="+encodeURI(t));
      ff.selectedTab=tab;
}

谷歌引擎(选中文字 + G)
var t = content.getSelection().toString();
if(t) {
     var ff= document.getElementById("content");
     var tab =gBrowser.addTab("http://www.google.cn/search?source=igchina&hl=zh-CN&rlz=&q="+t+"&btnG=Google+%E6%90%9C%E7%B4%A2");
    ff.selectedTab=tab;
}

百度_多国在线词典(含中中词典)(选中文字 + X)
var t = content.getSelection().toString();
if(t) {
var ff= document.getElementById("content");
 var tab =gBrowser.addTab("http://dict.baidu.com/s?wd="+t);
ff.selectedTab=tab;
}
hitsmaxft
非常火狐
非常火狐
  • UID25803
  • 注册日期2008-08-12
  • 最后登录2024-01-13
  • 发帖数740
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2010-02-14 14:31
键盘操作的话还是vimperator强大

以上功能可以通过vimperator的键位映射实现

如 谷歌引擎(选中文字 + G) 实现代码如下

nnoremap <silent>  g :javascript (function(){ var t = content.getSelection().toString(); if(t) { var ff= document.getElementById("content"); var tab =gBrowser.addTab("http://www.google.cn/search?source=igchina&hl=zh-CN&rlz=&q="+t+"&btnG=Google+%E6%90%9C%E7%B4%A2"); ff.selectedTab=tab; } })(); <CR>

但是实际上g已经是打开quickmark页面的命令,所以应该用x等未使用的键位代替

Lost in fx...
smoke
千年狐狸
千年狐狸
  • UID3052
  • 注册日期2005-02-16
  • 最后登录2015-02-01
  • 发帖数2367
  • 经验12枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
2楼#
发布于:2010-02-14 14:31
技术帖 mark
遇到问题请善用论坛搜索功能
hnstxx
千年狐狸
千年狐狸
  • UID1952
  • 注册日期2005-01-09
  • 最后登录2013-05-14
  • 发帖数4977
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2010-02-14 14:31
学到一些东西^_^
MM:你是个外表冷酷,内心却很甜蜜的男人。
wiiwaker
狐狸大王
狐狸大王
  • UID23532
  • 注册日期2008-04-04
  • 最后登录2019-05-12
  • 发帖数376
  • 经验14枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
4楼#
发布于:2010-02-14 14:31
好贴,感谢楼主分享~

问一些,在keyconfig里设置快捷键的global是什么意思呢?
hansongj
小狐狸
小狐狸
  • UID24888
  • 注册日期2008-06-20
  • 最后登录2019-07-25
  • 发帖数34
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2010-02-14 14:31
我用了个脚本
arch7819
火狐狸
火狐狸
  • UID30890
  • 注册日期2009-10-29
  • 最后登录2011-02-19
  • 发帖数153
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2010-02-14 14:31
GM 是太有名了, 为了安全性考虑才限制了脚本的能力....
eagle5678
千年狐狸
千年狐狸
  • UID4956
  • 注册日期2005-04-10
  • 最后登录2023-04-02
  • 发帖数1247
  • 经验204枚
  • 威望0点
  • 贡献值120点
  • 好评度3点
7楼#
发布于:2010-02-14 14:31
技术帖 mark
游客

返回顶部