如何在JavaScript中附加窗口调整大小事件侦听器?

Sup*_*tar 27 javascript plugins

我正在制作一个JS/PHP插件用于发行.我希望它像这样容易安装:

<HTML>
<HEAD>
<TITLE>Testing my Plugin</TITLE>
<?php
  include 'path/to/myPlugin.php';
  echo getMyPluginHeadContent();
?>
</HEAD>
<BODY>
<?php
  echo getMyPluginContent("Arguments will go here");
?>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)

但是,我希望这个插件附加一个窗口调整大小监听器而不覆盖window.onresize,以防有任何其他脚本也需要使用该方法.是否有任何javascript命令document.addEventListener("resize", myResizeMethod, true);我知道不是这样,因为那不起作用,而且MDN和W3C对于所采用的参数非常模糊addEventListener.

我不想要一个答案告诉我使用window.onresize = myResizeMethod<BODY ONRESIZE="myResizeMethod">,因为这些不是插件友好的.

Kyl*_*yle 60

由于您尝试在窗口调整大小时调用此函数,因此您需要将函数绑定到窗口而不是文档.要支持小于9的IE版本,您需要使用attachEvent.请注意,attachEvent您需要指定on关键字.这是一个例子:

if(window.attachEvent) {
    window.attachEvent('onresize', function() {
        alert('attachEvent - resize');
    });
}
else if(window.addEventListener) {
    window.addEventListener('resize', function() {
        console.log('addEventListener - resize');
    }, true);
}
else {
    //The browser does not support Javascript event binding
}
Run Code Online (Sandbox Code Playgroud)

同样,您可以以相同的方式删除事件

if(window.detachEvent) {
    window.detachEvent('onresize', theFunction);
}
else if(window.removeEventListener) {
    window.removeEventListener('resize', theFunction);
}
else {
    //The browser does not support Javascript event binding
}
Run Code Online (Sandbox Code Playgroud)


Den*_*ret 23

您不会调整文档的大小,只能调整窗口大小.这有效:

window.addEventListener("resize", function(){console.log('resize!')}, true);
Run Code Online (Sandbox Code Playgroud)

  • 作为对此的补充,您将希望对IE <9的版本使用`attachEvent`. (2认同)