2011-03-17 42 views
6

Tôi đang sử dụng mã sau để mở cửa sổ bật lên trong tiện ích mở rộng của Google Chrome, một câu hỏi của tôi là làm cách nào để cửa sổ bật lên mở ở chính giữa màn hình người dùng?Cửa sổ bật lên, Màn hình trung tâm

<script> 
    chrome.browserAction.onClicked.addListener(function() { 
    var left = (screen.width/2)-(w/2); 
    var top = (screen.height/2)-(h/2); 
    chrome.windows.create({'url': 'redirect.html', 'type': 'popup', 'width': 440, 'height': 220, 'left': '+left+', 'top': '+top+', } , function(window) { 
    }); 
}); 
    </script> 

Tôi cũng đã thử điều này, điều này dẫn đến không có may mắn như vậy.

<script> 
    chrome.browserAction.onClicked.addListener(function() { 
    chrome.windows.create({'url': 'redirect.html', 'type': 'popup', 'width': 440, 'height': 220, 'left': (screen.width/2)-(w/2), 'top': (screen.height/2)-(h/2), } , function(window) { 
    }); 
}); 
    </script> 
+0

Một vấn đề tôi thấy: w và h là gì? Chúng không được xác định trong một trong hai đoạn mã –

+0

@Matt S Tôi nghĩ chúng được xác định bởi: ** 'width': 440, 'height': 220, ** – itsdaniel0

Trả lời

13

Khi bạn thấy cấu trúc var obj = {property: value} trong JS nó là một đối tượng tạo. Trong mã của bạn, bạn đang cố gắng truyền một đối tượng có chứa các thuộc tính cửa sổ đến hàm chrome.windows.create().

mã đúng nên là:

chrome.browserAction.onClicked.addListener(function() { 
    var w = 440; 
    var h = 220; 
    var left = (screen.width/2)-(w/2); 
    var top = (screen.height/2)-(h/2); 

    chrome.windows.create({'url': 'redirect.html', 'type': 'popup', 'width': w, 'height': h, 'left': left, 'top': top} , function(window) { 
    }); 
}); 
+0

Tôi thành thật không thể cảm ơn đủ! Cảm ơn bạn – itsdaniel0

+0

@ itsdaniel0 Bạn được hoan nghênh :) – serg

+1

chrome.windows.create mong đợi 'trên cùng' và 'trái' là số nguyên, do đó hãy đảm bảo Math.round() trước khi truyền tham số. – holmberd

1

Là một phụ lục cho câu trả lời này, nếu bạn muốn lấy kích thước cửa sổ bật lên từ localStorage - được lưu lại dưới dạng chuỗi - điều này sẽ chuyển đổi các biến vào số nguyên cần thiết để cửa sổ bật lên hoạt động.

var w = parseInt(localStorage.getItem('key')); 
var h = parseInt(localStorage.getItem('key')); 
1

Nếu bạn muốn định tâm cũng làm việc với màn hình kép, bạn sẽ cần phải lấy đối tượng cửa sổ hiện tại từ tiện ích mở rộng và căn giữa cửa sổ bật lên so với cửa sổ đó. Cũng giống như vậy:

chrome.browserAction.onClicked.addListener(function() { 
    chrome.windows.getCurrent(function(win) { 
     var width = 440; 
     var height = 220; 
     var left = ((screen.width/2) - (width/2)) + win.left; 
     var top = ((screen.height/2) - (height/2)) + win.top; 

     chrome.windows.create({ 
      url: 'redirect.html', 
      width: width, 
      height: height, 
      top: Math.round(top), 
      left: Math.round(left), 
      type: 'popup' 
     }); 
    }); 
    }); 

chrome.windows.create hy vọng một số nguyên cho topleft, vì vậy nó được khuyến khích để quấn những giá trị trong Math.round.

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