2012-04-30 45 views
18

Nếu bạn ở đây để cho tôi biết lý do tại sao thay đổi kích thước cửa sổ là một ý tưởng tồi, đáng ghét và tương đương với trang web của móng trên bảng phấn , thì hãy đi đi. Tôi đang tìm kiếm một giải pháp không phải là một bài giảng. Điều này chỉ được sử dụng trong cài đặt mạng nội bộ. Cụ thể, để gỡ lỗi và sau đó giới thiệu các trang web được thiết kế có trách nhiệm (các trang web sử dụng truy vấn phương tiện để mở rộng quy mô) cho khách hàng để xem xét qua cuộc họp trên web. Tôi muốn giới thiệu các điểm phá vỡ cụ thể. Điều này không được tung ra trên công chúng.Làm thế nào để bạn thay đổi kích thước cửa sổ trình duyệt sao cho chiều rộng bên trong là một giá trị cụ thể

Những điều tôi đã biết:

  1. Bạn chỉ có thể thay đổi kích thước cửa sổ và vị trí mở thông qua javascript, không phải bởi người sử dụng. (trừ khi họ điều chỉnh cài đặt bảo mật, tùy chọn này không phải là tùy chọn)
  2. Khi bạn sử dụng phương thức resizeTo() của cửa sổ, trình duyệt được thay đổi kích thước thành thứ nguyên được chỉ định. Chế độ xem thường nhỏ hơn đáng kể (trung bình từ 30 đến 100 pixel) Tuy nhiên, tôi muốn đổi kích thước chế độ xem thành kích thước cụ thể.
  3. Trình duyệt, phiên bản trình duyệt, nền tảng, một số plugin và các thanh công cụ và menu khác nhau sẽ thay đổi kích thước của chế độ xem. Nhiều menu và thanh công cụ hơn có nghĩa là chiều rộng khung nhìn nhỏ hơn.

Giải pháp:

  1. Tìm chiều rộng và chiều cao của trình duyệt
  2. Tìm chiều rộng của khung nhìn và chiều cao
  3. Xác định sự khác biệt giữa hai người.
  4. Điều chỉnh các giá trị trong cuộc gọi của tôi để resizeTo() phù hợp

Tôi cần giúp đỡ với bước 1. Tất cả mọi thứ khác tôi có thể hình dung ra. Tôi cũng đang sử dụng jQuery và trình hiện đại hóa nếu điều đó có ích.

Cảm ơn trước sự giúp đỡ của bạn!

+1

http://www.quirksmode.org/dom/w3c_cssom.html – AlienWebguy

+0

Vâng, bạn đã đến. – mrbinky3000

+0

Chỉ vấn đề bạn sẽ có với bước 4 là đảm bảo các trình duyệt đã bật cài đặt để mở cửa sổ bật lên thành cửa sổ mới và bạn có thể thay đổi kích thước cửa sổ đó. – epascarello

Trả lời

17

Các bài là khá cũ, nhưng đây là một thực hiện cụ thể cho độc giả trong tương lai:

var resizeViewPort = function(width, height) { 
    if (window.outerWidth) { 
     window.resizeTo(
      width + (window.outerWidth - window.innerWidth), 
      height + (window.outerHeight - window.innerHeight) 
     ); 
    } else { 
     window.resizeTo(500, 500); 
     window.resizeTo(
      width + (500 - document.body.offsetWidth), 
      height + (500 - document.body.offsetHeight) 
     ); 
    } 
}; 

Và nếu bạn muốn lấy cuộn vào tài khoản:

var resizeViewPort = function(width, height) { 
    var tmp = document.documentElement.style.overflow; 
    document.documentElement.style.overflow = "scroll"; 

    if (window.outerWidth) { 
     window.resizeTo(
      width + (window.outerWidth - document.documentElement.clientWidth), 
      height + (window.outerHeight - document.documentElement.clientHeight) 
     ); 
    } else { 
     window.resizeTo(500, 500); 
     window.resizeTo(
      width + (500 - document.documentElement.clientWidth), 
      height + (500 - document.documentElement.clientHeight) 
     ); 
    } 

    document.documentElement.style.overflow = tmp; 
}; 

Hãy vui vẻ ...

+2

Xác nhận tác phẩm này với IE 11, FF và Chrome (tất cả trên Windows) – mlhDev

+2

Giải pháp tuyệt vời, tuy nhiên tôi đã sử dụng nó trong sự kiện window.resize. Cách đầu tiên không hoạt động tốt trong trường hợp đó trong ít nhất hai phiên bản Safari dành cho máy tính để bàn: cửa sổ tiếp tục thay đổi kích thước và thay đổi kích thước, nhiều lần, cho đến khi nó đạt kích thước phù hợp hoặc bị kẹt trong vòng lặp thay đổi kích thước. đối với tôi, là tính toán 'window.outerWidth - window.innerWidth' một lần, khi DOM được nạp và sử dụng các giá trị đó mỗi lần thay vì tính toán chúng theo từng thay đổi kích thước. Tôi đã làm điều tương tự cho chiều cao. – toon81

Các vấn đề liên quan