2012-05-16 45 views
7

Để bắt đầu ... Tôi không có ý định nham hiểm của việc đưa người dùng đến cửa sổ bật lên hoặc bất kỳ thứ gì như thế. Tôi chỉ muốn ngăn người dùng thay đổi kích thước cửa sổ trình duyệt của trang web mà họ đã điều hướng (nghĩa là tôi không có quyền truy cập/không muốn sử dụng window.open();). Tôi đã nghiên cứu điều này khá lâu và dường như không thể tìm ra câu trả lời đơn giản.Vô hiệu hoá cửa sổ trình duyệt Thay đổi kích thước

Tôi cảm thấy như mình đã đi đúng hướng với một cái gì đó dọc theo dòng:

$(window).resize(function() { 
    var wWidth = window.width, 
    wHeight = window.height; 
    window.resizeBy(wWidth, wHeight); 
}); 

... vô ích. Tôi phải tưởng tượng điều này là có thể. Là nó? Nếu vậy, tôi chắc chắn sẽ đánh giá cao sự giúp đỡ.

Cảm ơn

+5

Tôi phải hỏi tại sao? Cửa sổ trình duyệt không được cho là bị hạn chế. Nếu người dùng cuối muốn di chuyển sang màn hình khác và không thể thay đổi kích thước màn hình, điều này có thể gây ra các vấn đề tiềm ẩn cho người dùng cuối. Ví dụ là hai màn hình có độ phân giải khác nhau. –

+4

Bạn nên * không bao giờ * cố gắng thay đổi hành vi của chức năng cấp hệ điều hành lõi (ví dụ, ngăn chặn thay đổi kích thước của cửa sổ). *Không bao giờ*. –

+1

@JohnHartsock - Có thể anh ấy đang tạo tiện ích bổ sung cho trình duyệt hoặc plugin? –

Trả lời

18

Trước tiên, bạn có thể xác định kích thước xác định.

var size = [window.width,window.height]; //public variable 

Sau đó làm điều này:

$(window).resize(function(){ 
    window.resizeTo(size[0],size[1]); 
}); 

Demo: http://jsfiddle.net/DerekL/xeway917/


Q: Sẽ không này gây ra một vòng lặp vô hạn của thay đổi kích thước? - user1147171

Câu hỏi hay. Điều này sẽ không gây ra một vòng lặp vô hạn của thay đổi kích thước. Các W3C specification tiểu bang rằng resize sự kiện phải được gửi đi chỉ khi xem tài liệu đã được thay đổi kích cỡ. Khi chức năng resizeTo cố gắng thực hiện lần thứ hai, cửa sổ sẽ có cùng kích thước chính xác như nó vừa đặt và do đó trình duyệt sẽ không kích hoạt sự kiện thay đổi kích thước vì kích thước không bị thay đổi.

+0

Cảm ơn @Derek. Điều này chắc chắn là theo những gì tôi nghĩ. Tôi đã cắm vào đề xuất của bạn và tôi vẫn chưa thành công. Tuy nhiên, chỉ bằng cách nhìn vào những gì bạn đã viết, tôi có thể thấy rằng điều này sẽ làm việc. Điều này vẫn còn hữu ích với tôi bởi vì nó xác nhận rằng tôi phải làm điều gì sai trái ở một nơi khác ... đó là lý do tại sao tôi sẽ đánh dấu điều này là 'trả lời'. Cám ơn. –

+0

@tchnchn - Nó sẽ hoạt động, bởi vì tôi đang sử dụng nó trong cửa sổ bật lên của tiện ích mở rộng của tôi. ;) –

+1

Đó là một "tính năng" rất khó chịu. Nếu nó hoạt động (và nó sẽ không, cho OP) người dùng bị khóa vào bất kỳ kích thước cửa sổ ban đầu mở ra, mà có thể hữu ích, nhưng có lẽ là không. – RobG

0

tôi cần phải làm hôm nay (đối với một bảng điều khiển được mở bởi một phần mở rộng chrome) nhưng tôi cần thiết để cho phép người dùng thay đổi chiều cao cửa sổ, nhưng ngăn cản họ thay đổi độ rộng cửa sổ

@ giải pháp của Derek đã cho tôi gần như có nhưng tôi đã phải tinh chỉnh nó để cho phép thay đổi chiều cao và vì lý do đó, một vòng lặp thay đổi kích thước vô tận là có thể vì vậy tôi cũng cần phải ngăn chặn điều đó. Đây là phiên bản của câu trả lời của Dereck đang hoạt động khá tốt đối với tôi:

var couponWindow = { 
    width: $(window).width(), 
    height: $(window).height(), 
    resizing: false 
}; 
var $w=$(window); 
$w.resize(function() { 
    if ($w.width() != couponWindow.width && !couponWindow.resizing) { 
    couponWindow.resizing = true; 
    window.resizeTo(couponWindow.width, $w.height()); 
    } 
    couponWindow.resizing = false; 
}); 
Các vấn đề liên quan