1

我正在为 Chrome 浏览器编写一个扩展,我想在其中为窗口调整大小事件添加一个事件侦听器。我的方法正在为窗口加载事件执行,但没有为调整大小事件执行。

下面是我的 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

4 回答 4

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 扩展实现 chrome.windows.onResize 事件还有一个未解决的问题。

于 2012-11-06T16:04:27.353 回答
3

background.js 文件无法捕获浏览器中的调整大小事件。您需要为此注入内容脚本

于 2012-10-30T22:11:35.270 回答
0

你可以使用jQuery的bind()功能.. http://api.jquery.com/bind/

$(window).bind('resize', function () {
//do something here
});
于 2012-10-30T14:29:36.010 回答
0

对于这个问题的未来读者,chrome.windowsAPI 提供了一个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"],
    ...
  }
于 2020-08-23T01:09:47.240 回答