我正在为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);
答案 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"],
...
}