From 8c02a0d34c08717b8978212e626d99dd459f21e9 Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Mon, 14 May 2018 10:26:10 +0100 Subject: [PATCH] Fix #283 and remove hidden nodes --- JSDOMParser.js | 8 +- Readability.js | 50 ++---- test/test-pages/cnn/expected.html | 16 -- test/test-pages/ehow-2/expected.html | 12 +- .../hidden-nodes/expected-metadata.json | 7 + test/test-pages/hidden-nodes/expected.html | 4 + test/test-pages/hidden-nodes/source.html | 29 ++++ test/test-pages/wikipedia/expected.html | 144 +++++++++--------- 8 files changed, 133 insertions(+), 137 deletions(-) create mode 100644 test/test-pages/hidden-nodes/expected-metadata.json create mode 100644 test/test-pages/hidden-nodes/expected.html create mode 100644 test/test-pages/hidden-nodes/source.html diff --git a/JSDOMParser.js b/JSDOMParser.js index 7b86601..889c6db 100644 --- a/JSDOMParser.js +++ b/JSDOMParser.js @@ -778,7 +778,13 @@ break; } } - } + }, + + hasAttribute: function (name) { + return this.attributes.some(function (attr) { + return attr.name == name; + }); + }, }; var Style = function (node) { diff --git a/Readability.js b/Readability.js index 3e74917..8bf806d 100644 --- a/Readability.js +++ b/Readability.js @@ -691,37 +691,6 @@ Readability.prototype = { return node && node.nextElementSibling; }, - /** - * Like _getNextNode, but for DOM implementations with no - * firstElementChild/nextElementSibling functionality... - */ - _getNextNodeNoElementProperties: function(node, ignoreSelfAndKids) { - function nextSiblingEl(n) { - do { - n = n.nextSibling; - } while (n && n.nodeType !== n.ELEMENT_NODE); - return n; - } - // First check for kids if those aren't being ignored - if (!ignoreSelfAndKids && node.children[0]) { - return node.children[0]; - } - // Then for siblings... - var next = nextSiblingEl(node); - if (next) { - return next; - } - // And finally, move up the parent chain *and* find a sibling - // (because this is depth-first traversal, we will have already - // seen the parent nodes themselves). - do { - node = node.parentNode; - if (node) - next = nextSiblingEl(node); - } while (node && !next); - return node && next; - }, - _checkByline: function(node, matchString) { if (this._articleByline) { return false; @@ -784,6 +753,12 @@ Readability.prototype = { while (node) { var matchString = node.className + " " + node.id; + if (!this._isProbablyVisible(node)) { + this.log("Removing hidden node - " + matchString); + node = this._removeAndGetNext(node); + continue; + } + // Check to see if this node is a byline, and remove it if it is. if (this._checkByline(node, matchString)) { node = this._removeAndGetNext(node); @@ -1694,6 +1669,10 @@ Readability.prototype = { this._flags = this._flags & ~flag; }, + _isProbablyVisible: function(node) { + return node.style.display != "none" && !node.hasAttribute("hidden"); + }, + /** * Decides whether or not the document is reader-able without parsing the whole thing. * @@ -1718,9 +1697,9 @@ Readability.prototype = { nodes = [].concat.apply(Array.from(set), nodes); } - // FIXME we should have a fallback for helperIsVisible, but this is - // problematic because of jsdom's elem.style handling - see - // https://github.com/mozilla/readability/pull/186 for context. + if (!helperIsVisible) { + helperIsVisible = this._isProbablyVisible; + } var score = 0; // This is a little cheeky, we use the accumulator 'score' to decide what to return from @@ -1774,9 +1753,6 @@ Readability.prototype = { } } - if (typeof this._doc.documentElement.firstElementChild === "undefined") { - this._getNextNode = this._getNextNodeNoElementProperties; - } // Remove script tags from the document. this._removeScripts(this._doc); diff --git a/test/test-pages/cnn/expected.html b/test/test-pages/cnn/expected.html index abf5341..0aafe57 100644 --- a/test/test-pages/cnn/expected.html +++ b/test/test-pages/cnn/expected.html @@ -1,20 +1,5 @@
-
-
-
-
-
-
-
-

-
-
-
-
-
-
-

The U.S. has long been heralded as a land of opportunity -- a place where anyone can succeed regardless of the economic class they were born into.

But a new report released on Monday by Stanford University's Center on Poverty and Inequality calls that into question.

The report assessed poverty levels, income and wealth inequality, economic mobility and unemployment levels among 10 wealthy countries with social welfare programs.

@@ -24,7 +9,6 @@

Powered by SmartAsset.com

-

diff --git a/test/test-pages/ehow-2/expected.html b/test/test-pages/ehow-2/expected.html index 7dda921..f2f4f27 100644 --- a/test/test-pages/ehow-2/expected.html +++ b/test/test-pages/ehow-2/expected.html @@ -9,17 +9,7 @@ var src = this.src ? this.src.replace(/^https?:/,'') : ''; if (src != failover){ this.src = failover; - }"/>

-
-
-

-

-

Follow

+ }"/>

diff --git a/test/test-pages/hidden-nodes/expected-metadata.json b/test/test-pages/hidden-nodes/expected-metadata.json new file mode 100644 index 0000000..b1b440b --- /dev/null +++ b/test/test-pages/hidden-nodes/expected-metadata.json @@ -0,0 +1,7 @@ +{ + "title": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", + "byline": null, + "dir": null, + "excerpt": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", + "readerable": true +} diff --git a/test/test-pages/hidden-nodes/expected.html b/test/test-pages/hidden-nodes/expected.html new file mode 100644 index 0000000..bb0e068 --- /dev/null +++ b/test/test-pages/hidden-nodes/expected.html @@ -0,0 +1,4 @@ +
+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Secondary header

+
\ No newline at end of file diff --git a/test/test-pages/hidden-nodes/source.html b/test/test-pages/hidden-nodes/source.html new file mode 100644 index 0000000..e0699a0 --- /dev/null +++ b/test/test-pages/hidden-nodes/source.html @@ -0,0 +1,29 @@ + + + + + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt + + + +

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +

+

+ Secondary header +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +

+

+ Third header +

+ + + diff --git a/test/test-pages/wikipedia/expected.html b/test/test-pages/wikipedia/expected.html index 27e3008..64fa55b 100644 --- a/test/test-pages/wikipedia/expected.html +++ b/test/test-pages/wikipedia/expected.html @@ -42,7 +42,7 @@

Firefox[edit]

-

Firefox is a web browser, and is Mozilla's flagship software product. It is available in both desktop and mobile versions. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.[42] As of late 2015[update], Firefox has approximately 10-11% of worldwide usage share of web browsers, making it the 4th most-used web browser.[43][44][45]

+

Firefox is a web browser, and is Mozilla's flagship software product. It is available in both desktop and mobile versions. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.[42] As of late 2015, Firefox has approximately 10-11% of worldwide usage share of web browsers, making it the 4th most-used web browser.[43][44][45]

Firefox began as an experimental branch of the Mozilla codebase by Dave Hyatt, Joe Hewitt and Blake Ross. They believed the commercial requirements of Netscape's sponsorship and developer-driven feature creep compromised the utility of the Mozilla browser.[46] To combat what they saw as the Mozilla Suite's software bloat, they created a stand-alone browser, with which they intended to replace the Mozilla Suite.

Firefox was originally named Phoenix but the name was changed so as to avoid trademark conflicts with Phoenix Technologies. The initially-announced replacement, Firebird, provoked objections from the Firebird project community.[47][48] The current name, Firefox, was chosen on February 9, 2004.[49]

Firefox Mobile[edit] @@ -184,215 +184,215 @@
  1. ^ For exceptions, see "Values" section below
  2. -
  3. ^ "About the Mozilla Corporation". Mozilla Foundation.  +
  4. ^ "About the Mozilla Corporation". Mozilla Foundation.
  5. -
  6. ^ "Freeing the Source: The Story of Mozilla". Open Sources: Voices from the Open Source Revolution. Retrieved 2016-05-01.  +
  7. ^ "Freeing the Source: The Story of Mozilla". Open Sources: Voices from the Open Source Revolution. Retrieved 2016-05-01.
  8. -
  9. ^ "Mozilla.org WHOIS, DNS, & Domain Info". DomainTools. Retrieved 1 May 2016.  +
  10. ^ "Mozilla.org WHOIS, DNS, & Domain Info". DomainTools. Retrieved 1 May 2016.
  11. -
  12. ^ Payment, S. (2007). Marc Andreessen and Jim Clark: The Founders of Netscape. Rosen Publishing Group. ISBN 9781404207196.  +
  13. ^ Payment, S. (2007). Marc Andreessen and Jim Clark: The Founders of Netscape. Rosen Publishing Group. ISBN 9781404207196.
  14. -
  15. ^ "Netscape Announces mozilla.org, a Dedicated Team and Web Site Supporting Development of Free Client Source Code". Netscape. Archived from the original on October 4, 2002. Retrieved 2012-08-21.  +
  16. ^ "Netscape Announces mozilla.org, a Dedicated Team and Web Site Supporting Development of Free Client Source Code". Netscape. Archived from the original on October 4, 2002. Retrieved 2012-08-21.
  17. -
  18. ^ "Mac vendors ponder Netscape gambit.". Macworld. 1 May 1998. Retrieved 2012-08-19.  +
  19. ^ "Mac vendors ponder Netscape gambit.". Macworld. 1 May 1998. Retrieved 2012-08-19.
  20. -
  21. ^ Zawinski, Jamie (1996). "nscp dorm". Retrieved 2007-10-12.  +
  22. ^ Zawinski, Jamie (1996). "nscp dorm". Retrieved 2007-10-12.
  23. -
  24. ^ Dave Titus with assistance from Andrew Wong. "How was Mozilla born".  +
  25. ^ Dave Titus with assistance from Andrew Wong. "How was Mozilla born".
  26. -
  27. ^ "Introduction to Mozilla Source Code". Mozilla. Retrieved 2012-08-18. However, mozilla.org wants to emphasize that these milestones are being produced for testing purposes only.  +
  28. ^ "Introduction to Mozilla Source Code". Mozilla. Retrieved 2012-08-18. However, mozilla.org wants to emphasize that these milestones are being produced for testing purposes only.
  29. -
  30. ^ "mozilla.org Announces Launch of the Mozilla Foundation to Lead Open-Source Browser Efforts". Retrieved 2012-08-18.  +
  31. ^ "mozilla.org Announces Launch of the Mozilla Foundation to Lead Open-Source Browser Efforts". Retrieved 2012-08-18.
  32. -
  33. ^ Eich, Brendan; David Hyatt (April 2, 2003). "mozilla development roadmap". Mozilla. Retrieved 2009-08-02.  +
  34. ^ Eich, Brendan; David Hyatt (April 2, 2003). "mozilla development roadmap". Mozilla. Retrieved 2009-08-02.
  35. -
  36. ^ "Better Browsing on Your Android Smartphone". AllThingsD. Retrieved 2012-08-18.  +
  37. ^ "Better Browsing on Your Android Smartphone". AllThingsD. Retrieved 2012-08-18.
  38. -
  39. ^ "Mozilla Releases Test Version of Firefox OS". PC Magazine. Retrieved 2012-08-18.  +
  40. ^ "Mozilla Releases Test Version of Firefox OS". PC Magazine. Retrieved 2012-08-18.
  41. -
  42. ^ "Mozilla Marketplace is live, lets you run web apps like desktop programs". Engadget. Retrieved 2012-08-18.  +
  43. ^ "Mozilla Marketplace is live, lets you run web apps like desktop programs". Engadget. Retrieved 2012-08-18.
  44. -
  45. ^ Lardinois, Frederic (November 15, 2012). "Mozilla Releases Annual Report For 2011: Revenue Up 33% To $163M, Majority From Google". techcrunch.com.  +
  46. ^ Lardinois, Frederic (November 15, 2012). "Mozilla Releases Annual Report For 2011: Revenue Up 33% To $163M, Majority From Google". techcrunch.com.
  47. -
  48. ^ "cisco/openh264 · GitHub". github.com. Retrieved 2014-04-05.  +
  49. ^ "cisco/openh264 · GitHub". github.com. Retrieved 2014-04-05.
  50. -
  51. ^ "Mozilla will add H.264 to Firefox as Cisco makes eleventh-hour push for WebRTC's future — Tech News and Analysis". gigaom.com. Retrieved 2014-04-05.  +
  52. ^ "Mozilla will add H.264 to Firefox as Cisco makes eleventh-hour push for WebRTC's future — Tech News and Analysis". gigaom.com. Retrieved 2014-04-05.
  53. -
  54. ^ "Cisco to release open-source H.264 codec, Mozilla makes tactical retreat - TechRepublic". techrepublic.com. Retrieved 2014-04-05.  +
  55. ^ "Cisco to release open-source H.264 codec, Mozilla makes tactical retreat - TechRepublic". techrepublic.com. Retrieved 2014-04-05.
  56. -
  57. ^ "Video Interoperability on the Web Gets a Boost From Cisco's H.264 Codec". Of course, this is not a not a complete solution. In a perfect world, codecs, like other basic Internet technologies such as TCP/IP, HTTP, and HTML, would be fully open and free  +
  58. ^ "Video Interoperability on the Web Gets a Boost From Cisco's H.264 Codec". Of course, this is not a not a complete solution. In a perfect world, codecs, like other basic Internet technologies such as TCP/IP, HTTP, and HTML, would be fully open and free
  59. -
  60. ^ "Comments on Cisco, Mozilla, and H.264". By endorsing Cisco's plan, there's no getting around the fact that we've caved on our principles. That said, principles can't replace being in a practical position to make a difference in the future.  - Christopher Montgomery wrote in a personal capacity but works for Mozilla in their codecs team +
  61. ^ "Comments on Cisco, Mozilla, and H.264". By endorsing Cisco's plan, there's no getting around the fact that we've caved on our principles. That said, principles can't replace being in a practical position to make a difference in the future. - Christopher Montgomery wrote in a personal capacity but works for Mozilla in their codecs team
  62. -
  63. ^ "Game Creator Challenge -Contest Terms and Conditions".  - submissions to the "amateur" category have to be released as free software, but not for the other two categories +
  64. ^ "Game Creator Challenge -Contest Terms and Conditions". - submissions to the "amateur" category have to be released as free software, but not for the other two categories
  65. -
  66. ^ "Los Angeles Times - Brendan Eich contribution to Proposition 8". latimes.com. Retrieved 2014-07-01.  +
  67. ^ "Los Angeles Times - Brendan Eich contribution to Proposition 8". latimes.com. Retrieved 2014-07-01.
  68. -
  69. ^ "Gay Firefox developers boycott Mozilla to protest CEO hire [Updated] | Ars Technica". arstechnica.com. Retrieved 2014-04-05.  +
  70. ^ "Gay Firefox developers boycott Mozilla to protest CEO hire [Updated] | Ars Technica". arstechnica.com. Retrieved 2014-04-05.
  71. -
  72. ^ Kelly Faircloth (9 April 2012). "Tech Celeb Makes Prop-8 Donation; Internet Goes Berserk". BetaBeat. BetaBeat. Retrieved 2014-04-28.  +
  73. ^ Kelly Faircloth (9 April 2012). "Tech Celeb Makes Prop-8 Donation; Internet Goes Berserk". BetaBeat. BetaBeat. Retrieved 2014-04-28.
  74. -
  75. ^ "Screenshot of OkCupid's statement towards Firefox users". huffingtonpost.com. Retrieved 2014-07-01.  +
  76. ^ "Screenshot of OkCupid's statement towards Firefox users". huffingtonpost.com. Retrieved 2014-07-01.
  77. -
  78. ^ "FAQ on CEO Resignation". The Mozilla Blog. Retrieved 2015-04-20.  +
  79. ^ "FAQ on CEO Resignation". The Mozilla Blog. Retrieved 2015-04-20.
  80. -
  81. ^ Baker, Mitchell (3 April 2014). "Brendan Eich Steps Down as Mozilla CEO". mozilla blog. Mozilla. Retrieved 2014-04-04.  +
  82. ^ Baker, Mitchell (3 April 2014). "Brendan Eich Steps Down as Mozilla CEO". mozilla blog. Mozilla. Retrieved 2014-04-04.
  83. -
  84. ^ "opensecrets.org listing of Sam Yagan's contributions to political candidates". opensecrets.org. Retrieved 2014-07-01.  +
  85. ^ "opensecrets.org listing of Sam Yagan's contributions to political candidates". opensecrets.org. Retrieved 2014-07-01.
  86. -
  87. ^ "ontheissues.org listing of votes cast by Chris Cannon". ontheissues.org. Retrieved 2014-07-01.  +
  88. ^ "ontheissues.org listing of votes cast by Chris Cannon". ontheissues.org. Retrieved 2014-07-01.
  89. -
  90. ^ "ontheissues.org listing of votes cast on the permanency of the Patriot Act". ontheissues.org. Retrieved 2014-07-01.  +
  91. ^ "ontheissues.org listing of votes cast on the permanency of the Patriot Act". ontheissues.org. Retrieved 2014-07-01.
  92. -
  93. ^ "ontheissues.org: Chris Cannon on Homeland Security". ontheissues.org. Retrieved 2014-07-01.  +
  94. ^ "ontheissues.org: Chris Cannon on Homeland Security". ontheissues.org. Retrieved 2014-07-01.
  95. -
  96. ^ "ontheissues.org: Chris Cannon on Abortion". ontheissues.org. Retrieved 2014-07-01.  +
  97. ^ "ontheissues.org: Chris Cannon on Abortion". ontheissues.org. Retrieved 2014-07-01.
  98. -
  99. ^ Levintova, Hannah (7 April 2014). "OkCupid's CEO Donated to an Anti-Gay Campaign Once, Too". Hanna Levintova article on motherjones.com. motherjones.com. Retrieved 2014-07-01.  +
  100. ^ Levintova, Hannah (7 April 2014). "OkCupid's CEO Donated to an Anti-Gay Campaign Once, Too". Hanna Levintova article on motherjones.com. motherjones.com. Retrieved 2014-07-01.
  101. -
  102. ^ Lee, Stephanie M. (8 April 2014). "OKCupid CEO once donated to anti-gay politician". Stephanie M. Lee's blog on sfgate.com. sfgate.com. Retrieved 2014-07-01.  +
  103. ^ Lee, Stephanie M. (8 April 2014). "OKCupid CEO once donated to anti-gay politician". Stephanie M. Lee's blog on sfgate.com. sfgate.com. Retrieved 2014-07-01.
  104. -
  105. ^ a b "The Hypocrisy Of Sam Yagan & OkCupid". uncrunched.com blog. uncrunched.com. 6 April 2014. Retrieved 2014-07-01.  +
  106. ^ a b "The Hypocrisy Of Sam Yagan & OkCupid". uncrunched.com blog. uncrunched.com. 6 April 2014. Retrieved 2014-07-01.
  107. -
  108. ^ Bellware, Kim (31 March 2014). "OKCupid Publicly Rips Mozilla: 'We Wish Them Nothing But Failure'". Kim Bellware article on huffingtonpost.com. huffingtonpost.com. Retrieved 2014-07-01.  +
  109. ^ Bellware, Kim (31 March 2014). "OKCupid Publicly Rips Mozilla: 'We Wish Them Nothing But Failure'". Kim Bellware article on huffingtonpost.com. huffingtonpost.com. Retrieved 2014-07-01.
  110. -
  111. ^ "Mozilla's Appointment Of Brendan Eich As CEO Sparks Controversy After Prop 8 Donation News Re-Emerges". huffingtonpost.com article. huffingtonpost.com. 27 March 2014. Retrieved 2014-07-01.  +
  112. ^ "Mozilla's Appointment Of Brendan Eich As CEO Sparks Controversy After Prop 8 Donation News Re-Emerges". huffingtonpost.com article. huffingtonpost.com. 27 March 2014. Retrieved 2014-07-01.
  113. -
  114. ^ Eidelson, Josh (4 April 2014). "OkCupid's gay rights stunt has its limits: Taking a deeper look at the savvy ploy". Josh Eidelson article on salon.com. salon.com. Retrieved 2014-07-01.  +
  115. ^ Eidelson, Josh (4 April 2014). "OkCupid's gay rights stunt has its limits: Taking a deeper look at the savvy ploy". Josh Eidelson article on salon.com. salon.com. Retrieved 2014-07-01.
  116. -
  117. ^ a b "Mozilla Manifesto". Mozilla.org. Retrieved 2012-03-21.  +
  118. ^ a b "Mozilla Manifesto". Mozilla.org. Retrieved 2012-03-21.
  119. -
  120. ^ "The Mozilla Manifesto". Retrieved 24 July 2015.  +
  121. ^ "The Mozilla Manifesto". Retrieved 24 July 2015.
  122. -
  123. ^ "Gecko Layout Engine". download-firefox.org. July 17, 2008. Archived from the original on 2010-11-28. Retrieved 2012-05-10.  +
  124. ^ "Gecko Layout Engine". download-firefox.org. July 17, 2008. Archived from the original on 2010-11-28. Retrieved 2012-05-10.
  125. -
  126. ^ "Web Browser Market Share Trends". W3Counter. Awio Web Services LLC. Retrieved 2012-05-10.  +
  127. ^ "Web Browser Market Share Trends". W3Counter. Awio Web Services LLC. Retrieved 2012-05-10.
  128. -
  129. ^ "Top 5 Browsers". StatCounter Global Stats. StatCounter. Retrieved 2012-05-10.  +
  130. ^ "Top 5 Browsers". StatCounter Global Stats. StatCounter. Retrieved 2012-05-10.
  131. -
  132. ^ "Web browsers (Global marketshare)". Clicky. Roxr Software Ltd. Retrieved 2012-05-10.  +
  133. ^ "Web browsers (Global marketshare)". Clicky. Roxr Software Ltd. Retrieved 2012-05-10.
  134. -
  135. ^ Goodger, Ben (February 6, 2006). "Where Did Firefox Come From?". Inside Firefox. Archived from the original on 2011-06-23. Retrieved 2012-01-07.  +
  136. ^ Goodger, Ben (February 6, 2006). "Where Did Firefox Come From?". Inside Firefox. Archived from the original on 2011-06-23. Retrieved 2012-01-07.
  137. -
  138. ^ "Mozilla browser becomes Firebird". IBPhoenix. Archived from the original on 2007-09-14. Retrieved 2013-06-10. We at IBPhoenix think that having a browser and a database with the same name in the same space will confuse the market, especially as browsers and databases are often used in the same applications  +
  139. ^ "Mozilla browser becomes Firebird". IBPhoenix. Archived from the original on 2007-09-14. Retrieved 2013-06-10. We at IBPhoenix think that having a browser and a database with the same name in the same space will confuse the market, especially as browsers and databases are often used in the same applications
  140. -
  141. ^ Festa, Paul (May 6, 2003). "Mozilla's Firebird gets wings clipped". CNET. Retrieved 2007-01-30.  +
  142. ^ Festa, Paul (May 6, 2003). "Mozilla's Firebird gets wings clipped". CNET. Retrieved 2007-01-30.
  143. -
  144. ^ Festa, Paul (February 9, 2004). "Mozilla holds 'fire' in naming fight". CNET News. Retrieved 2007-01-24.  +
  145. ^ Festa, Paul (February 9, 2004). "Mozilla holds 'fire' in naming fight". CNET News. Retrieved 2007-01-24.
  146. -
  147. ^ "Mobile features". Mozilla. Retrieved 2012-06-26.  +
  148. ^ "Mobile features". Mozilla. Retrieved 2012-06-26.
  149. -
  150. ^ "Mobile System Requirements".  +
  151. ^ "Mobile System Requirements".
  152. -
  153. ^ "Firefox Mobile supported devices".  +
  154. ^ "Firefox Mobile supported devices".
  155. -
  156. ^ "Mozilla rules out Firefox for iPhone and BlackBerry".  +
  157. ^ "Mozilla rules out Firefox for iPhone and BlackBerry".
  158. -
  159. ^ "Boot to Gecko Project". Mozilla. March 2012. Retrieved 2012-03-30.  +
  160. ^ "Boot to Gecko Project". Mozilla. March 2012. Retrieved 2012-03-30.
  161. -
  162. ^ "Firefox OS - Devices & Availability". Mozilla. Retrieved 2015-12-30.  +
  163. ^ "Firefox OS - Devices & Availability". Mozilla. Retrieved 2015-12-30.
  164. -
  165. ^ "Thunderbird: Stability and Community Innovation | Mitchell's Blog". blog.lizardwrangler.com. Retrieved 2015-04-20.  +
  166. ^ "Thunderbird: Stability and Community Innovation | Mitchell's Blog". blog.lizardwrangler.com. Retrieved 2015-04-20.
  167. -
  168. ^ "Two discontinued browsers". LWN.net. 21 December 2005. Retrieved 2012-08-19.  +
  169. ^ "Two discontinued browsers". LWN.net. 21 December 2005. Retrieved 2012-08-19.
  170. -
  171. ^ "SeaMonkey trademarks registered!". kairo.at. 2007-05-22. Retrieved 2013-06-10.  +
  172. ^ "SeaMonkey trademarks registered!". kairo.at. 2007-05-22. Retrieved 2013-06-10.
  173. -
  174. ^ "Bugzilla Installation List". Retrieved 2014-09-18.  +
  175. ^ "Bugzilla Installation List". Retrieved 2014-09-18.
  176. -
  177. ^ a b Eich, Brendan (21 June 2011). "New JavaScript Engine Module Owner". BrendanEich.com.  +
  178. ^ a b Eich, Brendan (21 June 2011). "New JavaScript Engine Module Owner". BrendanEich.com.
  179. -
  180. ^ "Bug 759422 - Remove use of e4x in account creation". Bugzilla@Mozilla. 2012-08-17. Retrieved 2012-08-18.  +
  181. ^ "Bug 759422 - Remove use of e4x in account creation". Bugzilla@Mozilla. 2012-08-17. Retrieved 2012-08-18.
  182. -
  183. ^ "SpiderMonkey". Mozilla Developer Network. 2012-08-15. Retrieved 2012-08-18.  +
  184. ^ "SpiderMonkey". Mozilla Developer Network. 2012-08-15. Retrieved 2012-08-18.
  185. -
  186. ^ "Rhino History". Mozilla Foundation. Retrieved 2008-03-20.  +
  187. ^ "Rhino History". Mozilla Foundation. Retrieved 2008-03-20.
  188. -
  189. ^ "Roadmap". Retrieved 10 May 2016.  +
  190. ^ "Roadmap". Retrieved 10 May 2016.
  191. -
  192. ^ Larabel, Michael. "Servo Continues Making Progress For Shipping Components In Gecko, Browser.html". Phoronix.com. Retrieved 10 May 2016.  +
  193. ^ Larabel, Michael. "Servo Continues Making Progress For Shipping Components In Gecko, Browser.html". Phoronix.com. Retrieved 10 May 2016.
  194. -
  195. ^ "Mozilla VR". Mozilla VR. Retrieved 2016-10-27.  +
  196. ^ "Mozilla VR". Mozilla VR. Retrieved 2016-10-27.
  197. -
  198. ^ Persona, Mozilla  +
  199. ^ Persona, Mozilla
  200. -
  201. ^ "Persona". Mozilla Developer Network. Retrieved 2016-10-27.  +
  202. ^ "Persona". Mozilla Developer Network. Retrieved 2016-10-27.
  203. -
  204. ^ About Mozilla Webmaker, Mozilla  +
  205. ^ About Mozilla Webmaker, Mozilla
  206. -
  207. ^ a b Alan Henry. "Mozilla Webmaker Teaches You to Build Web Sites, Apps, and More". Lifehacker. Gawker Media.  +
  208. ^ a b Alan Henry. "Mozilla Webmaker Teaches You to Build Web Sites, Apps, and More". Lifehacker. Gawker Media.
  209. -
  210. ^ "Air Mozilla". Mozilla Wiki.  +
  211. ^ "Air Mozilla". Mozilla Wiki.
  212. -
  213. ^ "Air Mozilla Reboot, Phase I".  +
  214. ^ "Air Mozilla Reboot, Phase I".