zoukankan      html  css  js  c++  java
  • .NET Gecko内核浏览器开发 ——XULRunner介绍(上)

    很多人(至少我)觉得FireFox的源码难看(至今没有完整的看过某个模块),是因为其中不光有C/C++的代码 还有很多是用XUL+CSS做界面用JavaScript做后台实现的,一直以来JS的调试都是个很头疼的问题吧。另外还有很大一部分是以来XPCOM功能实现的。

    “XULRunner是一个Mozilla runtime package,可以用于启动XUL+XPCOM的应用程序。它提供安装、升级、卸载这些程序的机制。XULRunner的还将提供libxul,一个允许在其他产品中嵌入Mozilla技术的解决方案。”   

                                                               ——翻译自Mozilla开发者中心的介绍

    XULRunner 可以下载到最新的的XULRunner 版本

    XULRunner的文件都是干啥的

    XULRUNNER
    │  freebl3.chk
    │  freebl3.dll         ---------------〉NSS Freebl Library
    │  IA2Marshal.dll    ---------------〉
    │  js3250.dll          ---------------〉Netscape 32-bit JavaScript Module
    │  LICENSE
    │  mozcrt19.dll      ---------------〉Mozilla自己的C运行库
    │  nspr4.dll           ---------------〉NSPR Library
    │  nss3.dll            ---------------〉NSS Base Library
    │  nssckbi.dll        ---------------〉
    │  nssdbm3.dll       ---------------〉Legacy Database Driver
    │  nssutil3.dll        ---------------〉NSS Utility Library
    │  plc4.dll             ---------------〉PLC Library
    │  plds4.dll            ---------------〉PLDS Library
    │  smime3.dll         ---------------〉NSS S/MIME Library
    │  softokn3.dll       ---------------〉NSS PKCS #11 Library
    │  sqlite3.dll          ---------------〉SQLite Database Library
    │  ssl3.dll              ---------------〉NSS SSL Library
    │  xpcom.dll          ---------------〉XPCOM跨平台组件模型 其接口正式上篇说的我们要封装的
    │  xul.dll               ---------------〉不解释了 就这个大8M多│ 
    ├─chrome             ---------------〉此目录下有众多的Chrome 当我们对Firefox添加什么功能的时候往往会用到 比如说
    │                                            about:config的设置界面就在这里面 都是些jar文件与manifest文件 jar文件有规定的目│                                            录结构,可以参考一些FireFox扩展或者插件开发的文章
    ├─components      ---------------〉xpt文件 露插件对外的接口描述
    │     
    ├─defaults            ---------------〉一些默认的设置好像可以在这里更改 不过一般不用改
    │                 
    ├─dictionaries       ---------------〉
    │     
    ├─greprefs            ---------------〉啧啧 这个可是好东西
    │      all.js                          ---------------〉所有about:config
    │      security-prefs.js          ---------------〉关于安全的
    │      xpinstall.js                  ---------------〉关于插件安装的 不过就两个属性enable 跟是否需要白名单
    ├─modules            ---------------〉一些MOZ自己的还有比较通用的例如时间显示下载信息显示模块
    │     
    ├─plugins
    │     
    └─res                   ---------------〉各种图标字体表格等等资源

    从下面这个网站

    http://www.oxymoronical.com/experiments/apidocs/

    可以查到XPCOM的interface 应该那个Mozilla自己的网站上也有 不过我没扒翻到。。。。。。

    具体怎么用我们下一篇文章里介绍。可以实现浏览器最基本的功能,想FireFox大部分比较使用的小功能 还是通过XUL+CSS写界面再结合JS等等来实现。我的目标是,能够在自己的浏览器“使用”上FireFox的某些插件、扩展(为什么说使用,因为很多扩展都是开源的,就算不能直接使用,我们说不定也可以通过修改剪接地用上)

    下集预告: 比如说用到nsIScrollable来实现我们希望的(比如说禁用 隐藏 滚到指定位置 按行、页滚)滚动条的时候用到的XPCOM接口

        [Guid("919e792a-6490-40b8-bba5-f9e9ad5640c8"), ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        interface nsIScrollable
        {
            int getCurScrollPos(int scrollOrientation);
            void setCurScrollPos(int scrollOrientation, int curPos);
    
            void setCurScrollPosEx(int curHorizontalPos, int curVerticalPos);
    
            void getScrollRange(int scrollOrientation, out int minPos, out int maxPos);
            void setScrollRange(int scrollOrientation, int minPos, int maxPos);
    
            void setScrollRangeEx(int minHorizontalPos, int maxHorizontalPos, int minVerticalPos, int maxVerticalPos);
    
            int getDefaultScrollbarPreferences(int scrollOrientation);
            void setDefaultScrollbarPreferences(int scrollOrientation, int scrollbarPref);
    
            void getScrollbarVisibility(out bool verticalVisible, out bool horizontalVisible);
    
        }

    最后一些有用的参考资料:

    http://www.ibm.com/developerworks/cn/opensource/os-xpcomfirefox/index.html

    http://www.shangducms.com/post/2009/12/13/XULRunner.aspx

    https://developer.mozilla.org/cn/XULRunner/XULRunner_入门

    https://developer.mozilla.org/cn/Toolkit_API

  • 相关阅读:
    让Mootools的语法结构像Jquery那样
    從此不再談jquery,马上忘掉他开始学Mootools
    解决Firefox的Sync不能同步的问题
    用php做模糊而又精确的查找
    Jquery弹出层插件和拖拽插件的结合使用范例
    Jquery优化效率 提升性能解决方案
    该死的百度部落格又做了什么改动?
    想念
    硬盘出现“I/O设备错误的解决方法
    jquery插件 弹出层的效果实现代码
  • 原文地址:https://www.cnblogs.com/zhuo/p/1690947.html
Copyright © 2011-2022 走看看