Xah Web Dev Blog

Interesting that Microsoft Edge browser haven't picked up. Remain below Google Chrome, Firefox, Safari, Internet Explorer.

Firefox Linux bug. “Noto Color Emoji” font are huge

firefox bug big noto emoji 2017 05 21
Firefox Linux bug. “Noto Color Emoji” font are shown huge, and ignores font-size CSS.

problem is also reported at

CSS: Multi-Column Layout for Text Flow (updated. Now supported by browsers)

CSS: Round Corners, border-radius (minor update)

CSS: Animation Tutorial (minor update)

CSS Color Spec Separator Now Allow Space

O, the whims of the standard.

https://github.com/w3c/csswg-drafts/commit/a54f8b2089d16eca696690fe7ffc3c11d4db9861

2017-05-12 thanks to xfq.

JavaScript: Random Range Function (added es2015 code)

JavaScript: Randomize Element Children (code updated to ES2015)

JavaScript: Find Window Size (updated)

new CSS unit: vw vh vi vb vmin vmax

there's new CSS unit.

The vw and vh are supported by Google Chrome, Firefox, Edge, Safari, latest ones as of 2017-05-06

The vi and vb are not supported by Google Chrome, and probably not others neither.

these are really needed. For example, you want to create a div box, with a specified aspect ratio of say 4/3. (width 4, height 3). You can say

style="width:100vw; height:75vw"

Often, on the side you have columns for index and ads etc. What you really want is percentage of the container box. The solution is the vb unit. Like this:

style="width:100vb; height:75vb"

But vb is not supported by Google Chrome yet.

These are most useful when you are creating SVG graphics, and you want the viewport to be max of a div, with a specified aspect ratio.

〔►see Practical SVG Tutorial

See also: JavaScript: Find Window Size

yarn, a new package manager for JavaScript. I recommend it instead of npm. https://code.facebook.com/posts/1840075619545360

TypeScript Tutorial (basics of using TypeScript to translate ES2015 to ES5)

JavaScript: Method Chaining and Function Composition (added ES2015 version)

Global Internet Usage Hour Pattern (code updated to JavaScript es2015 via TypeScript)

one major problem of JavaScript still is that there's no range function for array, even in ES2016. That means, you cannot avoid using for-loop.

JavaScript: SVG Clock (now js ES2015 code in TypeScript)

JavaScript: Range Function for Array (new ES2015 function)

JavaScript: “instanceof” Operator (major rewrite)

JavaScript: Date Object (minor update)

JavaScript: Stopwatch (updated, added JS ES2015 code.)

Google Chrome has disabled the chrome://plugins settings page, starting with Google Chrome version 57 (released in 2017 March)

JavaScript: Object.prototype.valueOf (new page)

JavaScript: Array How-To (updated)

JavaScript: Object to Array (new page)

Seo Hack on Alexa

Google Releases a Open Source Serif Chinese Font

http://developers.googleblog.com/2017/04/noto-serif-cjk-is-here.html

Understand JavaScript Iterable, Iterator, Generator Function and Generator

JavaScript ES2015 has new concepts of iterable, iterator, generator function and generator.

They are somewhat confusing and complex.

To understand them clearly, here's explanations, read in order.

  1. JavaScript: Interface
  2. JavaScript: Iterable
  3. JavaScript: Iterator
  4. JavaScript: for-of Loop
  5. JavaScript: Generator Function
  6. JavaScript: Generator

JavaScript: Iterator Prototype

JavaScript: Number.prototype (now, the number object reference is complete.)

new pages

new pages on encoding url.

JavaScript: Number Object (new page)

JavaScript: Arrow Function (updated)

JavaScript: How to Convert ES5 to ES2015

survey. Web Design: Serif or Sans-Serif? (updated)

JavaScript: Function Parameters (updated for ES2015)

JavaScript trick. If you want to use forEach with break, use JavaScript: Array.prototype.every.

Spamer Email You Asking for Link Back

there's a new scam method. Real people email you, saying good things on your article, and ask you to link to their blog too.

although real person, but you can see the context is totally off. e.g. years old blog, or wrong community, non-specifics, etc.

The person is probably cheaply hired to look for web pages to email to ask for links.

If you do not reply, the person asks again in a couple of weeks. Repeat, up to 4 times.

See also: Web Spam, Scam, Blackhat SEO Collection

JavaScript: Boolean Object (complete rewrite)

JavaScript: Boolean.prototype (new page)

JavaScript: true, false (complete write)

css z index

〔►see CSS: z-index

JavaScript: Array.prototype.find new in ES2015.

facebook browser console warning 2017 03 10
facebook browser console warning

JavaScript: Sparse Array (updated)

JavaScript: String.fromCodePoint New in ES2015. Now working with Unicode emoji is much easier.

JavaScript: Property Key "constructor" (updated)

1. the issue with font is that, ① if you care that your site look EXACTLY the same in diff browsers/OSes. ② if you mind a web font download.

2. caring for exact look across is not just esthetics. e.g. when you have iframe. scroll bar may or may not appear, depending on font used.

3. If you want pixel-exact look, then solution is easy. Use Arial, Courier New. They are on both Windows, Mac, but not linux.

4. there's no general solution for pixel-exact look across Windows, Mac, Linux, without requiring download (i.e. web font).

5. if you don't mind requiring user download, then Google web font Roboto & Arimo for sans are excellent solution.

6. If you chose a popular Google webfont such as Roboto, it's almost already cached, so no cost for site load time.

7. but the problem with web fonts is that, it requires a network connection. Your site can no longer serve as portable book in HTML format.

8. vast majority of websites do not use web font. And Arial is probably still the most used font on web sites.

9. Google Search is using Roboto, and YouTube and Google Plus. Probably all Google sites.

10. Twitter, StackOverflow, Wikipedia, seem to default to local fonts. They use sans-serif, most popular are Arial, Georgia, Verdana.

11. nytimes, washington post, forbes, use local font, Georgia. US Today is Arial.

12. wsj uses its own proprietary webfont, serif.

13. Time Mag uses proprietary webfont, serif. “Duplicate Iconic”

14. New Yorker, always the snobby one, uses proprietary webfont, serif. “TNY Adobe Caslon Pro”

15. ok, that concludes today's Xah Edu Corner, episode №20170225155325, 〈tech geeking and trifles of font〉.

JavaScript: String Methods for RegExp (updated for ES2015)

JavaScript: RegExp Syntax (updated for ES2015)

JavaScript: Find Object's Prototype (updated for ES2015)

JavaScript Object Ontology!

JavaScript es2015 objects ontology
JavaScript Object Ontology!

JavaScript regex is modeled after perl5 by spec, but it doesn't have the decency to name it regex instead of regexp.

video format support

as of 2017-02-22

on Windows
Google ChromeFirefoxedge
mp4yesyesyes
webmyesyesno
on Linux
Google Chrome Firefox
mp4yesyes
webmyesyes

Xah JavaScript in Depth, New Version Out

Buy Xah JavaScript Tutorial

New version is out. Update sent to previous buyers.

If you don't have it, check it out. Link to it, tell friends, buy it. Thanks.

JavaScript: Default Charset/Encoding (new page on its own. updated for ES2015)

JavaScript: Object.prototype.toString (new page)

JavaScript: Determine Type of Object (major rewrite)

JavaScript: Prevent Adding Property (updated for ES2015)

JavaScript: Delete operator (new page, on its own)

JavaScript: Property Descriptor (new page, on its own) And all pages about property are updated for ES2015.

JavaScript: Property Key, updated to ES2015.

JavaScript: Property Overview (in depth). Updated to ES2015.

JavaScript: Access Property, List Properties (updated for ES2015)

Compatible Fonts for Linux and Windows

Font is a major pain.

here's a tip to solve diff font on diff OS problem, if you don't want to use Google web font that require users download.

they have the same metrics.

The Liberation fonts are on Linux. The Arial and stuff are available on Microsoft Windows 10 and Mac.

〔►see Meaning of Font Size and Em Height

See also: Best Unicode Fonts for Programer

Firefox is sucking major ass in everyway. for some reason, on window 10 intel i5 cpu, it's still installing 32 bits.

node.js bug. Object.setPrototypeOf returns wrong thing

// node.js bug. this should print “Object {}” but prints “Function {}”
var hh = {}; console.log ( Object.setPrototypeOf ( hh, Array ) );

JavaScript: Convert Object to/from Map (new)

following pages all updated. Each methods on its own page.

JavaScript: Map.prototype.forEach (new standalone page.)

JavaScript: Iterate Over Map Object (new standalone page.)

wow, building javascript spec requires installing 111 packages.

build js spec 2017 02 01

JavaScript ECMA2016 is Released in 2016 June

very odd. JavaScript Array.prototype.includes is not in the spec at http://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.indexof but is in spec here https://tc39.github.io/ecma262/2016/#sec-array.prototype.includes

oh wow. Found answer. JavaScript Array.prototype.includes is not in ECMA2015 because it is in ECMA2016, and it's already out! ECMA2016 is released in 2016 June.

JavaScript: Array.prototype.find (new in ES2015)

JavaScript: Array.prototype.fill (new in ES2015)

JavaScript: Function.prototype (updated for ES2015)

JavaScript: Array How-To (updated)

JavaScript: Math Object. Updated for ES2015. Added 15 new functions.

Firefox, a Dying Breed

browser stat 2017 01 30
web browser stat 2017-01-30. Firefox, a dying breed.

JavaScript old rant on Socket.IO. Got a comment, looks like nothing changed. probably nobody's using it today. Where is Socket.IO Client Library At?

JavaScript: String is 16 Bits Unit Sequence (expanded)

JavaScript: Check Property Existence (updated for ES2015)

JavaScript Spec, Term “instance” is Not Defined

JavaScript oddity! is length a property of String.prototype?

in JavaScript ES2015 spec, it sometimes distinguish properties of prototype and properties of instance.

For example, for String.prototype, it doesn't list length as one of its property, but it is listed as a property in a separate section of “string instance”.

see ECMAScript 2015 §Text Processing#sec-properties-of-string-instances-length

however, in code, if you list properties of String.prototype, "length" is there.

console.log ( String.prototype.hasOwnProperty ( "length" ) ); // true

console.log ( Reflect.ownKeys ( String.prototype ) );
// has length

what gives?

JavaScript: String Constructor (new page)

new pages.

new pages.

JavaScript: Iterable (new)

JavaScript: Interface (new)

A Brief History of JavaScript By Sebastián Peyrott. At https://auth0.com/blog/a-brief-history-of-javascript/

JavaScript creator on JavaScript history. 〔Popularity By Brendan Eich. At https://brendaneich.com/2008/04/popularity/

one of the most annoying thing about css is that there's no way to control size of font across browsers, unless you download web font.

〔►see Meaning of Font Size and Em Height

Xah Web Dev Blog Archive Index

Like what you read? Buy JavaScript in Depth
or, buy a new keyboard, see Keyboard Reviews.