mozilla_mozilla firefox - CSDN
精华内容
参与话题
  • 作者 |玄空出品 |程序员小灰(ID:chengxuyuanxiaohui)你听过Mozilla这家公司吗?或许很多人会摇头。但是,要说起这家公司的重要产品火狐浏览器,恐怕没有一个...

    作者 | 玄空

    出品 | 程序员小灰(ID:chengxuyuanxiaohui)

    你听过Mozilla这家公司吗? 或许很多人会摇头。但是,要说起这家公司的重要产品火狐浏览器,恐怕没有一个程序员不知道它。

    在今年8月份,Mozilla启动了新一轮的裁员计划(这是2020年迄今为止的第二轮裁员),裁员人数250人,裁员员工大部分来自开发工具部门,总数约占其员工总数的四分之一,Mozilla首席执行官米切尔·贝克在博客中写道:冠状病毒大流行严重影响了我们的收入,我真希望有别的办法。总的来说,两轮裁员加起来几乎占到了公司的三分之一。

    考虑到火狐浏览器一般的用户群中很大一部分是程序员,减少对该领域的投资似乎是一种特别短视的做法,因为这会让你最忠实的用户失望。但对于那些不太熟悉 Mozilla 的人来说,这次裁员似乎只是另一个竞争对手未能在市场取得成功的例子。毕竟,Mozilla 的头牌产品火狐(Firefox)浏览器已经多年没有对市场主导地位发起过挑战了,这或许只是逐渐走向死亡的过程?

    但是Mozilla不仅仅是一个只依靠Firefox的公司,它不仅仅是另一家被微软、苹果和谷歌等价值万亿美元的竞争对手击败的小型科技公司,相反,Mozilla 是一家拥有推动网络标准发展的悠久历史的公司,它的危机应该关系到我们所有人。

    Mozilla简史

    上世纪90年代末,网景浏览器仅用了几个月的时间,就从互联网之王变成了平庸之辈。这个原因只是因为微软捆绑安装Internet Explorer而已,这看起来似乎很不公平,但大多数行业观察人士认为,未来浏览器将是免费且无处不在的,你很难完全依靠一个浏览器来承载整个公司的业务。

    然而,网景无心之中仿佛为未来做了一个天才之举,它决定把浏览器转变成一个开源项目,并因此孵化了Mozilla,由Mozilla独立运作开发浏览器、邮件和聊天工具等等。然而在拥有更多资金和更大影响力的竞争对手面前,终究还是没能扭转乾坤。但是在接下来的几年里,Mozilla 团队转变成了一个不同的组织,这就是非营利性的Mozilla基金会,致力于推广开放网络标准。

    不久之后,一群 Mozilla 的开发者创造出了一个新的浏览器Firefox,并将其剥离成一个独立全资子公司,直到今天仍在为 Mozilla基金会提供资金。如果这些与收购网景的美国在线(AOL)保持紧密联系,它们早在几年前就会被互联网风潮的变化所消亡。事实上,即使是 AOL 也放弃了用Netscape,转而使用 Internet Explorer,而且不久之后它就变得无足轻重了。

    Mozilla的贡献

    火狐是 Mozilla 最著名的产品。早期的 Firefox 在广告屏蔽、数据隐私和开发工具方面是一个先锋,作为一款开源浏览器产品,Firefox一直以来对任何沾了“商业气息”的行动都谨小慎微。Mozilla甚至从未在Firefox中为任何公司做过广告。长期以来除了Google,Mozilla几乎没有任何经济来源,它的绝大部分收入来自搜索引擎合作。早期凭借Firebug吸粉无数,而在chrome有了chromedevtools之后一切就变的不太一样了。

    如果这就是 Mozilla 的全部,那么这家公司就是 Chromium 和 WebKit 征服世界的又一个减速带。相反,Mozilla 推进了一些当今最重要的网络技术,以下是他们最好的四个倡议。

    1. Rust

    当网景公司倒闭时,很少有人意识到它最重要的贡献是留下了一个简单的脚本语言,这种语言就是 JavaScript。

    JavaScript是在网景公司统治网络的短暂时期内创建的,但是在网景失败后的二十年里,JavaScript 变得越来越普遍,越来越占主导地位,而火狐留下的最重要的创新可能是高效的类型安全的 Rust 语言。

    Rust致力于成为优雅解决高并发和高安全性系统问题的编程语言,Rust是针对多核体系提出的语言,并且吸收一些其他动态语言的重要特性,比如不需要管理内存,比如不会出现Null指针等等。许多认为C++过于宽松和容易出错的开发人员更喜欢 Rust,而且那些认为OOP 语言过于笨重和低效的开发人员也喜欢 Rust。尽管使用率相对较低,自2016年以来,Rust 在 Stack Overflow 的开发者调查中每年都被评为最受欢迎的编程语言。

    遗憾的是,对于现在的 Mozilla 来说,贡献 Rust 语言已经不再是优先考虑的事情。在最近一轮的裁员中,他们裁掉了专注于 Rust 的开发人员和服务团队,而正是这群人正在试图建立一个新的基于 Rust 的浏览器引擎。但是RUST不会随着这艘巨轮而沉没,一个独立的RUST基金会的规划已经在进行中。

    2. HTML5

    我们很难记得,但曾经确实有过一段时间,全世界都陷入了 HTML 和 XHTML 之间的恶战,XHTML 是一种非向后兼容的 HTML 版本,它使用了更严格的 XML 语法重新设计。而在2004年,负责 HTML (W3C)的标准机构正式停止了所有 HTML 的工作。

    如果没有 WHATWG(Web Hypertext Application Technology Working Group)网页超文本应用技术工作小组,这个由苹果、 Opera 和 Mozilla 组成的特别小组,故事本来就会结束了,剩下的就是历史就是 WHATWG 赢了,它迫使 W3C 改弦易辙,并在 HTML5的保护伞下推出了一系列新标准,包括免 flash 视频、网络工作者、网络套接字等等。

    WHATWG成立的原因是W3C意图放弃HTML,而力图发展XML技术,而在2007年Mozilla基金会、苹果、Opera等公司建议 W3C跟随WHATWG的HTML5,才促使了HTML5成为我们现在的标准。

    Mozilla虽然不是这场闹剧的主导者,但是他们在发起这项运动中起到了重要作用,这项运动帮助我们定义了接下来十年的网络技术。

    3. Asm.js

    Mozilla Firfox是第一个实现针对asm.js优化的浏览器。从技术上讲,asm.js 只是 JavaScript 的一个子集,它可以避免JavaScript引擎某些难以优化的机制和模式(主要是垃圾回收和类型判断),达到JavaScript引擎运行优化的目的。在实际运用中,不大可能手写asm.js规范的代码,写起来异常麻烦并且容易出错,但是 Mozilla 的开发人员证明他们可以编译其他语言到这种性能增强的语言,他叫做Emscripten ,就是这个东西把在C++ Unreal 引擎上构建的实时3D 游戏放在一个网络浏览器里。

    Asm.js是近代网络史上最重要的创新跳板: WebAssembly。WebAssembly字节码是一种抹平了不同CPU架构的机器码,WebAssembly字节码不能直接在任何一种CPU架构上运行,但由于非常接近机器码,可以非常快的被翻译为对应架构的机器码。

    WebAssembly是 Mozilla 和其他浏览器制造商的一个合作项目,但是如果没有 asm.js 的例子,它就不会如此迅速地诞生。即使在今天,对于一些不支持 WebAssembly 的旧浏览器来说,asm.js 仍然是 WebAssembly 的向下兼容的补充。

    4. MDN (Mozilla Developer Network)

    MDN 是高质量开发人员文档的巨大资源,你可以把它想象成一个现代网络开发的维基百科,或者是 W3Schools 的一个更好的版本。

    如果你曾经在网上搜索过答案,那么你可能曾经遇到过 MDN 这样一个瑰宝。也许你已经使用了其详尽的 CSS 属性参考,或者其组织良好的 HTML DOM 参考,也许你已经对某个特定的新兴 API 进行了深入研究,比如 IndexedDB 或者是 WebRTC。

    现在 Mozilla 已经彻底干掉了 MDN 团队。虽然他们承诺保持流行网站继续运行,并且可能与其他合作伙伴获得更多的社区支持。但是,如果没有一个积极的组织注入资金和人才,MDN 是否能够保持其高标准就成了一个悬而未决的问题。毕竟,Mozilla 已经有了一大堆被抛弃的早期网络教育项目,比如 Webmaker、 Mozilla Backpack,以及 X-Ray Goggles (一种介绍 HTML 的非常简单的方法,比90%的视频教程都更有效)。如果MDN消失的话,那么对所有人来说都是一个巨大无比的损失。

    Mozilla“死因”何在?

    虽然 Mozilla 还没有彻底完蛋,但是它显然已经走到了历史的拐点。在 Mozilla 发给员工的解雇信中将责任归咎于新冠病毒,这令所有人都心生怀疑。毕竟,Mozilla 创建Mozilla基金会就是为了帮助 Mozilla 渡过短期冲击,并非从长远角度考虑问题。它的设计初衷是将Mozilla 的软件开发工作与反复无常的的CEO们以及希望投资翻番的硅谷投资者隔离开来。虽然新冠病毒终究会过去,但是想重建一个开发团队和重新获得开发人员的信任并不容易。

    2019年9月,Mozilla公布了Mozilla基金会及公司的财务状况。2018年度总收入是4.5亿美元,其中4.3亿美元来自授权收(royalties),主要是在浏览器中嵌入搜索引擎的广告,订阅和广告收入是537.7万美元(2018年),占比不足2%。而在支出部分,最大的支出是软件开发,高达2.8亿美元,其次是品牌和市场费用,高达528万美元。

    Mozilla 没有说出但经常在科技媒体上报道的事实是,Mozilla 的收入模式极其脆弱:浏览器开发竞争对手的广告收入。

    超过90% 的Mozilla资金来自于与 Google 的一项协议:将google作为Firefox的默认搜索引擎。作为回报,Mozilla 每年获得超过4亿美元的补贴。尽管 Firefox 的市场渗透率浏览器已经暴跌,但是这个协议可能会一直延续到2023年。

    Firefox十年的衰退

    多年来,谷歌的更新速度变慢了,也许他们继续资助 Firefox 只是因为他们不想让这个苦苦挣扎的浏览器完全消亡,而且他们自己的方式已经引起了反垄断的关注,这与微软曾经投资苹果的原因大致相同,但无论谷歌的意图是什么,Mozilla几乎完全依赖于一个科技巨头的捐赠似乎是一个严重的战略错误。

    多年来,Mozilla 一直试图开发商业产品,比如 Firefox OS,一个昂贵的 VPN 网络和一个高级书签服务。这些计划大多失败了,现在,Mozilla将目光投向了一个令人失望的新目标: 通过差异化的用户体验实现核心浏览器的增长。你可以通过多种方式了解这一点,但至少有一种解释是,他们希望通过修改浏览器的用户界面,用新的营销手段重新打包当前的产品从而取得成功。如果是这样的话,那么 Mozilla 令人心碎的衰落故事也是它结束的开始。

    如果你希望对Mozilla贡献微薄之力,最好不要用捐款的方式,由于公司的建立方式,这些钱没有一分会用于 Firefox 或者开发工具。如果你有技能和时间,最好的支持就是加入 Mozilla 社区,为他们的代码库做贡献。

    点分享点点赞点在看
    
    展开全文
  • 为什么浏览器User-agent总是有Mozilla字样你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?MosaicMozillaNetscapeInternet ExplorerGeckoFirefoxKHTMLOperaSafariIEChrome结论各大浏览器...

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
    Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)
    

    Mosaic

    故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Supercomputing Applications,简称NCSA)开发,并于1993年发布的一款浏览器。它自称“NCSA_Mosaic/2.0(Windows 3.1)”,Mosaic可以同时展示文字和图片,从此浏览器变得有趣多了。

    Mozilla

    然而很快就出现了另一个浏览器,这就是著名的Mozilla,中文名称摩斯拉。一说 Mozilla = Mosaic + Killer,意为Mosaic杀手,也有说法是 Mozilla = Mosaic & Godzilla,意为马赛克和哥斯拉,而Mozilla最初的吉祥物是只绿色大蜥蜴,后来更改为红色暴龙,跟哥斯拉长得一样。

    Netscape

    但Mosaic对此非常不高兴,于是后来Mozilla更名为Netscape,也就是网景。Netscape自称“Mozilla/1.0(Win3.1)”,事情开始变得更加有趣。网景支持框架(frame),由于大家的喜欢框架变得流行起来,但是Mosaic不支持框架,于是网站管理员探测user agent,对Mozilla浏览器发送含有框架的页面,对非Mozilla浏览器发送没有框架的页面。

    Internet Explorer 1.0

    后来网景拿微软寻开心,称微软的Windows是“没有调试过的硬件驱动程序”。微软很生气,后果很严重。此后微软开发了自己的浏览器,这就是Internet Explorer,并希望它可以成为Netscape Killer。IE同样支持框架,但它不是Mozilla,所以它总是收不到含有框架的页面。微软很郁闷很快就沉不住气了,它不想等到所有的网站管理员都了解IE并且给IE发送含有框架的页面,它选择宣布IE是兼容Mozilla,并且模仿Netscape称IE为“Mozilla/1.22(compatible; MSIE 2.0; Windows 95)”,于是IE可以收到含有框架的页面了,所有微软的人都嗨皮了,但是网站管理员开始晕了。

    Gecko

    因为微软将IE和Windows捆绑销售,并且把IE做得比Netscape更好,于是第一次浏览器血腥大战爆发了,结果是Netscape以失败退出历史舞台,微软更加嗨皮。但没想到Netscape居然以Mozilla的名义重生了,并且开发了Gecko,这次它自称为“Mozilla/5.0(Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826”

    Firefox

    Gecko是一款渲染引擎并且很出色。Mozilla后来变成了Firefox,并自称“Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0”。Firefox性能很出色,Gecko也开始攻城略地,其他新的浏览器使用了它的代码,并且将它们自己称为“Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1”,以及“Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0”,每一个都将自己装作Mozilla,而它们全都使用Gecko。

    KHTML

    Gecko很出色,而IE完全跟不上它,因此user agent探测规则变了,使用Gecko的浏览器被发送了更好的代码,而其他浏览器则没有这种待遇。Linux的追随者对此很难过,因为他们编写了Konqueror,它的引擎是KHTML,他们认为KHTML和Gecko一样出色,但却因为不是Gecko而得不到好的页面,于是Konqueror为得到更好的页面开始将自己伪装成“like Gecko”,并自称为“Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)”。自此user agent变得更加混乱。

    Opera

    这时更有Opera跳出来说“毫无疑问,我们应该让用户来决定他们想让我们伪装成哪个浏览器。”于是Opera干脆创建了菜单项让用户自主选择让Opera浏览器变成“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51”,或者“Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51”, 或者“Opera/9.51 (Windows NT 5.1; U; en)”

    Safari

    后来苹果开发了Safari浏览器,并使用KHTML作为渲染引擎,但苹果加入了许多新的特性,于是苹果从KHTML另辟分支称之为WebKit,但它又不想抛弃那些为KHTML编写的页面,于是Safari自称为“Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5”,这进一步加剧了user agent的混乱局面。

    Internet Explorer 2.0

    因为微软十分忌惮Firefox,于是IE重装上阵,这次它自称为“Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ”,并且渲染效果同样出色,但是需要网站管理员的指令它这么做才行。

    Chrome

    再后来,谷歌开发了Chrome浏览器,Chrome使用Webkit作为渲染引擎,和Safari之前一样,它想要那些为Safari编写的页面,于是它伪装成了Safari。于是Chrome使用WebKit,并将自己伪装成Safari,WebKit伪装成KHTML,KHTML伪装成Gecko,最后所有的浏览器都伪装成了Mozilla,这就是为什么所有的浏览器User-Agent里都有Mozilla。Chrome自称为“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13”

    结论

    因为以上这段历史,现在的User-Agent字符串变得一团糟,几乎根本无法彰显它最初的意义。追根溯源,微软可以说是这一切的始作俑者,但后来每一个人都在试图假扮别人,最终把User-Agent搞得混乱不堪。
    一句话结论:因为网站开发者可能会因为你是某浏览器(这里是 Mozilla),所以输出一些特殊功能的程序代码(这里指好的特殊功能),所以当其它浏览器也支持这种好功能时,就试图去模仿 Mozilla 浏览器让网站输出跟 Mozilla 一样的内容,而不是输出被阉割功能的程序代码。大家都为了让网站输出最好的内容,都试图假装自己是 Mozilla 一个已经不存在的浏览器……

    各大浏览器诞生年表

    1993年1月23日:Mosaic
    1994年12月:Netscape
    1994年:Opera
    1995年8月16日:Internet Explorer
    1996年10月14日:Kongqueror
    2003年1月7日:Safari
    2008年9月2日:Chrome

    注:本文转自简明现代魔法。

    展开全文
  • js判断的方式都是利用浏览器的useragent字段。通过判断useragent字段里面是否包含有MSIE字段来判断是否是IE系列浏览器,但是在IE11之后,IE11里面的useagent没有MSIE字样。IE 11的userAgent为:"Mozilla/5.0

    兼容IE11的判断方式

    var getExplorer = (function() {
        var explorer = window.navigator.userAgent,
        compare = function(s) { return (explorer.indexOf(s) >= 0); },
        ie11 = (function() { return ("ActiveXObject" in window) })();
        if (compare("MSIE") || ie11) { return 'ie'; }
        else if (compare("Firefox") && !ie11) { return 'Firefox'; }
        else if (compare("Chrome") && !ie11) { return 'Chrome'; }
        else if (compare("Opera") && !ie11) { return 'Opera'; }
        else if (compare("Safari") && !ie11) { return 'Safari'; }
    })()
    
    注意:getExplorer返回结果是一个字符串,如判断是否为IE浏览器
    if (getExplorer == 'ie') {
     alert('当前浏览器版本:IE');  
    }
    
    


    参考文献1:http://blog.csdn.net/whupanyinghua/article/details/38026027

    js判断的方式都是利用浏览器的useragent字段。通过判断useragent字段里面是否包含有MSIE字段来判断是否是IE系列浏览器,但是在IE11之后,IE11里面的useagent没有MSIE字样。IE 11的userAgent为:"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Shuame; rv:11.0) like Gecko"。IE11之后根据MSIE的方式来判断,对IE11是无效的。
    
    其实除了userAgent字段外,我们可以使用ActiveXObject对象来进行判断。
    
    一个很简单的判断函数如下
    function isIE()
    {
        if(!!window.ActiveXObject || "ActiveXObject" in window)
            return true;
        else
            return false;
    }


    参考文献2:http://www.softwhy.com/forum.php?mod=viewthread&tid=15052

    获取IE浏览器的版本在以前非常的好操作,但是由于IE11浏览器的出现,导致很多以前常用的方法已经无能为力,下面就介绍一下如何判断IE浏览器的版本,并且能够兼容IE11浏览器。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=" utf-8">
    <meta name="author" content="http://www.softwhy.com/" />
    <title>蚂蚁部落</title>
    <script type="text/javascript">
    var userAgent = navigator.userAgent,   
    rMsie = /(msie\s|trident.*rv<img src="static/image/smiley/default/smile.gif" smilieid="1" alt="" border="0">([\w.]+)/,   
    rFirefox = /(firefox)\/([\w.]+)/,   
    rOpera = /(opera).+version\/([\w.]+)/,   
    rChrome = /(chrome)\/([\w.]+)/,   
    rSafari = /version\/([\w.]+).*(safari)/;  
    var browser;  
    var version;  
    var ua = userAgent.toLowerCase();  
    function uaMatch(ua){  
      var match = rMsie.exec(ua);  
      if(match != null){  
        return { browser : "IE", version : match[2] || "0" };  
      }  
      var match = rFirefox.exec(ua);  
      if (match != null) {  
        return { browser : match[1] || "", version : match[2] || "0" };  
      }  
      var match = rOpera.exec(ua);  
      if (match != null) {  
        return { browser : match[1] || "", version : match[2] || "0" };  
      }  
      var match = rChrome.exec(ua);  
      if (match != null) {  
        return { browser : match[1] || "", version : match[2] || "0" };  
      }  
      var match = rSafari.exec(ua);  
      if (match != null) {  
        return { browser : match[2] || "", version : match[1] || "0" };  
      }  
      if (match != null) {  
        return { browser : "", version : "0" };  
      }  
    }  
    var browserMatch = uaMatch(userAgent.toLowerCase());  
    if (browserMatch.browser){  
      browser = browserMatch.browser;  
      version = browserMatch.version;  
    }  
    document.write(browser+version);          
    </script>
    </script>
    </head>
    <body>
     
    </body>
    </html>
    上面的代码实现了判断功能,下面介绍一下它的实现原理,希望能够给需要的朋友带来帮助。
    先来看一段代码:

    navigator.userAgent
    IE11下的信息截图:

    然后使用相应的正则表达式进行匹配。IE11和以前版本的浏览器还是有较大差别的,以前的版本,这个信息中包含msie,IE11中没有了,新增加trident,后面跟着浏览器的版本号码,这一点要特别注意一下。





    展开全文
  • 浏览器UA mozilla/5.0发展史

    千次阅读 2018-05-13 17:06:15
    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36Mozilla/5.0 (Linux; U...

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?


    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
    Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0

    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)


    故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Supercomputing Applications,简称NCSA)开发,并于1993年发布的一款浏览器。它自称“NCSA_Mosaic/2.0(Windows 3.1)”,Mosaic可以同时展示文字和图片,从此浏览器变得有趣多了。

    然而很快就出现了另一个浏览器,这就是著名的Mozilla,中文名称摩斯拉。一说 Mozilla = Mosaic + Killer,意为Mosaic杀手,也有说法是 Mozilla = Mosaic & Godzilla,意为马赛克和哥斯拉,而Mozilla最初的吉祥物是只绿色大蜥蜴,后来更改为红色暴龙,跟哥斯拉长得一样。


    但Mosaic对此非常不高兴,于是后来Mozilla更名为Netscape,也就是网景。Netscape自称“Mozilla/1.0(Win3.1)”,事情开始变得更加有趣。网景支持框架(frame),由于大家的喜欢框架变得流行起来,但是Mosaic不支持框架,于是网站管理员探测user agent,对Mozilla浏览器发送含有框架的页面,对非Mozilla浏览器发送没有框架的页面。


    后来网景拿微软寻开心,称微软的Windows是“没有调试过的硬件驱动程序”。微软很生气,后果很严重。此后微软开发了自己的浏览器,这就是Internet Explorer,并希望它可以成为Netscape Killer。IE同样支持框架,但它不是Mozilla,所以它总是收不到含有框架的页面。微软很郁闷很快就沉不住气了,它不想等到所有的网站管理员都了解IE并且给IE发送含有框架的页面,它选择宣布IE是兼容Mozilla,并且模仿Netscape称IE为“Mozilla/1.22(compatible; MSIE 2.0; Windows 95)”,于是IE可以收到含有框架的页面了,所有微软的人都嗨皮了,但是网站管理员开始晕了。


    因为微软将IE和Windows捆绑销售,并且把IE做得比Netscape更好,于是第一次浏览器血腥大战爆发了,结果是Netscape以失败退出历史舞台,微软更加嗨皮。但没想到Netscape居然以Mozilla的名义重生了,并且开发了Gecko,这次它自称为“Mozilla/5.0(Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826”。

    Gecko是一款渲染引擎并且很出色。Mozilla后来变成了Firefox,并自称“Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0”。Firefox性能很出色,Gecko也开始攻城略地,其他新的浏览器使用了它的代码,并且将它们自己称为“Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1”,以及“Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0”,每一个都将自己装作Mozilla,而它们全都使用Gecko。


    Gecko很出色,而IE完全跟不上它,因此user agent探测规则变了,使用Gecko的浏览器被发送了更好的代码,而其他浏览器则没有这种待遇。Linux的追随者对此很难过,因为他们编写了Konqueror,它的引擎是KHTML,他们认为KHTML和Gecko一样出色,但却因为不是Gecko而得不到好的页面,于是Konqueror为得到更好的页面开始将自己伪装成“like Gecko”,并自称为“Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)”。自此user agent变得更加混乱。


    这时更有Opera跳出来说“毫无疑问,我们应该让用户来决定他们想让我们伪装成哪个浏览器。”于是Opera干脆创建了菜单项让用户自主选择让Opera浏览器变成“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51”,或者“Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51”, 或者“Opera/9.51 (Windows NT 5.1; U; en)”。


    后来苹果开发了Safari浏览器,并使用KHTML作为渲染引擎,但苹果加入了许多新的特性,于是苹果从KHTML另辟分支称之为WebKit,但它又不想抛弃那些为KHTML编写的页面,于是Safari自称为“Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5”,这进一步加剧了user agent的混乱局面。

    因为微软十分忌惮Firefox,于是IE重装上阵,这次它自称为“Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ”,并且渲染效果同样出色,但是需要网站管理员的指令它这么做才行。


    再后来,谷歌开发了Chrome浏览器,Chrome使用Webkit作为渲染引擎,和Safari之前一样,它想要那些为Safari编写的页面,于是它伪装成了Safari。于是Chrome使用WebKit,并将自己伪装成Safari,WebKit伪装成KHTML,KHTML伪装成Gecko,最后所有的浏览器都伪装成了Mozilla,这就是为什么所有的浏览器User-Agent里都有Mozilla。Chrome自称为“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13”。

    因为以上这段历史,现在的User-Agent字符串变得一团糟,几乎根本无法彰显它最初的意义。追根溯源,微软可以说是这一切的始作俑者,但后来每一个人都在试图假扮别人,最终把User-Agent搞得混乱不堪。


    一句话结论:因为网站开发者可能会因为你是某浏览器(这里是 Mozilla),所以输出一些特殊功能的程序代码(这里指好的特殊功能),所以当其它浏览器也支持这种好功能时,就试图去模仿 Mozilla 浏览器让网站输出跟 Mozilla 一样的内容,而不是输出被阉割功能的程序代码。大家都为了让网站输出最好的内容,都试图假装自己是 Mozilla 一个已经不存在的浏览器……


    附各大浏览器诞生年表:
    1993年1月23日:Mosaic
    1994年12月:Netscape
    1994年:Opera
    1995年8月16日:Internet Explorer
    1996年10月14日:Kongqueror
    2003年1月7日:Safari
    2008年9月2日:Chrome
    注:本文转自简明现代魔法。
    展开全文
  • mozilla

    2019-01-01 06:15:56
    Mozilla基金会简称Mozilla(缩写MF或MoFo),是为支持和领导开源的Mozilla项目而设立的一个非营利组织。...它拥有一个称作Mozilla公司的子公司,雇佣了一些Mozilla开发人员并协调Mozilla Firefox网...
  • 被遗忘的 Mozilla

    2020-10-17 00:20:57
    作者 |玄空出品 |程序员小灰(ID:chengxuyuanxiaohui)你听过Mozilla这家公司吗?或许很多人会摇头。但是,要说起这家公司的重要产品火狐浏览器,恐怕没有一个...
  • mozilla原代码编译

    千次阅读 2013-05-07 23:48:18
    参考文档:https://developer.mozilla.org/en-US/docs/Simple_Firefox_build Hardware requirements ...Mozilla takes time to build. You need a development-class system: A fast processor, ideally with s
  • 在 Java 程序中内嵌 Mozilla 浏览器

    千次阅读 2015-03-20 15:23:43
    简介 SWT 浏览器部件是 SWT 所提供的众多部件中较为复杂的一个,它提供了在 Java 应用程序中内嵌浏览器应用并通过 Java API 与之进行交互的能力。... 本文主要包含两个方面的内容:1. 如何在 Java 应用程序中
  • Mozilla Rhino 简介

    万次阅读 2011-06-13 10:28:00
    Rhino 是一个纯 Java 的开源的 JavaScript 实现。他的名字来源于 O'Reilly 关于 JavaScript 的书的封面:1.简介 rhino是使用java代码实现的javascript解释器,它实现了javascript的核心,符合Ecma-262标准,支持...
  • 系统信息:ubuntu 12.04 TSL 32位x86系统 今天第一次用ubuntu的系统启动eclipse内置的游览器报了这样的错误: eclipse3.5(jee)和eclipse3.7(sdk)...Nomore handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not s
  • 该公司正在削减对广受欢迎的开发者工具部门的投资,解散了整个威胁管理团队,对正在用Rust研发下一代浏览器引擎的Servo团队进行裁员,并且解雇了MDN(the Mozilla Developer Network,Mozilla开发者网络)团队的几乎...
  • Ubuntu下运行Swt带browser程序出现Unknown Mozilla path (MOZILLA_FIVE_HOME not set)异常 昨天把T400换成8G内存,顺势重装了ubuntu 64bit,今天run我的一个swt项目的时候,报错No more handles [Unkno
  • FireFox 安装 Mozilla ActiveX Plugin

    千次阅读 2008-09-20 17:05:00
    引用 安全注意使用 ActiveX 可能会造成电脑安全问题,因此除非你在工作上有需要在有特別设计 (custom-designed) 的...Mozilla 浏览器本身并不支持 ActiveX 控件 (ActiveX control),但是如果你在工作上有特別需要,你可
  • Mozilla5.0的含义

    千次阅读 2019-01-04 06:32:45
    amp;tid=757008 最早的时候有一个浏览器叫NCSAMosaic,把自己标称为NCSA_Mosaic/2.0(Windows 3.1)。它支持文字显示的同一时候还支持图片。于是Web開始好玩起来 ...“Mozilla”,事实上就是“Mo...
  • Mozilla5.0的意思

    万次阅读 2014-08-07 13:45:37
    最早的时候有一个浏览器叫NCSA ...然后出现了一个新的网页浏览器,“Mozilla”,其实就是“Mosaic终结者”的意思,这搞的Mosaic很不爽,(毕竟Mosaic出道早,江湖老),为了避免与NCSA的法律纠葛,新浏览器最后改名为Ne
  • org.mozilla.javascript-1.7.2.jar资源包
  •  Mozilla扩展系列链接:1,浅谈基于Mozilla Thunderbird的扩展开发2,基于Mozilla平台的扩展开发(续)----XPCOM组件篇3,基于Mozilla Thunderbird的扩展开发(三)---如何获取邮件的完整信息4,基于Mozilla ...
  • 你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 Mozilla/5.0 ...
  • Mozilla JavaScript

    2020-03-10 17:50:01
    JavaScript(JS) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web 页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,例如Node.js、Apache CouchDB和Adobe Acrobat。...
  • [Mozilla] JavaXPCOM 的jar 包概述

    千次阅读 2011-04-01 15:01:00
    关于javaxpcom 的jar 包概述
1 2 3 4 5 ... 20
收藏数 261,769
精华内容 104,707
关键字:

mozilla