Google chrome extension 谷歌浏览器扩展:弹出窗口处理

Google chrome extension 谷歌浏览器扩展:弹出窗口处理,google-chrome-extension,Google Chrome Extension,我的分机应在以下条件下打开一个弹出窗口(普通弹出窗口,而不是默认的分机弹出窗口): 此刻只能打开一扇窗户 我想在localStorage中保存窗口大小和位置,并在下次打开时恢复它们 如何做到这一点 我试过: chrome.browserAction.onClicked.addListener(function() { // 1. In this case, variable win is a window object. But it's empty. There // is no p

我的分机应在以下条件下打开一个弹出窗口(普通弹出窗口,而不是默认的分机弹出窗口):

  • 此刻只能打开一扇窗户
  • 我想在localStorage中保存窗口大小和位置,并在下次打开时恢复它们
  • 如何做到这一点

    我试过:

    chrome.browserAction.onClicked.addListener(function() {
    
      // 1. In this case, variable win is a window object. But it's empty. There
      // is no properties/methods to operate with.
      var win = window.open('http://example.com','windowname');
    
      chrome.windows.create({
        'url': 'http://example.com',
        'type': 'popup'
      }, function(win) {
        // 2. In this case, variable win has some properties, but they are static
        // and won't change on window resize/close.
      });
    });
    

    有什么想法吗?

    我想,你可以用
    window.open()
    来实现这一点

    1-此时只能打开一个窗口,

    如果您提供相同的
    名称
    window.open()

    • 如果没有任何同名的现有窗口,它将创建一个新窗口
    • 否则,如果有一个打开的窗口具有相同的名称,它将只是刷新它
    2-我想在localStorage中保存窗口大小和位置,并在下次打开时恢复它们。

    是的,您可以通过附加
    window.onresize
    event

    这是一个基本的例子

    chrome.browserAction.onClicked.addListener(function() {
      var wOpt = getWindowDefaultOptions(); // options from localStorage
      var win = window.open("http://www.example.com", "myscriptpopup", "width="+wOpt.width+", height="+wOpt.height+", top="+wOpt.top+", left="+wOpt.left);
      win.onresize = function() {
          var newOptions = {};
          newOptions.width = this.innerWidth;
          newOptions.height = this.innerHeight;
          newOptions.top = this.screenY;
          newOptions.left = this.screenX;
          setWindowDefaultOptions(newOptions); //save Options to localStorage
      }
    });
    
    //Default Options For Window
    var winOptions = {
          "width" : "200",
          "height" : "100",
          "top" : "50",
          "left" : "50"
    };
    

    打开的窗户有什么特别之处?扩展如何知道“窗口”是否已打开?如果它基于URL,则是一个示例。由于某些原因,
    win.onresize()
    在窗口打开时仅被调用两次。