Javascript 如何在chrome浏览器中获得窗口调整通知

Javascript 如何在chrome浏览器中获得窗口调整通知,javascript,google-chrome,google-chrome-extension,google-chrome-devtools,Javascript,Google Chrome,Google Chrome Extension,Google Chrome Devtools,我正在为Chrome浏览器编写一个扩展,我想为窗口调整大小事件添加一个事件侦听器。我的方法正在为窗口加载事件执行,但没有为调整大小事件执行 下面是我的manifest.json文件的代码 { "name": "A browser action", "version": "1.0", "background": { "scripts": ["backgrou

我正在为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); 

您可以使用jQuery的
bind()
函数


您可以使用jQuery的
bind()
函数


background.js文件无法捕获浏览器中的调整大小事件。您需要为此插入一个。background.js文件无法在浏览器中捕获调整大小事件。您需要为此注入一个扩展。

是在其内容脚本中侦听resize的扩展的一个示例

在manifest.json中:

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

chrome.runtime.onMessage.addListener(function requested(request) {
  if (request.method === 'resize') {
    ...
  }
)};
还有一个悬而未决的问题需要实现。

是在其内容脚本中侦听resize的扩展的一个示例

在manifest.json中:

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

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

还有一个有待解决的问题。

对于这个问题的未来读者,chrome.windowsAPI提供了一个
onBoundsChanged
事件:

onBoundsChanged(自Chrome 86起)

在调整窗口大小时激发;此事件仅在提交新边界时被调度,而不用于正在进行的更改

以下是事件的使用方式:
chrome.windows.onBoundsChanged.addListener(callback())

(确保
manifest.json
文件声明了
选项卡
权限)


对于这个问题的未来读者,
chrome.windows
API提供了一个
onBoundsChanged
事件:

onBoundsChanged(自Chrome 86起)

在调整窗口大小时激发;此事件仅在提交新边界时被调度,而不用于正在进行的更改

以下是事件的使用方式:
chrome.windows.onBoundsChanged.addListener(callback())

(确保
manifest.json
文件声明了
选项卡
权限)



您是否尝试过
document.addEventListener('resize',…)
?是否尝试过在函数变量标识符中不使用
?看起来您正确地使用了它,但它增加了一个额外的东西,在您的示例中可能会出错。没有它,您的测试用例会更简单。谢谢您的建议。我尝试了这两种方法,但没有为我调用resize事件。是否尝试了
文档。addEventListener('resize',…)
?是否尝试过在函数变量标识符中不使用
?看起来您正确地使用了它,但它增加了一个额外的东西,在您的示例中可能会出错。没有它,您的测试用例会更简单。谢谢您的建议。我尝试了这两种方法,但没有得到调整大小的事件调用我。我尝试了这个,但没有帮助我。如果你能寄一些样品,我将不胜感激。谢谢!我试过了,但没有帮到我。如果你能寄一些样品,我将不胜感激。谢谢!谢谢你的建议。我修改了manifest.json文件,增加了一个字段(“content_scripts”),请参见下面的代码,尽管我没有调用事件侦听器。此外,我的加载功能消息框本身现在不出现。请告诉我哪里出了问题。{“名称”:“我的扩展名”,“版本”:“12.0.0.0”,“内容\脚本”:[{“匹配项”:[“http://*/*”],“js”:[“background.js”]}],“权限”:[“选项卡”,“http://*/*”],“manifest\版本”:2}您可以将窗口大小调整事件代码复制到单独的文件中,而不是background.js。我不能100%确定是否支持将同一个文件用于这两个目的。感谢您提供的有用信息,我只能通过使用内容脚本来实现这一点。甚至我也能够在同一个js文件中加载和调整事件侦听器的大小。再次非常感谢。以下是我的工作manifest.json文件的内容。{“name”:“Tile”,“version”:“1.2”,“manifest_version”:2,“description”:“Tile和stick窗口不重叠”,“content_脚本”:[{“js”:[“chrome-o-Tile.js”],“matches”:[”“]}],“permissions”:[“tabs”}感谢您的建议。我修改了manifest.json文件,增加了一个字段(“content_scripts”),请参见下面的代码,尽管我没有调用事件侦听器。此外,我的加载功能消息框本身现在不出现。请告诉我哪里出了问题。{“名称”:“我的扩展名”,“版本”:“12.0.0.0”,“内容\脚本”:[{“匹配项”:[“http://*/*”],“js”:[“background.js”]}],“权限”:[“选项卡”,“http://*/*”],“manifest\版本”:2}您可以将窗口大小调整事件代码复制到单独的文件中,而不是background.js。我不能100%确定是否支持将同一个文件用于这两个目的。感谢您提供的有用信息,我只能通过使用内容脚本来实现这一点。甚至我也能够在同一个js文件中加载和调整事件侦听器的大小。再次非常感谢。以下是我的工作manifest.json文件的内容。{“name”:“Tile”,“version”:“1.2”,“manifest_version”:2,“description”:“平铺和粘贴窗口不重叠”,“content_脚本”:[{“js”:[“chrome-o-Tile.js”],“matches”:[”“]}],“permissions”:[“tabs”}感谢分享这个示例。它确实有效。我能够重新调整事件的大小。是的,非常感谢您分享您的Chrome-o-Tile示例,完美回答a
Chrome。自Chrome 86(撰写本文时的开发频道)起,已添加onBoundsChanged
事件()。感谢您分享此示例。它确实有效。我可以重新调整活动的大小。是的,非常感谢您分享您的Chrome-o-Tile示例,完美回答a
Chrome.onBoun
  {
    "name": "My extension",
    ...
    "permissions": ["tabs"],
    ...
  }