twitter@js_bankfacebook@jsbankrss@jsbank






Các hàm JavaScript mới trong HTML5 Trong bài viết hướng dẫn JavaScript hôm nay, chúng ta sẽ cùng nhau trải nghiệm các tính năng mới của HTML5 thông qua các hàm JavaScript mới. Các hàm JavaScript được giới thiệu trong bài viết này (có các ví dụ mẫu JavaScript kèm theo) bao gồm: bộ chọn đối tượng mới, lưu trữ web (cookie, SQL và cache để xem ngoại tuyến), web socket, geolocation, ...

Cần nói thêm rằng HTML5 đang là một công nghệ mới, được rất nhiều các hãng lớn ủng hộ, bạn nên tìm hiểu và nắm vững sớm để không bị lạc hậu.


Nhãn: hàm JavaScript mới, HTML5, chọn đối tượng, lưu trữ web

Tạo video bằng AI chỉ với giọng nói hoặc văn bản



Ứng dụng video AI MIỄN PHÍ hàng đầu của bạn! Tự động hóa video AI đầu tiên của bạn. Tạo Video Chuyên Nghiệp Của Bạn Trong 5 Phút Bằng AI Không Cần Thiết Bị Hoặc Kỹ Năng Chỉnh Sửa Video. Sản xuất video dễ dàng dành cho nhà tiếp thị nội dung.
Ứng dụng video AI KHÔNG GIỚI HẠN miễn phí trong tay bạn

HTML5 has a lot of new features. There's new HTML, CSS and, of course, JavaScript. Officially HTML5 specification and implementation won't be ready until 2022. Personally I don't believe in this. Majority of JavaScript features described further are already implemented in modern browsers (e.g. Sarafi, Chrome, Firefox, Opera). Even Internet Explorer gained capability to render canvas and other stuff (supposing we use ExplorerCanvas or Chrome Frame). Take a closer look at what's going to make your live better and happier :

New Selectors

How many times have you wondered why there's getElementById, getElementsByTagName, but there is not getElementByClassName? New JavaScript API solves this issue:

var elements = document.getElementsByClassName('entry');

Moreover there's now possibility to fetch elements that match provided CSS syntax!

var elements = document.querySelectorAll("ul li:nth-child(odd)");
var first_td = document.querySelector("table.test > tr > td");

Web Storage

Cookie mechanism has some disadvantages. As W3C said:

  1. A user could be buying plane tickets in two different windows, using the same site. If the site used cookies to keep track of which ticket the user was buying, then as the user clicked from page to page in both windows, the ticket currently being purchased would "leak" from one window to the other, potentially causing the user to buy two tickets for the same flight without really noticing.
  2. Web applications may wish to store megabytes of user data, such as entire user-authored documents or a user's mailbox, on the client side for performance reasons. Again, cookies do not handle this case well, because they are transmitted with every request.

Well, sessionStorage has been created to let developers cope with first of above troubles. It keeps data in per tab storage. To get along with second one, W3C has introduced localStorage - the persistent storage that never expires.

Look, how simple is saving draft every new character is pressed:

textarea.addEventListener('keyup', function () {
  window.localStorage['value'] = area.value;
  window.localStorage['timestamp'] = (new Date()).getTime();
}, false);
textarea.value = window.localStorage['value'];

Go to demo

Web SQL Database Storage

What about database accessible directly from JavaScript? Since now we no longer parse, sort, filter data using  consuming-lot-of-memory-and-cpu JavaScript loops. We fetch data using well know SQL queries. Look at example:

var db = window.openDatabase("Database Name", "Database Version");
db.transaction(function(tx) {
  tx.executeSql("SELECT * FROM test", [], successCallback, errorCallback);
});

Database is stored on client's computer so it's secure.

Go to demo

Offline Application Cache API

Web SQL Storage is available even if client went offline. But if we want create fully-functional offline aplication, we must care about resources like images, CSS, JS and et caetera. It's high time to familiarize with Application Cache API.

We create cache.manifest file and link to it from html element.

<html manifest="cache.manifest">

File must be served with text/cache-manifest mimetype and contain body like this:

CACHE MANIFEST

CACHE:
index.html
help.html

style/default.css
images/logo.png
images/backgound.png

NETWORK:
server.cgi

Files listed below CACHE will be cached by browser and available even offline. Files listed after NETWORK are never going to be cached. The application cache automatically updates only if the manifest file changes. It does not automatically update if resources listed in the manifest file change. You may do it manually with JavaScript:

cache = window.applicationCache;
var cacheUpdatereadyListener = function() {
  // Swap cache with updated data
  cache.swapCache();
}
cache.addEventListener('updateready', cacheUpdatereadyListener, false);
if(cache.status == cache.UPDATEREADY) {
  // Update cached data and call updateready listener after
  cache.update();
}

You may find full list of Application Cache Event Listeners here.

There is also new window event handler:  onOffline. It is fired when internet connection goes down and up . See how we may notice user if there's change in user's network connection:

window.addEventListener('offline', function() {
  if(navigator.onLine == false) {
    alert('We went offline');
  } else {
    alert('We are online again!');
  }
}, true);

Go to demo


Google Safe Browsing McAfee SiteAdvisor Norton SafeWeb Dr.Web