Web - Dart 02 (Bài trước)

Thư viện dart:js

Thư viện dart:js cung cấp các chức năng như cầu nối giữa code Dart và JavaScript của trình duyệt. Nó là cầu nối để bạn tương tác với JS. Để sử dụng nó trước tiên cần nạp thư viện này vào

import 'dart:html';
import 'dart:js';

Lúc này có một biến là context thuộc lớp JsObject nó biểu diễn đối tượng toàn cục trong JavaScript - chính là đối tượng window

Gọi hàm JavaScript

Để gọi một hàm JavaScript thông thường, sẽ sử dụng cú pháp như sau:

context.callMethod('tenhamjs', ['mảng tham số nếu có']);

Ví dụ gọi hàm JavaScript alert

context.callMethod('alert', ['Xin chào JavaScript']);
//Tương đương với alert('Xin chào JavaScript');

Lấy biến, đối tượng của JavaScript

Nếu phía JavaScript có một biến, đối tượng thì từ Dart có thể lấy một đối tượng JsObject, mà tham chiếu đến biến, đối tượng của JavaScript bằng cách:

JsObject objs = JsObject.fromBrowserObject(context['tên_đối_tượng_js']);

Có được đối tượng rồi có thể gọi các phương thức mà đối tượng đó có

JsObject objs = JsObject.fromBrowserObject('tên_đối_tượng_js');
objs.callMethod('tenhamjs', ['mảng tham số nếu có']);

Ví dụ - trong HTML có đoạn JS sau:

<script>
  var testob = {};
  testob.myfunction = function(x) {
      alert(x);
  };
</script>

Nghĩa là có đối tượng testob, có phương thức myfunction trong đối tượng đó. Vậy trong Dart tham chiếu đến tượng này và gọi hàm như sau:

dynamic testob = JsObject.fromBrowserObject(context['testob']);
testob.callMethod('myfunction', ['Hello JavaScript']);

Khởi tạo đối tượng JavaScript từ Dart

Giả tử muốn khởi tạo đối tượng từ Object

JsObject ob = JsObject(context['Object'], ['mảng_tham_số_nếu_có']);

Ví dụ bạn tích hợp thư viện jQuery vào trang, giờ từ Dart muốn chọn tất cả các phần tử p, sau đó thực hiện phương thức fadeOut để mờ dần trong 5s, sau khi hoàn thành lại gọi fadeIn để hiện thị lại

//Khởi tạo jQuery bằng cách chọn các phần tử p
JsObject jQuery = JsObject(context['jQuery'], ['p']);

//Thực hiện fadeOut và fadeIn
jQuery.callMethod('fadeOut', [5000, (){jQuery.callMethod('fadeIn');}]);


Đăng ký nhận bài viết mới
Web - Dart 02 (Bài trước)