Although the Chrome browser has been in its inception for six years, it is rapidly entering its maturity in version numbers. Chrome 39 is now available, and you may have installed it. This release contains some nice new features…and a slightly suspicious addition or two.
ECMAScript 6 Generator
TheGenerator is a special function declared using function*
to create an iterator. An iterator is an object with a next()
method that is called to return a value. The generator function uses the yield
statement to provide the next value in the sequence.
Arunoda Susiripala provides a basic example in JavaScript Generator and Callback Prevention:
function* HelloGen() { yield 100; yield 400; } var gen = HelloGen(); console.log(gen.next()); // {value: 100, done: false} console.log(gen.next()); // {value: 400, done: false} console.log(gen.next()); // {value: undefined, done: true}
Chrome, Opera, and Firefox 31 support ECMAScript 6 generators.
Beacon API
The new Beacon API allows you to send data to the server without waiting for a response. Requests will be queued and the browser will send these requests as soon as possible, but it is important that it will not delay the uninstallation of the current page or the loading of the next page.
navigator.sendBeacon()
will receive a URL and data (probably a string or a FormData value). Usually, it can be used to transfer statistics, for example:
navigator.sendBeacon('/log', 'page-unloaded');
If the browser successfully queues up a Beacon request, the method returns true
. I'm not sure what can be done if false
is returned, but Beacon doesn't apply to basic functionality or messaging.
Chrome, Opera, and Firefox 31 support the Beacon API.
Web animation control
Web animations are available in Chrome 36. The concept is to allow simple CSS3-like keyframes and animation declarations from JavaScript, such as:
var myanimation = myelement.animate([ { color: "#f00" }, { left: "20em" }, { transform: "rotate(180deg)" } ], { duration: 1000, iterations: 1, delay: 0 });
The advantage is that you can control and synchronize playback based on user input or other conditions. Chrome 39 adds playback methods such as play()
, pause()
, reverse()
, finish()
(put the animation to its final state) and cancel()
(clear all effects).
A tradeoff between thinking of web animation as simple CSS3 animation and complex JavaScript full-frame control using requestAnimationFrame
and your own timing functions. It may be a bit too much for the average web effect, but it is not powerful enough for the game. Apps and presentations might be good use cases?
Currently, only Chrome and Opera browsers support web animations. Support is available in Firefox nightly versions and polyfill is available, but the technology will not be stable for a while.
Web application list
Don't be confused with the application cache manifest, a web application manifest is a JSON file where you can place metadata such as name, start address, icon, display mode, orientation, etc.
You need to add a link to the HTML header:
<link rel="manifest" href="manifest.json">
and the manifest file itself, for example:
function* HelloGen() { yield 100; yield 400; } var gen = HelloGen(); console.log(gen.next()); // {value: 100, done: false} console.log(gen.next()); // {value: 400, done: false} console.log(gen.next()); // {value: undefined, done: true}
This ultimately means we can remove 57 alternatives to iOS icon sizes from the top of each page...Suppose Apple decides to implement this technology in Safari!
Cross-browser support is uneven. Firefox uses the list for its market, but there seems to be some differences in the property name.
Windows 7 Immersive Mode
Switching to immersive mode on Windows 7 will make Chrome behave a bit like a Windows 8 full-screen Metro app. Strangely, it places a translucent taskbar similar to Chrome OS above the Windows taskbar—with its own start button and clock.
Why? If Windows 7 users want a Windows 8 experience, they can upgrade. However, there is a reason many Windows 7 users choose to stick with the operating system: they don't want Windows 8!
I'm also confused by Google's insistence on sneaking up on Chrome OS widgets to other operating systems. The Chrome app icons here and there are OK - but copying native features makes no sense. Maybe they want to attract people to use Chrome OS, but annoying them won't help.
Other updates
There are also some smaller features...
- You can now install the free Chrome app in the Play Store without logging in.
- On the high DPI/Retina screen,
scrollTop
andscrollLeft
now return the score of the pixel. If you think pixel perfection is bad, wait for the customer to start asking for subpixel perfection! - You can now edit the saved password.
- Now, only 64-bit versions of Chrome are available on Mac OS.
- SHA-1 encryption is being phased out, replaced by SHA-2.
- Experimental support for the extension button icon in the menu has been added (set Enable extension toolbar redesign in about:flags).
The above is the detailed content of What's New in Chrome 39. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The following points should be noted when processing dates and time in JavaScript: 1. There are many ways to create Date objects. It is recommended to use ISO format strings to ensure compatibility; 2. Get and set time information can be obtained and set methods, and note that the month starts from 0; 3. Manually formatting dates requires strings, and third-party libraries can also be used; 4. It is recommended to use libraries that support time zones, such as Luxon. Mastering these key points can effectively avoid common mistakes.

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

Event capture and bubble are two stages of event propagation in DOM. Capture is from the top layer to the target element, and bubble is from the target element to the top layer. 1. Event capture is implemented by setting the useCapture parameter of addEventListener to true; 2. Event bubble is the default behavior, useCapture is set to false or omitted; 3. Event propagation can be used to prevent event propagation; 4. Event bubbling supports event delegation to improve dynamic content processing efficiency; 5. Capture can be used to intercept events in advance, such as logging or error processing. Understanding these two phases helps to accurately control the timing and how JavaScript responds to user operations.

If JavaScript applications load slowly and have poor performance, the problem is that the payload is too large. Solutions include: 1. Use code splitting (CodeSplitting), split the large bundle into multiple small files through React.lazy() or build tools, and load it as needed to reduce the first download; 2. Remove unused code (TreeShaking), use the ES6 module mechanism to clear "dead code" to ensure that the introduced libraries support this feature; 3. Compress and merge resource files, enable Gzip/Brotli and Terser to compress JS, reasonably merge files and optimize static resources; 4. Replace heavy-duty dependencies and choose lightweight libraries such as day.js and fetch

The main difference between ES module and CommonJS is the loading method and usage scenario. 1.CommonJS is synchronously loaded, suitable for Node.js server-side environment; 2.ES module is asynchronously loaded, suitable for network environments such as browsers; 3. Syntax, ES module uses import/export and must be located in the top-level scope, while CommonJS uses require/module.exports, which can be called dynamically at runtime; 4.CommonJS is widely used in old versions of Node.js and libraries that rely on it such as Express, while ES modules are suitable for modern front-end frameworks and Node.jsv14; 5. Although it can be mixed, it can easily cause problems.

There are three common ways to initiate HTTP requests in Node.js: use built-in modules, axios, and node-fetch. 1. Use the built-in http/https module without dependencies, which is suitable for basic scenarios, but requires manual processing of data stitching and error monitoring, such as using https.get() to obtain data or send POST requests through .write(); 2.axios is a third-party library based on Promise. It has concise syntax and powerful functions, supports async/await, automatic JSON conversion, interceptor, etc. It is recommended to simplify asynchronous request operations; 3.node-fetch provides a style similar to browser fetch, based on Promise and simple syntax

To write clean and maintainable JavaScript code, the following four points should be followed: 1. Use clear and consistent naming specifications, variable names are used with nouns such as count, function names are started with verbs such as fetchData(), and class names are used with PascalCase such as UserProfile; 2. Avoid excessively long functions and side effects, each function only does one thing, such as splitting update user information into formatUser, saveUser and renderUser; 3. Use modularity and componentization reasonably, such as splitting the page into UserProfile, UserStats and other widgets in React; 4. Write comments and documents until the time, focusing on explaining the key logic and algorithm selection

The difference between var, let and const is scope, promotion and repeated declarations. 1.var is the function scope, with variable promotion, allowing repeated declarations; 2.let is the block-level scope, with temporary dead zones, and repeated declarations are not allowed; 3.const is also the block-level scope, and must be assigned immediately, and cannot be reassigned, but the internal value of the reference type can be modified. Use const first, use let when changing variables, and avoid using var.
