如何在Chrome浏览器中调整窗口大小的通知

时间:2012-10-30 14:25:37

标签: google-chrome google-chrome-extension google-chrome-devtools

我正在为chrome浏览器编写扩展程序,我想为window resize事件添加事件监听器。我正在为窗口加载事件执行我的方法,但没有获取resize事件。

下面提到的是manifest.json文件的代码

{
  "name": "A browser action",
  "version": "1.0",
  "background": { "scripts": ["background.js"] },
  "permissions": [
    "tabs", "http://*/*"
  ],
  "manifest_version": 2
}

下面提到的是我的background.js文件的代码。

var myExtension = 
{  
    init: function()
    {  
      // The event can be DOMContentLoaded, pageshow, pagehide, load or   unload.           
      alert("ASHSIH");
      window.addEventListener("resize", this.onmyPageResize, false);
    },
    onmyPageResize: function(aEvent) 
    {  
      alert("RESIZED");

    }  
}


window.addEventListener("load", function load(event){  
  window.removeEventListener("load", load, false); //remove listener, no longer   needed  
  myExtension.init();    
},false); 

4 个答案:

答案 0 :(得分:5)

Chrome-o-Tile是在其内容脚本中侦听调整大小的扩展的一个示例。

在manifest.json中:

"content_scripts": [
  {
    "js": ["contentscript.js"],
    "run_at": "document_start",
    "matches": [
      "<all_urls>"
    ]
  }
],

在contentscript.js中:

'use strict';

var timeoutId = 0;

window.addEventListener('resize', function() {
  if (timeoutId) {
    clearTimeout(timeoutId);
  }
  timeoutId = setTimeout(function() {
    chrome.runtime.sendMessage({method: 'resize'});
    timeoutId = 0;
  }, 100);
}, false);

在background.js中:

chrome.runtime.onMessage.addListener(function requested(request) {
  if (request.method === 'resize') {
    ...
  }
)};

实施chrome.windows.onResize event for Chrome extensions还有一个未解决的问题。

答案 1 :(得分:2)

background.js文件无法捕获浏览器中的resize事件。您需要为此注入content script

答案 2 :(得分:0)

您可以使用jQuery的bind()函数.. http://api.jquery.com/bind/

$(window).bind('resize', function () {
//do something here
});

答案 3 :(得分:0)

对于以后的读者,chrome.windows API提供了一个onBoundsChanged事件:

onBoundsChanged(自Chrome 86开始)

在调整窗口大小时触发;仅在提交新界限时才调度此事件,而不会针对正在进行的更改进行调度。

https://developer.chrome.com/extensions/windows#event-onBoundsChanged

这是如何使用事件的方法:chrome.windows.onBoundsChanged.addListener( callback() )

(确保manifest.json文件声明了tabs权限)

  {
    "name": "My extension",
    ...
    "permissions": ["tabs"],
    ...
  }