Lắng nghe sự kiện DOM

Một phần của tài liệu XÂY DỰNG ỨNG DỤNG EXTENSIONS TRÊN MOZILA FIREFOX (Trang 34 - 37)

7. Sự kiện và kịch bản trong XUL

7.3Lắng nghe sự kiện DOM

Cách thứ hai để thêm vào một điều khiển sự kiện là gọi một phương thức addEventListener của phần tử. cái này cho phép bạn gán một lắng nghe sự kiện động và lắng nge sự kiện trong pha bắt giữ.

Cú pháp tương tự như său:

<button id="okbutton" label="OK"/> <script>

function buttonPressed(event){ alert('Button was pressed!'); }

var button = document.getElementById("okbutton"); button.addEventListener('command', buttonPressed, true); </script>

getElementById(), hàm trả về phần tử với id của nó, trong này là button. Hàm addEventListener() được gọi để thêm vào một sự kiện bắt giữ. Đối sốđầu tiên là tên của sự kiên mà nó lắng nghe, đối số thứ hai là sự kiện lắng nghe sẽđược gọi kkhi sự kiện xảy ra. Cuối cùng, đối số cuối cùng đặt là “true” chỉ ra đang lắng nghe sự kiện bắt giữ, bạn cũng có thể lắng nghe sự kiện nổi bọt bằng cách cài đặt đối số cuối cùng là “false”.

8. Document Object Model(DOM) vi XUL

Mô hình đối tượng tài liệu Document Object Model(DOM) được sử dụng để lưu trữ cây của nhánh XUL. Khi một XUL được nạp, các thẻđược phân tích và chuyển đổi vào một cấu trúc tài liệu phân cấp các nhánh, với mỗi thẻ và các khối văn bản. cấu trúc DOM có thể khảo sát và sửa đổi sử dụng phương thức khác nhău được cung cấp cho mục đích này. Những phần tử XUL đặc biệt cũng cung cấp những hàm bổ sung mà có thểđược sử dụng. Mỗi file XUL được tải sẽ có tài liệu của chính mình, được trình bày trong một cửa sổ

hoặc khung. Tuy nhiên, không chỉ có một tài liệu kết hợp với cửa sổ window tại một thời

điểm, bạn có thể nạp thêm những tài liệu bằng cách sử dụng các hàm khác nhău.

Trong Mozilla, DOM có thể truy cập và vận dụng thông qua JavaScript, nhiều đối tượng DOM có những hàm mà có thể truy cập trong kịch bản. Một chú ý quan trọng là DOM là một API có thể truy cập bởi javascipt, với javascipt chỉ là một ngôn ngữ kịch bản có thể

Trong javascipt, luôn có một đối tượng chung có sẵn. Bạn có thể tham chiếu tới thuộc tính và phương thức của đối tượng chung bỏ qua cần phải phân loại chúng với một đối tượng. ví dụ, nếu đối tượng chung có một thuộc tính “name”, thì bạn có thể thay đổi tên của nó với lệh “name= 7”, mà bạn không cần chỉ rõ bất kỳđối tương nào được sử dụng. trong nội dung trình duyệt, cửa sổ window là đối tượng chung, và điều này là tương tự

cho XUL. Tự nhiên, đối tượn chung này sẽ khác với mỗi của sổ. mỗi khung sẽ có một đối tượng cửa sổ riêng biệt.

Cửa sổ thường được tham chiếu tới sử dụng thuộc tính cửa sổ “window property”. Đôi khi cái này khiến việc làm trở lên sáng sủa trong giới hạn của phương thức mà bạn tham chiếu tới. ví dụ, với hai kiểu dòng lệnh său cho phép mở một cửa sổ mới:

window.open("test.xul","_new"); open("test.xul","_new");

khi bạn khai báo một hàm hoặc một biến tại phần đầu của một kịch bản, mà bên ngoài là hàm khác, bạn thật sự đang khai báo một thuộc tính của đối tượng chung. Trong XUL mỗi hàm mà bạn khai báo sẽ được đặt như một thuộc tính của đối tượng cửa sổ. ví dụ, dòng lệnh său sẽ hiển thị văn bản “messenger” hai lần: function getText(){ return "Message"; } alert(getText()); alert(window.getText());

như vậy, nếu bạn muốn truy cập những biến hoặc gọi một hàm khai báo trong một nguyên bản sử dụng bởi cửa sổ khác, thì bạn chỉ cần truy cập nó sử dụng đối tượng cửa sổ khác. Ví dụ, nếu ta kết hợp hai ví dụ cuối cùng vào cùng hàng, thì chúng ta có thể gọi hàm getText() từ bên trong cửa sổ khác(ví dụ cửa sổ test.xul). để làm điều này chúng ta có thể làm như său:

alert(window.opener.getText());

mỗi cửa sổ có một thuộc tính opener cài mà giữ đối tượng của cửa sổ mở cửa sổ này. Trong ví dụ này, chúng ta khôi phục cửa sổ và gọi người mở mà hàm getText() khai báo trong một kịch bản sử dụng nó.

Đối tượng cửa sổ không được định nghĩa bất cứ đặc tả DOM nào, nhưng trong mozilla vào một vài thời điểm cân nhắc sử dụng “DOM level 0”, một tên gọi được sử dụng bởi một số nhà phát triển tham chiếu tới DOM giống hàm trước khi họđưa vào những chỉ thị. Tài liệu thực tế trình bày trong một cửa sổ có thểđược tham chiếu sử dụng thuộc tính tài liệu “document” của cửa sổ. nó là thuộc tính phổ biến nhất tham chiếu đến cửa sổ, và có thể sử dụng mà không cần tham chiếu đến thuộc tính “window”.

Mozilla cung cấp một vài đối tượng tài liệu khác nhău phụ thuộc vào loại tài liệu. Ba loại tài liệu chính là HTMDocument, XMLDocument, và XULDocument, cho HTML, XML và những tài liệu XUL tương ứng. Ba kiểu tài liệu này khá tương tự nhău, chúng hoàn toàn chia sẻ cùng sự thi hành cơ sở. Tuy nhiên có một vài hàm đặc biệt cho từng loại tài liệu.

Một phần của tài liệu XÂY DỰNG ỨNG DỤNG EXTENSIONS TRÊN MOZILA FIREFOX (Trang 34 - 37)