Bài 30: BOM - Window trong Javascript

Đây là bài đầu tiên trong loạt bài giới thiệu về DOM trong Javascript và trong bài này chúng ta sẽ tìm hiểu đến đối tượng Window. Đối tượng Window được hỗ trợ hầu hết các trình duyệt và mỗi tab trình duyệt sẽ có một đối tượng Window riêng và không liên quan tới nhau.

Đối tượng Window có rất nhiều thuộc tính và phương thức riêng. Ví dụ đối tượng document là một thuộc tính của window (window.document), vì vậy nên ta có thể ví Window là một đối tượng toàn cục và ở đâu trong website cũng có thể sử dụng được.

Bây giờ chúng ta sẽ tìm hiểu các thuộc tính và phương thức của đối tượng BOM Window nhé.

1. Xác định kích thước của trình duyệt

Để lấy kích thước chiều cao và chiều rộng của trình duyệt thì chúng ta sử dụng đối tượng window, tuy nhiên với mỗi trình duyệt thì có những cách lấy khác nhau.

Đối với Internet Explorer, Chrome, Firefox, Opera, và Safari thì cú pháp như sau:

// lấy chiều cao
var heightBrowser = window.innerHeight;

// lấy chiều rộng
var widthBrowser = window.innerWidth;

Đối với Internet Explorer các version 5,6,7,8 thì cú pháp như sau:

// Lấy chiều cao
var height = document.documentElement.clientHeight;
// hoặc
var height = document.body.clientHeight;

// Lấy chiều rộng
var width = document.documentElement.clientWidth;
// hoặc
var width = document.body.clientWidth;

Việc tương thích với các trình duyệt quá rắc rối phải không nào? Vậy có cách nào giải quyết vấn đề này không? Câu trả lời là có bằng cách sử dụng một mẹo nhỏ như sau:

var width = window.innerWidth
        || document.documentElement.clientWidth
        || document.body.clientWidth;

var height = window.innerHeight
        || document.documentElement.clientHeight
        || document.body.clientHeight;

Hai dấu || có ý nghĩa rằng nếu vế trái không thực hiện được thì nó sẽ lấy vế phải và cứ như vậy cho tới khi lấy được thì dừng.

Ví dụ: XEM DEMO

var width = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

var height = window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;

document.write("Trình duyệt có chiều rộng là: " + width + "<br/>");
document.write("Trình duyệt có chiều cao là: " + height + "<br/>");

2. Thao tác với một cửa sổ window

Đối tượng window cung cấp một số phương thức giúp thao tác với trình duyệt dễ dàng hơn.

Mở một cưa sổ với lệnh window.open()

Cú pháp: window.open(url, name, options)

Trong đó:

  • url : là đường dẫn website bạn muốn mở
  • name: là tên bạn đặt cho cửa sổ này
  • options: là một chuỗi các thông số được cách nhau bởi dấu phẩy, sau đây là các thông số thông dụng:
    • height=pixels : chiều cao của cửa sổ
    • width=pixels: chiều rộng của cửa sổ
    • top=pixels: vị trí hiển thị cửa sổ so với lề trên
    • left=pixels: vị trí hiển thị cửa sổ so với lề trái
    • menubar=yes|no|1|0: có hiển thị thanh menu hay không?
    • resizable=yes|no|1|0: có hiển thị biểu tượng resize cửa sổ hay không?
    • scrollbars=yes|no|1|0: có hiển thị thanh cuộn hay không?
    • status=yes|no|1|0: có hiển thị thanh trạng thái hay không?
    • titlebar=yes|no|1|0: có hiển thị titlebar hay không?
    • toolbar=yes|no|1|0: có hiển thị toolbar hay không?
    • fullscreen=yes|no|1|0: có hiển thị biểu tượng fullscreen hay không?

Ví dụ: XEM DEMO

<html>
    <body>
      <script language="javascript">
        
        var windowChild = null;
        
        function openWindow()
        {
          windowChild = window.open('http://freetuts.net', "windowChild", "width=500, height=500");
        	return false;
        }
        
      </script>
      <a href="#" onclick="return openWindow()">Open</a>
    </body>
</html>
</script>

Đóng một cửa số với lệnh window.close()

Sau khi mở cửa sổ thì để đóng cửa sổ đó chúng ta sử dụng lệnh windowObj.close(), trong đó windowObj là cửa sổ mà ta sử dụng lệnh window.open() tạo ra.

Ví dụ: XEM DEMO

<html>
    <body>
      <script language="javascript">
        
        var windowChild = null;
        
        function openWindow()
        {
          	windowChild = window.open('http://freetuts.net', "windowChild", "width=500, height=500");
        	return false;
        }
        
        function closeWindow()
        {
          	windowChild.close()
        	return false;
        }
      </script>
      <a href="#" onclick="return openWindow()">Open</a>
      <a href="#" onclick="return closeWindow()">Close</a>
    </body>
</html>

Di chuyển cửa sổ với lệnh window.moveTo()

Sau khi mở một cửa sổ nếu muốn di chuyển nó thì ta dùng lệnh windowObj.moveTo(top, left), trong đó:

  • top: là số pixels so với lề trên
  • left: là số pixels so với lề trái

Ví dụ:

<html>
    <body>
      <script language="javascript">
        
        var windowChild = null;
        
        function openWindow()
        {
          	windowChild = window.open('http://freetuts.net', "windowChild", "width=500, height=500");
        	return false;
        }
        
        function moveWindow()
        {
          	windowChild.moveTo(500, 100);
          	windowChild.focus();
        	return false;
        }
      </script>
      <a href="#" onclick="return openWindow()">Open</a>
      <a href="#" onclick="return moveWindow()">Move</a>
    </body>
</html>

Resize cửa sổ với lệnh window.resizeTo()

Lúc mở cửa sổ bạn sẽ thiết lập heightwith cho window, tuy nhiên nếu sau khi mở bạn muốn thay đổi thì sử dụng hàm windowObj.resizeTo(width, height), trong đó:

  • width: chiều rộng của cửa sổ
  • height: chiều cao của cửa sổ

Ví dụ:

<html>
    <body>
      <script language="javascript">
        
        var windowChild = null;
        
        function openWindow()
        {
          	windowChild = window.open('http://freetuts.net', "windowChild", "width=500, height=500");
        	return false;
        }
        
        function resizeWindow()
        {
          	windowChild.resizeTo(1000, 1000);
          	windowChild.focus();
        	return false;
        }
      </script>
      <a href="#" onclick="return openWindow()">Open</a>
      <a href="#" onclick="return resizeWindow()">Resize</a>
    </body>
</html>

3. Lời kết

Trong các ví dụ ở phần moveTo()resizeTo() mình không có demo bởi vì trình duyệt đã chặn hai phương thức này nên bạn hãy copy code vào file của bạn rồi chạy nhé.

Vẫn còn một số phương thức nữa nhưng bài này mình chỉ đề cập tới bấy nhiêu là quá đủ cho bạn học rồi, nếu cần thiết thì bạn có thể sử dụng google để tra cứu thêm. Và việc sử dụng đối tượng window để mở các cửa sổ không còn thông dụng nữa mà thay vào đó người ta sử dụng một kỹ thuật khác đó là xây dựng Popup nhìn chuyên nghiệp và đẹp hơn.

Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website lấy nội dung mà không để nguồn hoặc copy bài với số lượng lớn.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Group Facebook để được hỗ trợ nhanh nhất.