Pengimplementasi JavaScript

ECMAScript, ECMAScript utama JavaScript menggambarkan sintaks dan objek dasar bahasa;

DOM menggambarkan kaedah dan antarmuka untuk mengelola kandungan halaman;

BOM menggambarkan kaedah dan antarmuka untuk berinteraksi dengan pelayar.

ECMAScript, DOM dan BOM

Walaupun ECMAScript adalah standar penting, ia bukan bagian tunggal JavaScript, sebaliknya, ia bukan bagian tunggal yang disepadankan. Sebenarnya, pengembangan penuh JavaScript terdiri daripada 3 bagian yang berbeza:

JavaScript termasuk ECMAScript, DOM dan BOM

ECMAScript

ECMAScript tidak terikat dengan sebarang pelayar khusus, sebenarnya, ia juga tidak menyebutkan kaedah untuk input dan output pengguna (ini berbeza dengan bahasa seperti C, yang memerlukan pustaka luaran untuk melengkapkan tugas seperti itu). Apa yang sebenarnya ECMAScript? Deskripsi Standard ECMA-262 (bab ke-2) adalah seperti berikut:

“ECMAScript boleh menyediakan keupayaan pemrograman skrip utama bagi berbagai jenis lingkungan tuan rumah, oleh itu bahasa skrip utama adalah yang diputuskan secara terpisah daripada lingkungan tuan rumah khusus... ...”

Pelayar web adalah lingkungan tuan untuk ECMAScript, tetapi bukan lingkungan tuan tunggal. Sebenarnya, ada berbagai lingkungan yang dapat menampung implementasi ECMAScript (seperti ScriptEase Nombas, serta ActionScript yang digunakan bersamaan oleh Macromedia di Flash dan Director MX). Apa yang diatur ECMAScript di luar pelayar?

Dengan demikian, ECMAScript mendeskripsikan berikut ini:

  • Gram
  • Tipe
  • Perintah
  • Kata-kunci
  • Kata-reservasi
  • Operator
  • Objek

ECMAScript hanya adalah deskripsi, yang mendefinisikan semua properti, metode dan objek bahasa skrip. Bahasa lain dapat melaksanakan ECMAScript sebagai dasar fungsi, seperti JavaScript:

ECMAScript, JavaScript, ActionScript, ScriptEase

Setiap pelayar mempunyai implementasi antarmuka ECMAScript sendiri, kemudian implementasi ini dijalankan, termasuk DOM dan BOM (akan diulas dalam bab berikutnya). Tentu saja ada pula implementasi lain yang menambahkan ECMAScript, seperti Windows Scripting Host (WSH), ActionScript di Flash dan Director MX Macromedia, serta Nombas ScriptEase.

1. Versi ECMAScript

ECMAScript dibahagikan kepada beberapa versi yang berbeza, ia diumumkan dalam standar yang disebut ECMA-262. Seperti standar lainnya, ECMA-262 akan disunting dan diperbarui. Saat ada pembaruan utama, akan diterbitkan versi baru standar. Versi terbaru ECMA-262 adalah 5.1, diterbitkan pada bulan Juni 2011.

Versi pertama ECMA-262 secara dasar adalah sama seperti Netscape JavaScript 1.1, hanya menghapus semua kod yang berhubungan dengan pelayar, selain itu ada beberapa pengaturan kecil. Pada awalnya, ECMA-262 memerlukan sokongan untuk standar Unicode (supaya mendukung berbagai bahasa). Kedua, ia memerlukan objek yang bebas platform (Implementasi objek Netscape JavaScript 1.1 sebenarnya berbeda, seperti objek Date, yang tergantung pada platform). Ini adalah alasan utama mengapa JavaScript 1.1 dan 1.2 tidak memenuhi spesifikasi ECMA-262 versi pertama.

Sebagian besar pembaruan versi kedua ECMA-262 secara esensial adalah edisi. Pembaruan standar ini bertujuan untuk memastikan kesesuaian yang ketat dengan ISO/IEC-16262, dan tidak menambahkan, mengubah, atau menghapus konten. ECMAScript biasanya tidak mematuhi versi kedua.

ECMA-262 versi ketiga adalah pembaruan yang sebenarnya pertama kali untuk standar ini. Ia menyediakan pembaruan bagi pengolahan string, definisi kesalahan dan keluaran numerik. Selain itu, ia menambahkan dukungan ekspresi reguler, pernyataan kontrol baru, penanganan eksepsi try...catch, serta beberapa perubahan kecil untuk memfasilitasi standar yang internasional. Secara umum, ia menandai bahwa ECMAScript menjadi bahasa pemrograman yang sebenarnya.

2. Apa itu Konformitas ECMAScript

Di ECMA-262, konformitas ECMAScript (conformance) memiliki definisi yang jelas. Bahasa skrip harus memenuhi empat prinsip dasar berikut:

  • Implementasi yang memenuhi harus mendukung semua “tipe, nilai, objek, atribut, fungsi dan bahasa program serta semantik” yang dijelaskan di ECMA-262 (ECMA-262, halaman pertama)
  • Implementasi yang memenuhi harus mendukung standar karakter Unicode (UCS)
  • Implementasi yang memenuhi dapat menambahkan “tipe ekstra, nilai, objek, atribut dan fungsi” yang tidak disebutkan di ECMA-262. ECMA-262 mendeskripsikan penambahan ini sebagai objek baru atau atribut baru objek dalam spesifikasi yang belum disediakan
  • Implementasi yang memenuhi dapat mendukung “gramatan program dan ekspresi reguler” yang tidak ditentukan di ECMA-262 (berarti dapat digantikan atau diperluas dukungan ekspresi reguler bawaan)

Semua implementasi ECMAScript harus memenuhi standar di atas.

3. Dukungan ECMAScript di Pemetaan Web

Netscape Navigator 3.0 yang mengandungi JavaScript 1.1 dikeluarkan pada tahun 1996. kemudian, spesifikasi JavaScript 1.1 diserahkan sebagai rancangan standar baru kepada EMCA. Dengan kepopuleran yang dramatis JavaScript, Netscape dengan gembira mulai mengembangkan versi 1.2. Tetapi ada masalah, ECMA belum menerima rancangan Netscape. Setelah Netscape Navigator 3.0 dikeluarkan, Microsoft segera meluncurkan IE 3.0. Versi IE ini mengandungi JScript 1.0 (nama implementasi JavaScript sendiri Microsoft), yang dijadwalkan dapat dihubungkan dengan JavaScript 1.1. Namun, karena dokumentasi yang kurang lengkap dan beberapa karakteristik yang tidak sesuai, JScript 1.0 jauh belum mencapai tingkat JavaScript 1.1.

Sebelum versi pertama ECMA-262 disepakati, Netscape Navigator 4.0 yang mengandung JavaScript 1.2 diterbitkan pada tahun 1997. Pada tahun itu, standar ECMA-262 diterima dan disepenuhkan. Oleh karena itu, JavaScript 1.2 tidak kompatibel dengan ECMAScript versi pertama, meskipun ECMAScript seharusnya berdasarkan JavaScript 1.1.

Langkah berikutnya untuk JScript adalah JScript 3.0 yang ditambahkan di IE 4.0 (versi 2.0 diterbitkan bersamaan dengan IIS 3.0, tetapi tidak disertakan dalam pelayar). Microsoft secara kuat mempromosikan JScript 3.0 sebagai bahasa skrip yang benar-benar sesuai standar ECMA. Pada saat itu, ECMA-262 belum disepakati secara final, jadi JScript 3.0 mengalami nasib yang sama seperti JavaScript 1.2 - ia masih belum memenuhi standar ECMAScript akhir.

Netscape memilih untuk meningkatkan implementasi JavaScriptnya di Netscape Navigator 4.06. JavaScript 1.3 akhirnya membuat Netscape sepenuhnya sesuai dengan ECMAScript versi pertama. Netscape menambahkan dukungan untuk standar Unicode, dan memastikan semua objek mempertahankan fitur baru yang diintroduksi di JavaScript 1.2 serta memenuhi kebebasan platform.

Ketika Netscape mengumumkan kode sumbernya sebagai proyek Mozilla kepada publik, rencana awalnya adalah JavaScript 1.4 akan disertakan dalam Netscape Navigator 5.0. Namun, keputusan ekspresi - untuk merancang ulang kode Netscape dari awal, mengganggu kerja ini. JavaScript 1.4 hanya diterbitkan sebagai bahasa skrip server Netscape Enterprise, dan tidak pernah disertakan dalam pelayar.

Sekarang, semua pelayar web utama mengikuti ECMA-262 versi ketiga.

下面的表格列出了大部分流行的 Web 浏览器中的 ECMAScript 支持:

Pemetaan browser Kompatibiliti DOM
Netscape Navigator 2.0 -
Netscape Navigator 3.0 -
Netscape Navigator 4.0 - 4.05 -
Netscape Navigator 4.06 - 4.79 Edition 1
Netscape 6.0+ (Mozilla 0.6.0+) Edition 3
Internet Explorer 3.0 -
Internet Explorer 4.0 -
Internet Explorer 5.0 Edition 1
Internet Explorer 5.5+ Edition 3
Opera 6.0 - 7.1 Edition 2
Opera 7.2+ Edition 3
Safari 1.0+/Konqueror ~ 2.0+ Edition 3

DOM

DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:

<html>
  <head>
    <title>Sample Page</title>
  </head>
  <body>
    <p>hello world!</p>
  </body>
</html>

这段代码可以用 DOM 绘制成一个节点层次图:

Gambar hirarki node DOM

DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。

1. 为什么 DOM 必不可少

自从 IE 4.0 和 Netscape Navigator 4.0 开始支持不同形态的动态 HTML(DHTML),开发者首次能够在不重载网页的情况下修改它的外观和内容。这是 Web 技术的一大飞跃,不过也带来了巨大的问题。Netscape 和微软各自开发自己的 DHTML,从而结束了 Web 开发者只编写一个 HTML 页面就可以在所有浏览器中访问的时期。

业界决定必须要做点什么以保持 Web 的跨平台特性,他们担心如果放任 Netscape 和微软公司这样做,Web 必将分化为两个独立的部分,每一部分只适用于特定的浏览器。因此,负责指定 Web 通信标准的团体 W3C(World Wide Web Consortium)就开始制定 DOM。

2. DOM 的各个等级

DOM Level 1 diperkenalkan oleh W3C pada bulan Oktober 1998. Ini terdiri dari dua modul, yaitu DOM Core dan DOM HTML. Yang pertama menyediakan grafik struktur dokumen berdasarkan XML untuk mengakses dan mengoperasikan bagian mana saja dari dokumen; yang terakhir menambahkan beberapa objek dan metode khusus HTML, sehingga memperluas DOM Core.

Perhatikan, DOM bukan milik JavaScript, sebenarnya banyak bahasa lain yang melaksanakannya. Walaupun demikian, DOM di dalam peramban web sudah djalankan dengan ECMAScript, dan sekarang ini adalah bagian besar bahasa JavaScript.

DOM Level 1 hanya sebuah tujuan, yaitu merancang struktur dokumen, sementara tujuan DOM Level 2 lebih luas. Ekspansi yang ditambahkan untuk DOM asli menambahkan dukungan untuk acara mouse dan antarmuka pengguna (DHTML mendukung ini dengan beragam cara), rentang, dan pengelilingan (metode yang diulang untuk DOM dokumen), serta menambahkan dukungan untuk CSS (tabel gaya berkat kiri) melalui antarmuka objek. DOM Core yang diintroduksi Level 1 juga menambahkan dukungan untuk namespace XML.

DOM Level 2 memperkenalkan beberapa modul DOM baru untuk menangani tipe antarmuka yang baru:

  • DOM Lihat - Melibatkan antarmuka untuk melacak berbagai tampilan dokumen (yaitu dokumen sebelum dan setelah diwarnai dengan gaya CSS)
  • DOM Acara - Melibatkan antarmuka untuk acara
  • DOM Gaya - Melibatkan antarmuka untuk mengelola gaya yang berdasarkan CSS
  • DOM Pelengkap dan Range - Melibatkan antarmuka untuk mengelilingi dan mengoperasikan pohon dokumen

DOM Level 3 memperkenalkan cara untuk memuat dan mempertahankan dokumen secara seragam (termasuk dalam modul DOM Load and Save) serta cara untuk memvalidasi dokumen (DOM Validation), sehingga mengembangkan DOM lebih lanjut. Pada Level 3, DOM Core diperluas untuk mendukung semua fitur XML 1.0, termasuk XML Infoset, XPath, dan XML Base.

Pada saat mempelajari DOM, mungkin ada yang mengutip DOM Level 0. Perhatikan, standar DOM Level 0 sama sekali tidak ada, ini hanya referensi sejarah DOM (DOM Level 0 merujuk kepada DHTML yang didukung dalam IE 4.0 dan Netscape Navigator 4.0).

3. DOM lainnya

Selain DOM Core dan DOM HTML, ada beberapa bahasa lain yang mengeluarkan standar DOM sendiri. Bahasa-bahasa ini berdasarkan XML, setiap DOM menambahkan metode dan antarmuka khusus untuk bahasa yang relevan:

  • Bahasa vektor skala (SVG) 1.0
  • Bahasa tanda digital (MathML) 1.0
  • Bahasa penggabungan multimedia sinkron (SMIL)

Keterangan:Jika ingin belajar lebih lanjut tentang konten yang relevan, silakan kunjungi CodeW3C Panduan SMIL dan Panduan SVG.

Selain itu, bahasa lain juga mengembangkan implementasi DOM sendiri, seperti bahasa antarmuka XML Mozilla (XUL). Namun, hanya beberapa bahasa yang di atas yang direkomendasikan standar W3C.

Dukungan DOM di Web browser

DOM sudah menjadi standar sebelum Web browser mulai melaksanakannya. Pertama kali IE mencoba DOM adalah di versi 5.0, tetapi sebenarnya hanya mulai memiliki dukungan DOM yang sebenarnya setelah versi 5.5, IE 5.5 melaksanakan DOM Level 1. Dari saat itu, IE belum memperkenalkan fitur DOM baru.

Netscape hanya mengintegrasikan dukungan DOM mulai dari Netscape 6 (Mozilla 0.6.0). Saat ini, Mozilla memiliki dukungan DOM terbaik, melaksanakan Level 1 penuh, hampir seluruh Level 2, dan sebagian Level 3. (Tujuan tim pengembang Mozilla adalah membangun browser yang 100% kompatibel dengan standar, dan kerja mereka telah memberikan hasil.)

Opera hanya menambahkan dukungan DOM mulai dari versi 7.0, dan Safari juga melaksanakan sebagian besar DOM Level 1. Mereka hampir sama tingkatnya dengan IE 5.5, dan dalam beberapa kasus, bahkan melebihi IE 5.5. Meski demikian, dalam hal dukungan DOM, semua browser jauh ketinggalan dari Mozilla. Tabel di bawah ini menunjukkan dukungan DOM browser biasa.

Pemetaan browser Kompatibiliti DOM
Netscape Navigator 1.0 - 4.x -
Netscape 6.0+ (Mozilla 0.6.0+) Level 1, Level 2, Level 3 (sebagian)
IE 2.0 - 4.x -
IE 5.0 Level 1 (terkecil)
IE 5.5+ Level 1 (hampir seluruhnya)
Opera 1.0 - 6.0 -
Opera 7.0+ Level 1 (hampir seluruhnya), Level 2 (sebagian)
Safari 1.0+/Konqueror ~ 2.0+ Level 1

Keterangan:Jika ingin belajar lebih lanjut tentang DOM, silakan kunjungi CodeW3C Panduan HTML DOM dan Panduan XML DOM.

BOM

IE 3.0 dan Netscape Navigator 3.0 menyediakan ciri - BOM (Browser Object Model), yang boleh mengakses dan mengoperasikan tingkap pelayar. Dengan BOM, pengembang boleh gerakkan tingkap, mengubah teks di bar status serta melaksanakan tindakan lain yang tidak berhubungan dengan kandungan halaman. Yang membezakan BOM dan sering dipertanyakan adalah ia hanya sebahagian daripada JavaScript, tanpa ada standard yang relevan.

BOM utamanya mengurus tingkap pelayar dan frame, tetapi biasanya ekspansi JavaScript spesifik pelayar dianggap sebahagian daripada BOM. Ekspansi ini termasuk:

  • Buka tingkap pelayar baru
  • Pindahkan, tutup tingkap pelayar serta mengubah saiz tingkap
  • Objek lokasi yang menyediakan perincian pentadbiran pelayar web
  • Objek screen yang menyediakan perincian resolusi skrin pengguna
  • Dukungan cookie
  • IE meluaskan BOM, menambahkan kelas ActiveXObject, yang boleh diinstansiasi objek ActiveX melalui JavaScript

Kerana tiada standar BOM yang relevan, setiap pereka browser mempunyai implementasi BOM sendiri. Ada beberapa standard yang faktual, seperti ada objek window dan objek navigasi, tetapi setiap pereka browser boleh mendefinikan properti dan metod sendiri untuk objek ini atau objek lain.

Lihat: