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

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

转播到腾讯微博
返回列表 回复 发帖

[推荐] 给新手的userChrome.js安装指导并分享一些常用脚本(10/30更新)

本帖最后由 maoaurora 于 2011-10-30 12:23 编辑

使用这个扩展两年多了 自己修改并合并了些常用脚本 也想给新手一些指引


userChrome的脚本很多 但某些功能是大家普遍使用的(比方说新标签页打开,双击关闭标签,拖拽,鼠标手势,自动复制....)
现在我把这些脚本罗列出来 做好注释 方便新手看懂和使用
当然 这些脚本很多都是论坛里各位大大原创的 再此特别感谢
ithinc Cye3s slimx GOLF-AT czserh
请大家能够体恤他们的无私贡献 简单的地方自己动手 并且善用搜索 可能你就能DIY出自己想要的功能哦~


脚本指引:
2L: userChrome.js 1.4扩展安装  『Update!』
3L: Tab Plus 标签页增强   『Update!』
4L: Scroll Search Plus 搜索增强   『Update!』
5L: InFormEnter Lite 自动填表
6L: Advanced Mouse Gestures 高级鼠标手势
7L: 模拟GM扩展的脚本    『Update!』
23L: adblock#.uc.js去广告脚本(内置过滤列表)  『New』
24L模拟stylish扩展的脚本  『New』



1

评分次数

  • z344257899

userChrome.js 1.4扩展安装『Update!』

本帖最后由 maoaurora 于 2011-10-30 12:53 编辑

1. 打开扩展的官方网址 安装
http://userchromejs.mozdev.org/

2. 重启Firefox

3. 放入"userChrome.js"
直接下载附件解压到"chrome"文件夹即可;
找不到的同学,请打开你的菜单,
在"help-Troubleshooting Information"的页面中有“Profile Directory: Open containing folder" 点击即弹出默认profile路径 - 新建“chrome”文件夹 - 将"userChrome.js"放入就OK了。



引导文件代码
  1. if (location == "chrome://browser/content/browser.xul") {
  2.   userChrome.import("SubScript", "UChrm");
  3. }
复制代码
这个代码的意思是
如果路径指引为chrome://browser/content/browser.xul
就从SubScript这个文件夹里读取uc.js和
uc.xul

注意
在这里你可能会问 为什么这和别的大大给的引导文件代码不同呢?
这是为了方便区分和管理uc.js和user.js 不被误读 影响速度 才做这样的设定


好了,引导文件代码放入后 保存即可

Tips:
很多新手也许刚接触代码 用的都是系统自带的记事本 可能会导致编码问题而无法使用
这里 推荐大家使用Notepad++
它是新手们看代码的很好的帮手
它的官网: http://notepad-plus-plus.org/release/5.7
其中有安装版和zip包 大家可以自己选择下载


4. 在chrome文件夹里新建SubScript文件夹
以后就把uc.js和uc.xul的脚本放在这个文件夹内就能用啦

5. 以下是6个常用uc脚本
标签页增强
搜索栏增强
自动填表
鼠标手势(可翻页)
GM的UC脚本


Tips:
每个脚本都有附件可供新手下载使用
附件中的脚本均已注释 由于贴出代码混乱 请大家自己下载查看

附件: 您所在的用户组无法下载或查看附件

Tab Plus 标签页增强『Update!』

本帖最后由 maoaurora 于 2011-10-30 12:58 编辑

脚本功能:

1. 在新标签页代开书签/历史/搜索/主页/地址
2. 在当前页打开小书签
3. 右键单击标签栏弹出“最近关闭的标签页”   
『New』
4. 双击关闭当前标签页
5. 最简文字、链接拖拽
附件: 您所在的用户组无法下载或查看附件

Scroll Search Plus 搜索增强『Update!』

本帖最后由 maoaurora 于 2011-10-30 13:02 编辑

脚本功能:

1. 右键菜单滚轮搜索
2. 搜索栏滚轮搜索
3. 切换搜索引擎后立即搜索
4. 搜索栏自动复制
5. 搜索栏右击搜索图标清除文字
6. 鼠标中键粘贴(需设about:config - middlemouse.paste为ture)
『New』
7. 附加组件栏并入地址栏  『New』
附件: 您所在的用户组无法下载或查看附件

InFormEnter Lite 自动填表

本帖最后由 maoaurora 于 2010-9-20 01:11 编辑

脚本功能:

右键
增加InFormEnter菜单
根据自己的信息填写表单


附件: 您所在的用户组无法下载或查看附件

Advanced Mouse Gestures 高级鼠标手势『Update!』

本帖最后由 maoaurora 于 2011-10-30 13:06 编辑

手势一览:

左                 增强型后退(若不能后退 则关闭当前页)
右                 下一页(需配合nextPage翻页脚本使用)
左上              上一页(需配合nextPage翻页脚本使用)
下上              本页刷新(跳过缓存)
上下              转到网页上层目录
左下左           关闭左边全部标签页
右下右           关闭右边全部标签页
右上右下右     关闭其他标签页
右左              复制标签页
右向左『连续』 上一标签页
左向右『连续』 下一标签页
右键滚轮向上   转到页首
右键滚轮向下   转到页尾
上                 向上翻页
下                 向下翻页
下右              在当前域名下搜索(Google)
右上              粘贴并转到/搜索
上右              查找Google字典(需先高亮关键词)
左下右           用IE打开当前页
右下左           打开Notepad++(需按照自己的路径更改 也可改为打开其他程序)
上右下           打开Chrome目录(需按照自己的路径更改)
下右上           打开下载文件夹(需按照自己的路径更改)
下上             『弹出式菜单』最近关闭的标签页
右下              新标签页打开about:config
左下右下左      重启浏览器


Notes:
脚本里均已注释 大家不用担心
并附带next page翻页脚本
可直接根据手势翻页


Tips:
其实脚本里的手势可以和firegestures的手势通用哦
给大家一些网站 大家可以自己找些有用的手势脚本

Firegestures 作者提供的脚本网页:
http://www.xuldev.org/firegestures/getscripts.php

Advanced Mouse Gestures原始脚本
http://loda.jp/script/?id=371

Github里高手的脚本
http://github.com/xalnz/firefox-chrome/blob/master/MouseGestures.uc.js

附件: 您所在的用户组无法下载或查看附件

模拟GM扩展的脚本『Update!』

本帖最后由 maoaurora 于 2011-10-30 13:06 编辑

功能类似于GM 可用于绝大多数脚本

附上几个常用的user.js
1. findscripts (在GM脚本库里搜索当前网页可用脚本)
2. image_embed(直接显示链接图片,支持多种图片格式)
3. word_highlight(高亮搜索关键字)
4.
超级引擎跳转

注意哦 放在UserScriptLoader这个文件夹里
附件: 您所在的用户组无法下载或查看附件

欢迎大家提议补充

本帖最后由 maoaurora 于 2010-9-20 01:48 编辑

如果新手还有不明白的地方 可以回帖提出
我会尽我所能的回答大家的疑问
~

btw:
如果翻译不够精准或语序有误导致难以理解 请大家提出 同时也请见谅
习惯英文语序了 吼吼
~
  1. /*
  2. * userChromeJS
  3. *
  4. * This file can be used to customize the functioning of Mozilla's user
  5. * interface.  Usage and syntax follow below; for useful code snippets see
  6. * http://mozilla.zeniko.ch/userchrome.js.html.
  7. *
  8. * Examples:
  9. * setTimeout(function() { document.title = "A new title for every window" }, 2000);
  10. *
  11. * if (location == "chrome://browser/content/browser.xul") {
  12. *   alert("Script loaded in main browser only");
  13. * }
  14. *
  15. * // DOMi window
  16. * if (location == "chrome://inspector/content/inspector.xul") {
  17. *    // Move Urlbar box to main toolbar
  18. *    var tb = document.getElementById('bxURLBar');
  19. *    var el = document.getElementById('mbrInspectorMain');
  20. *    if (tb && el) el.appendChild(tb, el.firstChild);
  21. * }
  22. *
  23. * NOTE: userChromeJS includes an 'import' function to facilitate file management.
  24. * An absolute path or relative path with Directory name property token can be
  25. * used, as follows:
  26. *
  27. * // Single file (javascript .js or overlay .xul file)
  28. * userChrome.import("Full file path");
  29. * userChrome.import("Relative file path", "Token");
  30. * // All .js and .xul files in a folder will be loaded.
  31. * userChrome.import("Full file folder path");
  32. * userChrome.import("Relative file folder path/name", "Token");
  33. * userChrome.import("*", "Token");
  34. * // Console logger
  35. * userChrome.log("My message", "Optional calling script name arg");
  36. *
  37. * NOTE: absolute windows files and folders must be have backslash escaped:
  38. * "C:\\Program Files\\Mozilla\\scripts\\myscript.js"
  39. *
  40. * Examples:
  41. * // Import script in [ProfileDir]/chrome/scripts/myscript.js
  42. * userChrome.import("scripts/myscript.js", "UChrm");
  43. * // Import script in [Profiles]/scripts/myscript.js (share same script in
  44. * // multiple profiles
  45. * userChrome.import("scripts/myscript.js", "DefProfRt");
  46. * // All .js or .xul in profile chrome directory
  47. * userChrome.import("*", "UChrm");
  48. * // Import overlay
  49. * userChrome.import("C:\\Program Files\\Mozilla\\scripts\\myOverlay.xul");
  50. * // Import everything in Desktop folder /scripts
  51. * userChrome.import("scripts", "Desk");
  52. * // Perhaps the only thing you need in this file..
  53. * if (location == "chrome://browser/content/browser.xul") {
  54. *  userChrome.import("scripts", "DefProfRt");
  55. * }
  56. *
  57. * NOTE: for a full listing of directory tokens see the two links found here:
  58. * https://developer.mozilla.org/en/Code_snippets/File_I%2f%2fO#Getting_special_files
  59. * // What's the path for a token?  This will print it in the console..
  60. * userChrome.log(userChrome.getAbsoluteFile("Desk").path, "getAbsoluteFile:'Desk'");
  61. *
  62. * NOTE: userChromeJS includes a log function, invoked as follows:
  63. * userChrome.log("string1", ["string2"])
  64. * Example:
  65. * userChrome.log("hello world!", "myscript.js");
  66. * Results in a console message:
  67. * 2009-05-22 18:07:40 userChromeJS.js::myscript.js: hello world!
  68. *
  69. * NOTE: the date format for the userChrome.log console logger may be user defined:
  70. * Example:
  71. * userChrome.dateFormat = "%Y-%m-%d %H:%M:%S";
  72. *
  73. * NOTE: the following shortcuts are predefined:
  74. * Cc = Components.classes;
  75. * Ci = Components.interfaces;
  76. * Cr = Components.results;
  77. * Cu = Components.utils;
  78. *
  79. */

  80. var WindowHook = {
  81.     observe: function(aSubject, aTopic, aData) {
  82.         if (!aSubject._WindowHook) {
  83.             aSubject._WindowHook = this;
  84.             aSubject.addEventListener("load", this.onLoad_window, false);
  85.         }
  86.     },
  87.     onLoad_window: function() {
  88.         this.removeEventListener("load", this._WindowHook.onLoad_window, false);
  89.         var funcs = this._WindowHook.mFuncs[this.document.location.href] || null;
  90.         if (funcs)
  91.             funcs.forEach(function(aFunc) { aFunc(this); }, this);
  92.         delete this._WindowHook;
  93.     },
  94.     register: function(aURL, aFunc) {
  95.         if (!this.mFuncs) {
  96.             this.mFuncs = {};
  97.             Components.
  98.                 classes["@mozilla.org/observer-service;1"].
  99.                 getService(Components.interfaces.nsIObserverService).
  100.                 addObserver(this, "domwindowopened", false);
  101.         }
  102.         if (!this.mFuncs[aURL])
  103.             this.mFuncs[aURL] = [];
  104.         this.mFuncs[aURL].push(aFunc);
  105.     }
  106. };
  107. window.addEventListener("unload",function(){
  108.     try{
  109.         Components.
  110.             classes["@mozilla.org/observer-service;1"].
  111.             getService(Components.interfaces.nsIObserverService).
  112.             removeObserver(WindowHook, "domwindowopened");
  113.     } catch(e) {} finally {   
  114.         delete WindowHook.register;
  115.         delete WindowHook.onLoad_window;
  116.         delete WindowHook.observe;
  117.         delete WindowHook.mFuncs;
  118.         delete WindowHook;
  119.     }
  120. },false);

  121. var ucMap = {
  122.     "chrome://global/content/customizeToolbar.xul":"customtb",
  123.     "chrome://browser/content/browser.xul":"browser",
  124.     "chrome://inspector/content/inspector.xul":"domi",
  125. }
  126. var spec = location;
  127. if (spec in ucMap ) {
  128.     userChrome.import("lib","UChrm")
  129.     userChrome.import("init/"+ucMap[spec],"UChrm");
  130.     userChrome.import(ucMap[spec],"UChrm");        
  131. }
复制代码
这是我 userchrome.js .... 集成了 windowhook,
主窗体使用的脚本放在 browser 下.
目录结构
  1. D:\Softwre\firefox4\central\chrome>tree
  2. .
  3. ├─browser
  4. ├─customtb
  5. ├─domi
  6. ├─init
  7. │  ├─browser
  8. │  ├─customtb
  9. │  └─domi
  10. └─lib
复制代码

谢谢9L的分享

本帖最后由 maoaurora 于 2010-9-20 03:46 编辑

9L的引导代码结构也很清晰
不过对新手们来说可能复杂了点 嘿嘿~
自动填表那个不错,用着试试
很实用的帖子,顶一个
8# maoaurora

鼠标手势的那个脚本能加个放大和缩小页面的手势吗?
新手用标签和GM似乎都是用扩展稳妥一点
很有分享精神,不过这些内容对于新手来讲,可能还是难了一点。
折腾几年火狐了
俺还是有些不明白的地方
13# friening
  1. '':{name:'Zoom Out',cmd:function(){document.getElementById("cmd_fullZoomReduce").doCommand();}}, // 页面缩小
  2. '':{name:'Zoom In',cmd:function(){document.getElementById("cmd_fullZoomEnlarge").doCommand();}}, // 页面放大
  3. '':{name:'Reset',cmd:function(){document.getElementById("cmd_fullZoomReset").doCommand();}}, // 页面重置
复制代码
引号里的手势需要自定义~
15# ithinc

谢谢大大提议
可以说下还有哪里不够明确的 我马上改~
13# friening

'':{name:'Zoom Out',cmd:function(){document.getElementById("cmd_fullZoomReduce").doCommand();}}, // 页面缩小
'':{name:'Zoom In',cmd:function(){document.getElementById("cmd_fullZoomEnla ...
maoaurora 发表于 2010-9-20 16:48
很好用,谢谢!!
16# Smilence

可以把哪里不明白的具体说明一下吗?
已经很明确了,是个好帖子
.可惜我的drag脚本不能用了.
刚升的小时版.
只能拖链接,不能拖文字来搜索了.
谢谢ls童鞋的鼓励~
小时版不大稳定 脚本失效也算平常
可能等下升级后就能复原了
这就是“尝鲜”的代价 呵呵~

新增: adblock#.uc.js 去广告脚本(内置过滤列表)

本帖最后由 maoaurora 于 2010-9-23 15:22 编辑

脚本说明:

本脚本可大体过滤中英站点广告
适合疯狂脚本迷使用 不建议新手用此替代ADP

内置fanboy的3个list:(9.22更新)
adblock-beta.ini  主过滤列表(Main List)
adblock-stats.ini 站点统计过滤列表(With Stat/Tracking Sites)
adblock-chn.ini   (Chinese List)


Notice:
不支持css和third-party过滤规则
附件: 您所在的用户组无法下载或查看附件

新增: 模拟stylish扩展的脚本

本帖最后由 maoaurora 于 2010-9-23 15:48 编辑

脚本功能:

1. 能独立管理每个css
2. Tools - userStylesheet 下3个下级菜单,更便于管理和使用:
    rebuild            重建
    open folder      打开css文件夹
    Find style for this site     (在stylish库里)查找此站可用的样式
3. 在脚本27行里可更改编辑器路径 更改后右击可直接打开编辑
4. 自带一个css样式
附件: 您所在的用户组无法下载或查看附件
脚本都支持4.0pre7吗?
25# pirately

支持~
楼主,请问,有没有在当前标签页右边打开链接,和当前标签页左边打开链接的脚本?
27# pirately

只有标签右开
  1. gBrowser.addEventListener('TabOpen', function (event) {
  2.         this.moveTabToNext(event.originalTarget, this.mCurrentTab._tPos+1)
  3. }, false);

  4. eval("gBrowser.moveTabToNext = " + gBrowser.moveTabTo.toString()
  5. .replace(/for [\s\S]+?\}/,
  6. <![CDATA[
  7. for (i = 0; i < this.mTabContainer.childNodes.length; i++) {
  8.         var tab = this.mTabContainer.childNodes;
  9.         tab._tPos = i;
  10.         if (tab.hasAttribute('selected')) tab._selected = false;
  11. }
  12. ]]>)
  13. .replace(/var evt[\s\S]*?return/, 'return'));
复制代码
左开试验没成功
何不试试用拖拽拖到左边?
十分感谢
右侧打开标签,有一个小问题,就是如果标签是同一个域父标签下面的子标签,比如本论坛userchrome子项目下面很多帖子,这时候我打开是在父标签的右侧打开。但是,如果是不同域的标签,就在最后打开了,比如打开了本论坛的很多标签,随便定位到中间某个标签,这时候我打开Google或者其他不同域名的标签,就只能在最后一个标签打开了,没有在当前标签的右侧打开。请问,可以使不同域名的标签也在当前标签右侧打开吗?